<?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>91052</bug_id>
          
          <creation_ts>2012-07-11 23:07:09 -0700</creation_ts>
          <short_desc>JSC: LLInt should auto-generate our cross-platform C++ interpreter</short_desc>
          <delta_ts>2012-09-10 15:37:06 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>667428</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-11 23:07:09 -0700</bug_when>
    <thetext>This will reduce the permutations of execution engines that we need to maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667430</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-11 23:08:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/11721515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675087</commentid>
    <comment_count>2</comment_count>
      <attachid>153623</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-20 16:54:29 -0700</bug_when>
    <thetext>Created attachment 153623
work in progress1

Archiving work in progress.  There&apos;s lots of ugly code, and temporary edits while I&apos;m still figuring things out.  Will clean up and refactor when things get closer to the final form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675206</commentid>
    <comment_count>3</comment_count>
      <attachid>153659</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-07-21 01:18:39 -0700</bug_when>
    <thetext>Created attachment 153659
work in progress 2: added support for switch statement style dispatcher in C loop + some clean up.

Builds with ARCHS=i386 but still crashes.  x86_64 won&apos;t build yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687040</commentid>
    <comment_count>4</comment_count>
      <attachid>156435</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-03 12:41:08 -0700</bug_when>
    <thetext>Created attachment 156435
Work in progress 3: the 32bit version now runs and passes the JSC tests, v8 bench, and sunspider.  64bit version still needs to be worked on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691463</commentid>
    <comment_count>5</comment_count>
      <attachid>157459</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-09 08:58:18 -0700</bug_when>
    <thetext>Created attachment 157459
Work in progress 4: added 64-bit support and some clean up.  Passes JSC tests, v8 bench, and sunspider.  On to layout tests next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694076</commentid>
    <comment_count>6</comment_count>
      <attachid>157459</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-13 14:17:15 -0700</bug_when>
    <thetext>Comment on attachment 157459
Work in progress 4: added 64-bit support and some clean up.  Passes JSC tests, v8 bench, and sunspider.  On to layout tests next.

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

Below are some comments so far.

&gt; Source/JavaScriptCore/interpreter/VMInspector.h:11
&gt; +class VMInspector {

I like this, but would prefer a VMInspector namespace over a class - unless you plan to make it instantiable, which doesn&apos;t seem to be the case..

&gt; Source/JavaScriptCore/jit/JITExceptions.cpp:82
&gt; +#if ENABLE(LLINT_C_LOOP)
&gt; +        catchRoutine = reinterpret_cast&lt;Instruction*&gt;(catchPCForInterpreter-&gt;u.opcode);
&gt; +#else
&gt; +        catchRoutine = handler-&gt;nativeCode.executableAddress();
&gt; +#endif
&gt; +        // mlam BEGIN
&gt; +        #if mlam_PRINTF
&gt; +        printf(&quot;\n    mlam :: genericThrow() SET handler %p | catchPCForInterpreter = %p catchRoutine %p\n&quot;, handler, catchPCForInterpreter, catchRoutine);
&gt; +        #endif // mlam_PRINTF
&gt; +        // mlam END
&gt; +    } else {
&gt; +#if ENABLE(LLINT_C_LOOP)
&gt; +        // mlam orig catchRoutine = LLINT_ADDRESS_OF_GLUE(llint_ctiOpThrowNotCaught);
&gt; +        // mlam COMPUTED_GOTO catchRoutine = const_cast&lt;void*&gt;(LLInt::Data::getOpcode(llint_ctiOpThrowNotCaught));
&gt; +        catchRoutine = LLInt::Data::getOpcodePtr(llint_ctiOpThrowNotCaught);
&gt; +#else
&gt;          catchRoutine = FunctionPtr(ctiOpThrowNotCaught).value();
&gt; +#endif
&gt; +        // mlam BEGIN
&gt; +        #if mlam_PRINTF
&gt; +        printf(&quot;\n    mlam :: genericThrow() SET NO handler | catchRoutine = %p\n&quot;, catchRoutine);
&gt; +        #endif // mlam_PRINTF
&gt; +        // mlam END
&gt; +    }

Why can&apos;t the catchRoutine be an &quot;executable address&quot; in the LLInt C loop as well?  By &quot;executable address&quot; I of course mean a number that will cause the switch statement to take you to the relevant piece of code.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:64
&gt; +    if (!s_isInited) {
&gt; +        s_exceptionInstructions = new Instruction[maxOpcodeLength + 1];
&gt; +        s_opcodeMap = new LLIntOpcode[numLLIntOpcodeIDs];
&gt; +#if !ENABLE(LLINT_C_LOOP)
&gt;      for (int i = 0; i &lt; maxOpcodeLength + 1; ++i)
&gt; -        m_exceptionInstructions[i].u.pointer = bitwise_cast&lt;void*&gt;(&amp;llint_throw_from_slow_path_trampoline);
&gt; -#define OPCODE_ENTRY(opcode, length) m_opcodeMap[opcode] = bitwise_cast&lt;void*&gt;(&amp;llint_##opcode);
&gt; +        s_exceptionInstructions[i].u.pointer = bitwise_cast&lt;void*&gt;(&amp;llint_throw_from_slow_path_trampoline);
&gt; +#define OPCODE_ENTRY(opcode, length) s_opcodeMap[opcode] = bitwise_cast&lt;void*&gt;(&amp;llint_##opcode);
&gt;      FOR_EACH_OPCODE_ID(OPCODE_ENTRY);
&gt;  #undef OPCODE_ENTRY
&gt; +        s_isInited = true;
&gt; +#endif // !ENABLE(LLINT_C_LOOP)
&gt; +    }

You&apos;re risking a race condition here.  Either use pthread_once (or similar) or move this initialization into JSC::initializeThreading().

&gt; Source/JavaScriptCore/llint/LLIntData.h:107
&gt; +    static bool s_isInited;

isInited should be isInitialized.  We generally prefer not to abbreviate.

&gt; Source/JavaScriptCore/llint/LLIntData.h:111
&gt; +    */
&gt; +    static bool s_isInited;
&gt; +    static Instruction* s_exceptionInstructions;
&gt; +    static LLIntOpcode* s_opcodeMap;
&gt; +    // mlam END */
&gt;  };

Why is this change necessary?  What&apos;s wrong with this being per-LLIntData-instance?  Having it be per-LLIntData-instance means that you completely avoid initialization race conditions.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.h:47
&gt; -    void* a;
&gt; -    void* b;
&gt; +    Instruction* a;
&gt; +    ExecState* b;

I believe we often return something other than Instruction* as the first word.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:92
&gt; +macro jumpToPC()
&gt; +    if C_LOOP
&gt; +        cxxNextOpcode
&gt; +    else
&gt; +        jmp [PC]                    // goto NEXT_INSTRUCTION;
&gt; +    end
&gt; +end

Why do you need this?

Why isn&apos;t the translation of jmp &lt;address&gt; just:

// the function you generate from the offlineasm
enum LLIntGlobalLabels {
    _llint_op_something,
    // ... lots more
};
void cLoop() {
    LLIntGlobalLabels nextPC;
    for (;;) {
        switch (nextPC) {
        case _llint_op_something:
            // translation of jmp [PC]
            nextPC = *bitwise_cast&lt;LLIntGlobalLabels*&gt;(PC);
            continue;
        // more things
        }
    }
}

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:126
&gt; +        cxxCallSlowPath function, arg1, arg2    // call C function(arg1, arg2);

For the record, I concur that having a special opcode for calls to C functions is right.  I just don&apos;t agree that it&apos;s right for jmp, or for call when it&apos;s used for JS-&gt;JS calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694151</commentid>
    <comment_count>7</comment_count>
      <attachid>157459</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-13 15:20:00 -0700</bug_when>
    <thetext>Comment on attachment 157459
Work in progress 4: added 64-bit support and some clean up.  Passes JSC tests, v8 bench, and sunspider.  On to layout tests next.

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

&gt;&gt; Source/JavaScriptCore/interpreter/VMInspector.h:11
&gt;&gt; +class VMInspector {
&gt; 
&gt; I like this, but would prefer a VMInspector namespace over a class - unless you plan to make it instantiable, which doesn&apos;t seem to be the case..

The usage cases for the VMInspector class is not baked yet.  But I think I concur that there isn&apos;t a use case for instantiating it.  I tend to prefer using classes as the smallest collection of functionality, and namespaces for arbitration between commonly named classes.  In this case, I think of using &quot;the VMInspector&quot; as it is an object although there may ever be one instance / pseudo instance.  But I don&apos;t mind changing it to be a namespace instead if I don&apos;t find any good reasons to keep it as a class when it&apos;s time to bake it.

&gt;&gt; Source/JavaScriptCore/jit/JITExceptions.cpp:82
&gt;&gt; +    }
&gt; 
&gt; Why can&apos;t the catchRoutine be an &quot;executable address&quot; in the LLInt C loop as well?  By &quot;executable address&quot; I of course mean a number that will cause the switch statement to take you to the relevant piece of code.

It is an &quot;executable address&quot; in the lint loop.  What I&apos;m trying to do here is represent it in a way that the C compiler won&apos;t complain about.  That said, I haven&apos;t tried really hard to make it real clean yet.  Have just been aiming at getting it to work so far.  Will revisit for applying a cleaner abstraction when things are fully functional.

&gt;&gt; Source/JavaScriptCore/llint/LLIntData.cpp:64
&gt;&gt; +    }
&gt; 
&gt; You&apos;re risking a race condition here.  Either use pthread_once (or similar) or move this initialization into JSC::initializeThreading().

OK, thanks for the tip.  Will look into it.

&gt;&gt; Source/JavaScriptCore/llint/LLIntData.h:111
&gt;&gt;  };
&gt; 
&gt; Why is this change necessary?  What&apos;s wrong with this being per-LLIntData-instance?  Having it be per-LLIntData-instance means that you completely avoid initialization race conditions.

Having the opcodeMap as a global singleton allows me to get its info from anywhere without needing a globalData pointer, and I encountered a few of such cases as I was trying to do this work.  That is my main motivation.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.h:47
&gt;&gt; +    ExecState* b;
&gt; 
&gt; I believe we often return something other than Instruction* as the first word.

I was letting the C compiler complain if there was a type conflict.  So far, I didn&apos;t encounter any, but I will recheck to be sure before submitting my final patch.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:92
&gt;&gt; +end
&gt; 
&gt; Why do you need this?
&gt; 
&gt; Why isn&apos;t the translation of jmp &lt;address&gt; just:
&gt; 
&gt; // the function you generate from the offlineasm
&gt; enum LLIntGlobalLabels {
&gt;     _llint_op_something,
&gt;     // ... lots more
&gt; };
&gt; void cLoop() {
&gt;     LLIntGlobalLabels nextPC;
&gt;     for (;;) {
&gt;         switch (nextPC) {
&gt;         case _llint_op_something:
&gt;             // translation of jmp [PC]
&gt;             nextPC = *bitwise_cast&lt;LLIntGlobalLabels*&gt;(PC);
&gt;             continue;
&gt;         // more things
&gt;         }
&gt;     }
&gt; }

Because there are local labels where a jump to it really means a jump as opposed to goto next opcode.  I need to be able to distinguish between the 2.  One alternative is to make the C loop backend aware that the branch target specifier is the vPC, and use that as the distinguishing factor.  I can see if I can make that work later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694201</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-13 16:20:09 -0700</bug_when>
    <thetext>
&gt; &gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:92
&gt; &gt;&gt; +end
&gt; &gt; 
&gt; &gt; Why do you need this?
&gt; &gt; 
&gt; &gt; Why isn&apos;t the translation of jmp &lt;address&gt; just:
&gt; &gt; 
&gt; &gt; // the function you generate from the offlineasm
&gt; &gt; enum LLIntGlobalLabels {
&gt; &gt;     _llint_op_something,
&gt; &gt;     // ... lots more
&gt; &gt; };
&gt; &gt; void cLoop() {
&gt; &gt;     LLIntGlobalLabels nextPC;
&gt; &gt;     for (;;) {
&gt; &gt;         switch (nextPC) {
&gt; &gt;         case _llint_op_something:
&gt; &gt;             // translation of jmp [PC]
&gt; &gt;             nextPC = *bitwise_cast&lt;LLIntGlobalLabels*&gt;(PC);
&gt; &gt;             continue;
&gt; &gt;         // more things
&gt; &gt;         }
&gt; &gt;     }
&gt; &gt; }
&gt; 
&gt; Because there are local labels where a jump to it really means a jump as opposed to goto next opcode.  I need to be able to distinguish between the 2.  One alternative is to make the C loop backend aware that the branch target specifier is the vPC, and use that as the distinguishing factor.  I can see if I can make that work later.

But the offlineasm already distinguishes by those two uses of jmp.  It already has the notion of local labels, and global labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694202</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-13 16:24:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; &gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:92
&gt; &gt; &gt;&gt; +end
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do you need this?
&gt; &gt; &gt; 
&gt; &gt; &gt; Why isn&apos;t the translation of jmp &lt;address&gt; just:
&gt; &gt; &gt; 
&gt; &gt; &gt; // the function you generate from the offlineasm
&gt; &gt; &gt; enum LLIntGlobalLabels {
&gt; &gt; &gt;     _llint_op_something,
&gt; &gt; &gt;     // ... lots more
&gt; &gt; &gt; };
&gt; &gt; &gt; void cLoop() {
&gt; &gt; &gt;     LLIntGlobalLabels nextPC;
&gt; &gt; &gt;     for (;;) {
&gt; &gt; &gt;         switch (nextPC) {
&gt; &gt; &gt;         case _llint_op_something:
&gt; &gt; &gt;             // translation of jmp [PC]
&gt; &gt; &gt;             nextPC = *bitwise_cast&lt;LLIntGlobalLabels*&gt;(PC);
&gt; &gt; &gt;             continue;
&gt; &gt; &gt;         // more things
&gt; &gt; &gt;         }
&gt; &gt; &gt;     }
&gt; &gt; &gt; }
&gt; &gt; 
&gt; &gt; Because there are local labels where a jump to it really means a jump as opposed to goto next opcode.  I need to be able to distinguish between the 2.  One alternative is to make the C loop backend aware that the branch target specifier is the vPC, and use that as the distinguishing factor.  I can see if I can make that work later.
&gt; 
&gt; But the offlineasm already distinguishes by those two uses of jmp.  It already has the notion of local labels, and global labels.

The offlineasm distinguishes the declaration of the local and global labels.  However, the jump sites uses the same vanilla imp instruction.  In my case, I need the imp instruction to behave differently depending on which type of jump target we&apos;re jumping to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694205</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-13 16:25:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; &gt; &gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:92
&gt; &gt; &gt; &gt;&gt; +end
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why do you need this?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why isn&apos;t the translation of jmp &lt;address&gt; just:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; // the function you generate from the offlineasm
&gt; &gt; &gt; &gt; enum LLIntGlobalLabels {
&gt; &gt; &gt; &gt;     _llint_op_something,
&gt; &gt; &gt; &gt;     // ... lots more
&gt; &gt; &gt; &gt; };
&gt; &gt; &gt; &gt; void cLoop() {
&gt; &gt; &gt; &gt;     LLIntGlobalLabels nextPC;
&gt; &gt; &gt; &gt;     for (;;) {
&gt; &gt; &gt; &gt;         switch (nextPC) {
&gt; &gt; &gt; &gt;         case _llint_op_something:
&gt; &gt; &gt; &gt;             // translation of jmp [PC]
&gt; &gt; &gt; &gt;             nextPC = *bitwise_cast&lt;LLIntGlobalLabels*&gt;(PC);
&gt; &gt; &gt; &gt;             continue;
&gt; &gt; &gt; &gt;         // more things
&gt; &gt; &gt; &gt;         }
&gt; &gt; &gt; &gt;     }
&gt; &gt; &gt; &gt; }
&gt; &gt; &gt; 
&gt; &gt; &gt; Because there are local labels where a jump to it really means a jump as opposed to goto next opcode.  I need to be able to distinguish between the 2.  One alternative is to make the C loop backend aware that the branch target specifier is the vPC, and use that as the distinguishing factor.  I can see if I can make that work later.
&gt; &gt; 
&gt; &gt; But the offlineasm already distinguishes by those two uses of jmp.  It already has the notion of local labels, and global labels.
&gt; 
&gt; The offlineasm distinguishes the declaration of the local and global labels.  However, the jump sites uses the same vanilla imp instruction.  In my case, I need the imp instruction to behave differently depending on which type of jump target we&apos;re jumping to.

It also distinguishes between references to labels.  You *always know* whether you&apos;re jumping to a local or global label.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695086</commentid>
    <comment_count>11</comment_count>
      <attachid>158355</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-14 10:05:19 -0700</bug_when>
    <thetext>Created attachment 158355
work in progress 5: more bug fixes, some clean up, and incorporated some of Filip&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695089</commentid>
    <comment_count>12</comment_count>
      <attachid>158356</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-14 10:09:03 -0700</bug_when>
    <thetext>Created attachment 158356
work in progress 6: added a missing new file.  Now down to 2 crashes and 1 test failure left to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696854</commentid>
    <comment_count>13</comment_count>
      <attachid>158736</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-16 00:43:50 -0700</bug_when>
    <thetext>Created attachment 158736
Example of generated 32-bit llint C loop code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696856</commentid>
    <comment_count>14</comment_count>
      <attachid>158737</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-16 00:44:39 -0700</bug_when>
    <thetext>Created attachment 158737
Example of generated 64-bit llint C loop code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697266</commentid>
    <comment_count>15</comment_count>
      <attachid>158852</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-16 10:45:06 -0700</bug_when>
    <thetext>Created attachment 158852
work in progress 7: more bug fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697496</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-16 14:04:02 -0700</bug_when>
    <thetext>&gt; OFFLINE_ASM_OPCODE_LABEL(op_create_this)
&gt;     r0.i = *CAST&lt;intptr_t*&gt;(fp.i8p - 32);                      // this&lt;t0&gt; = cfr.Callee;
&gt;     r2.i = *CAST&lt;intptr_t*&gt;(r0.i8p + 40);                      // inheritor&lt;t2&gt; = this&lt;t0&gt;.cachedInheritorID;

I see a couple issues here.

(1) r0 and r2 are declared to be interpreter-global. This will defeat local register allocation, possibly causing performance problems. Can you test the performance of this interpreter, as compared to the existing .cpp interpreter, and post the results?

Performance is not a top priority here, but we&apos;d like to pay it some mind.

(2) This code is a bit cryptic. Assembly forces you to be cryptic. But we&apos;re auto-generating C++ here, so we can be much more explanatory. For example, when the existing .cpp interpreter wants to read the callee register, it just says &quot;JSFunction* constructor = jsCast&lt;JSFunction*&gt;(callFrame-&gt;callee())&quot;. Why is that kind of code not possible here? Are we going out of our way to mimic the assembly generated by our assembly back-ends for some reason?

(3) Comments. I tend to agree that this code is cryptic, and could use some explanation. However, the comments are equally cryptic. I don&apos;t know what &lt;&gt; annotation means, and I don&apos;t know what these numbered t&apos;s are. 

The original code reads:

    loadp Callee[cfr], t0

Why can&apos;t our C++ code have variables named &quot;cfr&quot;, &quot;callee&quot; and &quot;t0&quot;, and perform an operation like &quot;Register t0 = cfr[callee]&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697521</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 14:24:22 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; OFFLINE_ASM_OPCODE_LABEL(op_create_this)
&gt; &gt;     r0.i = *CAST&lt;intptr_t*&gt;(fp.i8p - 32);                      // this&lt;t0&gt; = cfr.Callee;
&gt; &gt;     r2.i = *CAST&lt;intptr_t*&gt;(r0.i8p + 40);                      // inheritor&lt;t2&gt; = this&lt;t0&gt;.cachedInheritorID;
&gt; 
&gt; I see a couple issues here.
&gt; 
&gt; (1) r0 and r2 are declared to be interpreter-global. This will defeat local register allocation, possibly causing performance problems. Can you test the performance of this interpreter, as compared to the existing .cpp interpreter, and post the results?
&gt; 
&gt; Performance is not a top priority here, but we&apos;d like to pay it some mind.
&gt; 
&gt; (2) This code is a bit cryptic. Assembly forces you to be cryptic. But we&apos;re auto-generating C++ here, so we can be much more explanatory. For example, when the existing .cpp interpreter wants to read the callee register, it just says &quot;JSFunction* constructor = jsCast&lt;JSFunction*&gt;(callFrame-&gt;callee())&quot;. Why is that kind of code not possible here? Are we going out of our way to mimic the assembly generated by our assembly back-ends for some reason?

If you&apos;re generating C++ code from assembly code, I&apos;m not sure how you&apos;re going to avoid it being cryptic.  In particular, the offlineasm blows away offsetof operations early, before it gets to the backend.  We could change that, but that would add an entirely separate path to the offlineasm and hence would defeat the goal of reducing the amount of code we want to maintain.

As well, I don&apos;t think we&apos;ll ever be touching the C++ code generated by the offlineasm, just as we currently almost never touch the assembly code generated by the offlineasm.

&gt; 
&gt; (3) Comments. I tend to agree that this code is cryptic, and could use some explanation. However, the comments are equally cryptic. I don&apos;t know what &lt;&gt; annotation means, and I don&apos;t know what these numbered t&apos;s are. 
&gt; 
&gt; The original code reads:
&gt; 
&gt;     loadp Callee[cfr], t0
&gt; 
&gt; Why can&apos;t our C++ code have variables named &quot;cfr&quot;, &quot;callee&quot; and &quot;t0&quot;, and perform an operation like &quot;Register t0 = cfr[callee]&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697525</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-16 14:28:19 -0700</bug_when>
    <thetext>Here&apos;s a specific suggestion for making this more readable. Instead of:

    r4.i = *CAST&lt;intptr_t*&gt;(r0.i8p);                           //   next&lt;a5&gt; = result&lt;a3&gt;.ptr;
    *CAST&lt;intptr_t*&gt;(r1.i8p + 1680) = r4.i;                    //   globalData&lt;a4&gt;.MySizeClass.FirstFreeCell = next&lt;a5&gt;;

How about:

    loadp(r4, address(r0));
    storei(address(r1, 1680), r4);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700039</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-20 15:18:45 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; OFFLINE_ASM_OPCODE_LABEL(op_create_this)
&gt; &gt;     r0.i = *CAST&lt;intptr_t*&gt;(fp.i8p - 32);                      // this&lt;t0&gt; = cfr.Callee;
&gt; &gt;     r2.i = *CAST&lt;intptr_t*&gt;(r0.i8p + 40);                      // inheritor&lt;t2&gt; = this&lt;t0&gt;.cachedInheritorID;
&gt; 
&gt; I see a couple issues here.
&gt; 
&gt; (1) r0 and r2 are declared to be interpreter-global. This will defeat local register allocation, possibly causing performance problems. Can you test the performance of this interpreter, as compared to the existing .cpp interpreter, and post the results?
&gt; 
&gt; Performance is not a top priority here, but we&apos;d like to pay it some mind.

The pseudo registers do need to be interpreter global because by definition (like CPU regs), they need to carry their state across to subsequent asm &quot;instruction&quot;s.

Will check the performance.
 
&gt; (2) This code is a bit cryptic. Assembly forces you to be cryptic. But we&apos;re auto-generating C++ here, so we can be much more explanatory. For example, when the existing .cpp interpreter wants to read the callee register, it just says &quot;JSFunction* constructor = jsCast&lt;JSFunction*&gt;(callFrame-&gt;callee())&quot;. Why is that kind of code not possible here? Are we going out of our way to mimic the assembly generated by our assembly back-ends for some reason?

It is cryptic because by the time the backend gets the info, all I know about are registers, offsets, and what operation to perform on them.  For example, I don&apos;t have data to tell me that I&apos;m fetching the callee, only that I am to deref the cfr at a certain numeric constant offset and load that value.

&gt; (3) Comments. I tend to agree that this code is cryptic, and could use some explanation. However, the comments are equally cryptic. I don&apos;t know what &lt;&gt; annotation means, and I don&apos;t know what these numbered t&apos;s are. 
&gt; 
&gt; The original code reads:
&gt; 
&gt;     loadp Callee[cfr], t0
&gt; 
&gt; Why can&apos;t our C++ code have variables named &quot;cfr&quot;, &quot;callee&quot; and &quot;t0&quot;, and perform an operation like &quot;Register t0 = cfr[callee]&quot;?

The backend sees:

  loadp [cfr, -32], t0

I could do extra work to recognize that -32 is the offset for callee on the 32 bit version when applied to the cfr.  How much effort do you want to invest in generating more readable code considering that we will rarely have to debug at this level.

As for the comments, I use &quot;this&lt;t0&gt;&quot; to denote a value named &quot;this&quot; stored in register t0.  It&apos;s t0 because the comment is a const string written in the context of the asm code.  The backend later maps it to r0.  I could keep it as t0 to make it map better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700040</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-20 15:20:03 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Here&apos;s a specific suggestion for making this more readable. Instead of:
&gt; 
&gt;     r4.i = *CAST&lt;intptr_t*&gt;(r0.i8p);                           //   next&lt;a5&gt; = result&lt;a3&gt;.ptr;
&gt;     *CAST&lt;intptr_t*&gt;(r1.i8p + 1680) = r4.i;                    //   globalData&lt;a4&gt;.MySizeClass.FirstFreeCell = next&lt;a5&gt;;
&gt; 
&gt; How about:
&gt; 
&gt;     loadp(r4, address(r0));
&gt;     storei(address(r1, 1680), r4);

Are you suggesting that I make the output look more like ASM code?  I can do that if its preferable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700052</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-20 15:24:55 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; Here&apos;s a specific suggestion for making this more readable. Instead of:
&gt; &gt; 
&gt; &gt;     r4.i = *CAST&lt;intptr_t*&gt;(r0.i8p);                           //   next&lt;a5&gt; = result&lt;a3&gt;.ptr;
&gt; &gt;     *CAST&lt;intptr_t*&gt;(r1.i8p + 1680) = r4.i;                    //   globalData&lt;a4&gt;.MySizeClass.FirstFreeCell = next&lt;a5&gt;;
&gt; &gt; 
&gt; &gt; How about:
&gt; &gt; 
&gt; &gt;     loadp(r4, address(r0));
&gt; &gt;     storei(address(r1, 1680), r4);
&gt; 
&gt; Are you suggesting that I make the output look more like ASM code?  I can do that if its preferable.

I vote for not making this change; I think it&apos;s good as-is.  In my experience, we rarely look at the generated code.  And when we do, I think it&apos;s better to see exactly what the code is doing, which your form is good for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700092</commentid>
    <comment_count>22</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-20 15:44:43 -0700</bug_when>
    <thetext>&gt; How much effort do you want to invest in generating more readable code considering that we will rarely have to debug at this level.

I hear you and Phil both saying that debug-ability doesn&apos;t matter here. But you invented a whole new syntax for comment-embedded pseudo-assembly because you said you couldn&apos;t debug without it. What gives?

FWIW, when I read this code, the comment-embedded pseudo-asssembly makes things harder to read, because now I&apos;m speaking in three languages (LLInt assembly, c++, and pseudo-assembly) instead of two, and one of these languages has no specification and no debugger.

&gt; Are you suggesting that I make the output look more like ASM code?  I can do that if its preferable.

My main suggestion is that any comment you would want to put on the right of the &quot;//&quot; would serve us better as code on the left of the &quot;//&quot;. If you want to name an offset or a register on the right, just name it in the code on the left instead. Let&apos;s not use comments as a crutch to excuse unreadable code.

On the other hand, if you think the code is perfectly readable without the comments, or readability doesn&apos;t matter for some special reason in this case, please remove the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710217</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-01 03:54:27 -0700</bug_when>
    <thetext>The change set for adding the llint C loop backend was broken up into several bugs.  For reference, here are the other commits that were preceeded this final one:

Adding support for adding LLInt opcode extensions.
https://bugs.webkit.org/show_bug.cgi?id=95277

Refactoring LLInt::Data to be a singleton
https://bugs.webkit.org/show_bug.cgi?id=95316

Render unto #ifdef&apos;s that which belongs to them.
https://bugs.webkit.org/show_bug.cgi?id=95482

Refactor LLInt and supporting code in preparation for the C Loop backend.
https://bugs.webkit.org/show_bug.cgi?id=95531</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710218</commentid>
    <comment_count>24</comment_count>
      <attachid>161822</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-01 03:55:34 -0700</bug_when>
    <thetext>Created attachment 161822
Fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710219</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-01 03:57:24 -0700</bug_when>
    <thetext>Attachment 161822 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/llint/LLIntCLoop.h:41:  llint_unused is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:66:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:71:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:76:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:79:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:134:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:139:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:400:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 9 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710220</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-01 04:02:49 -0700</bug_when>
    <thetext>The few style violations were intentional.  They were:
1. llint_unused uses underscore.  This was intentional to keep it consistent with how opcodes are named.
2. Use of more than 1 space between certain words in a comment block.  This was because I was expressing a column aligned table of info which necessitates the use of space for alignment.
3. No space around &amp;&amp;.  The style checker thought it&apos;s a logical AND operator, but it&apos;s actually a &quot;get the address of a label&quot; operator, and it does not make sense to have spaces around it where it is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710259</commentid>
    <comment_count>27</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-09-01 10:18:50 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; The few style violations were intentional.  They were:
&gt; 1. llint_unused uses underscore.  This was intentional to keep it consistent with how opcodes are named.
&gt; 2. Use of more than 1 space between certain words in a comment block.  This was because I was expressing a column aligned table of info which necessitates the use of space for alignment.
&gt; 3. No space around &amp;&amp;.  The style checker thought it&apos;s a logical AND operator, but it&apos;s actually a &quot;get the address of a label&quot; operator, and it does not make sense to have spaces around it where it is used.

Yeah, I just looked at them.  The address of label thing is a little annoying, that said: does this work in compiler that don&apos;t support computed goto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710260</commentid>
    <comment_count>28</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-01 10:20:55 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; The few style violations were intentional.  They were:
&gt; 1. llint_unused uses underscore.  This was intentional to keep it consistent with how opcodes are named.
&gt; 2. Use of more than 1 space between certain words in a comment block.  This was because I was expressing a column aligned table of info which necessitates the use of space for alignment.
&gt; 3. No space around &amp;&amp;.  The style checker thought it&apos;s a logical AND operator, but it&apos;s actually a &quot;get the address of a label&quot; operator, and it does not make sense to have spaces around it where it is used.

Yeah, for changes in parts of the JIT and LLInt we end up getting loads of these sorts of warnings and we pretty much always ignore them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710261</commentid>
    <comment_count>29</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-01 10:22:30 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; The few style violations were intentional.  They were:
&gt; &gt; 1. llint_unused uses underscore.  This was intentional to keep it consistent with how opcodes are named.
&gt; &gt; 2. Use of more than 1 space between certain words in a comment block.  This was because I was expressing a column aligned table of info which necessitates the use of space for alignment.
&gt; &gt; 3. No space around &amp;&amp;.  The style checker thought it&apos;s a logical AND operator, but it&apos;s actually a &quot;get the address of a label&quot; operator, and it does not make sense to have spaces around it where it is used.
&gt; 
&gt; Yeah, I just looked at them.  The address of label thing is a little annoying, that said: does this work in compiler that don&apos;t support computed goto?

It should.  That was the design, and the code has paths for both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710262</commentid>
    <comment_count>30</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-09-01 10:24:23 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; The few style violations were intentional.  They were:
&gt; &gt; &gt; 1. llint_unused uses underscore.  This was intentional to keep it consistent with how opcodes are named.
&gt; &gt; &gt; 2. Use of more than 1 space between certain words in a comment block.  This was because I was expressing a column aligned table of info which necessitates the use of space for alignment.
&gt; &gt; &gt; 3. No space around &amp;&amp;.  The style checker thought it&apos;s a logical AND operator, but it&apos;s actually a &quot;get the address of a label&quot; operator, and it does not make sense to have spaces around it where it is used.
&gt; &gt; 
&gt; &gt; Yeah, I just looked at them.  The address of label thing is a little annoying, that said: does this work in compiler that don&apos;t support computed goto?
&gt; 
&gt; It should.  That was the design, and the code has paths for both.

Cool.

How&apos;s performance compare vs. the old C interpreter? (It doesn&apos;t matter too much, but it would be nice to know)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710264</commentid>
    <comment_count>31</comment_count>
      <attachid>161822</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-01 10:36:29 -0700</bug_when>
    <thetext>Comment on attachment 161822
Fix.

Clearing flags on attachment: 161822

Committed r127374: &lt;http://trac.webkit.org/changeset/127374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710265</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-01 10:36:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716603</commentid>
    <comment_count>33</comment_count>
      <attachid>163231</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-10 15:28:18 -0700</bug_when>
    <thetext>Created attachment 163231
Comparison of layout test results for C++ llint, ASM llint, and Classic interpreter.

Here&apos;s an excerpt (from the attached file) of just the failed results which are relevant to the C++ llint:

Summary of layout test runs:                                                Failures                                Comments
===========================                                                 ======================================  ========

Regressions: Unexpected text failures : (11)
  accessibility/accessibility-node-memory-management.html                   C++ llint                   Classic     Consistently fails w/ 100 iterations.
  fast/events/remove-target-with-shadow-in-drag.html                        C++ llint     ASM llint                 Consistently fails w/ 100 iterations.
  fast/spatial-navigation/snav-container-white-space.html                   C++ llint     ASM llint     Classic     Consistently fails w/ 100 iterations.
  fast/spatial-navigation/snav-div-overflow-scrol-hidden.html               C++ llint     ASM llint     Classic     Consistently fails w/ 100 iterations.
  fast/spatial-navigation/snav-imagemap-overlapped-areas.html               C++ llint     ASM llint     Classic     Consistently fails w/ 100 iterations.
  fast/workers/worker-close-more.html                                       C++ llint     ASM llint     Classic     Consistently fails.
  fast/workers/worker-lifecycle.html                                        C++ llint     ASM llint     Classic     Passes when run by itself.
  jquery/manipulation.html                                                  C++ llint                               Flaky.  Passes when run alone.
  platform/mac/editing/spelling/removing-underline-after-accepting-autocorrection-using-punctuation.html
                                                                            C++ llint     ASM llint                 Consistently fails w/ 100 iterations.
  platform/mac/fast/loader/file-url-mimetypes-3.html                        C++ llint     ASM llint     Classic     Consistently fails w/ 100 iterations.
  svg/text/non-bmp-positioning-lists.svg                                    C++ llint     ASM llint     Classic     Consistently fails w/ 100 iterations.

Regressions: Unexpected crashes : (2)
  fast/profiler/profiling-from-a-nested-location.html                       C++ llint                               Flaky when run alone w/ 100 iterations.
  inspector/extensions/extensions-eval.html                                 C++ llint                               Passes when run alone w/ 100 iterations.

Regressions: Unexpected timeouts : (1)
  fast/js/random-array-gc-stress.html                                       C++ llint     ASM llint     Classic     Passes on JIT build or when timeout is removed.


Comparing the C++ llint failures with the ASM llint and the Classic intepreter, it doesn&apos;t look like there are new regressions.  In all cases, the failures either already exists in the ASM llint or the classic interpreter, or the failure is intermittent (could be test flakiness).  Certainly, all of these should be investigated, but the only tests that could potentially be a C++ llint only issue are:
  jquery/manipulation.html
  fast/profiler/profiling-from-a-nested-location.html

I will a bug to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716609</commentid>
    <comment_count>34</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-10 15:37:06 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; I will a bug to track this.

Bug filed: https://bugs.webkit.org/show_bug.cgi?id=96333</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153623</attachid>
            <date>2012-07-20 16:54:29 -0700</date>
            <delta_ts>2012-07-21 01:18:39 -0700</delta_ts>
            <desc>work in progress1</desc>
            <filename>bug-91052-wop1.patch</filename>
            <type>text/plain</type>
            <size>252134</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDI5IEBACiAjZWxzZQogI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNf
T05fR0NDIDEKICNlbmRpZgorCisvLyBtbGFtIEJFR0lOCisvLyBtbGFtIEJFR0lOIHRlc3QKKy8v
I3VuZGVmIEVOQUJMRV9KSVQKKy8vI2RlZmluZSBFTkFCTEVfSklUIDAKKy8vIG1sYW0gRU5ECisK
Ky8vI3VuZGVmIExMSU5UCisvLyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKworI2lmICFFTkFCTEUo
SklUKQorI2RlZmluZSBFTkFCTEVfQ1hYX0lOVEVSUFJFVEVSIDEKKy8vI2RlZmluZSBFWEVDVVRJ
T05fVFJBQ0lORyAxCisKKy8vIE1ha2Ugc3VyZSB0aGUgREZHIGlzIHR1cm5lZCBvZmYgaWYgYmFz
aWMgSklUIHN1cHBvcnQgaXMgb2ZmLgorI3VuZGVmIEVOQUJMRV9ERkdfSklUCisjZGVmaW5lIEVO
QUJMRV9ERkdfSklUIDAKKworI2Vsc2UgLy8gIUVOQUJMRShKSVQpCisjZGVmaW5lIEVOQUJMRV9D
WFhfSU5URVJQUkVURVIgMAorI2VuZGlmIC8vICFFTkFCTEUoSklUKQorCisvLyN1bmRlZiBFTkFC
TEVfQ1hYX0lOVEVSUFJFVEVSCisvLyNkZWZpbmUgRU5BQkxFX0NYWF9JTlRFUlBSRVRFUiAwIC8v
IEZvcmNlIGl0IG9uLgorLy8gbWxhbSBFTkQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDksNyArMzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bgogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0
Y2g7CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7Ci0gICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uo
c2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZleGNlcHRpb24pOworICAgIGV2
YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVO
YW1lKSwgSlNWYWx1ZSgpLCAmZXhjZXB0aW9uKTsKICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAg
ICAgaWYgKCEhZXhjZXB0aW9uKSB7CkBAIC0zNzAsNyArMzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAgSlNWYWx1ZSBldmFs
dWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NT
b3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4o
KSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAgZ2xvYmFsRGF0YS5zdGFydFNhbXBsaW5nKCk7
CiAKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBKU1ZhbHVl
IHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSks
IEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICBKU1ZhbHVlIHJldHVy
blZhbHVlID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LCBm
aWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICBzdWNj
ZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICAgICAgaWYgKGR1bXAg
JiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYoIkVuZDogJXNcbiIs
IHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTg4LDcgKzU4
OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCoKICAgICAgICAg
aWYgKGxpbmVbMF0pCiAgICAgICAgICAgICBhZGRfaGlzdG9yeShsaW5lKTsKICAgICAgICAgSlNW
YWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0g
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGVDaGFpbigpLCBqc2NTb3VyY2UobGluZSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1ZSgp
LCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBl
dmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLCBpbnRlcnByZXRlck5h
bWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgZnJlZShsaW5l
KTsKICNlbHNlCiAgICAgICAgIHByaW50ZigiJXMiLCBpbnRlcmFjdGl2ZVByb21wdCk7CkBAIC02
MDUsNyArNjA1LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0Kgog
ICAgICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKIAogICAgICAgICBKU1ZhbHVlIGV2YWx1YXRpb25F
eGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpz
Y1NvdXJjZShsaW5lLmRhdGEoKSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZV9t
bGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50ZXJwcmV0ZXJOYW1l
KSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgaWYg
KGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNc
biIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAxMjMyNzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpTQ29udGV4dFJlZgog
ICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVzdHJpbmcoKSwgc291
cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkpOwogCiAg
ICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUg
PSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9i
YWxTY29wZUNoYWluKCksIHNvdXJjZSwganNUaGlzT2JqZWN0LCAmZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4o
KSwgc291cmNlLCBqc1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAogICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24g
MTIzMjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMzIsNiArMjAzMiwxMCBAQCBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlVW5saW5raW5nID0gdHJ1CiAjZWxzZQogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVu
bGlua2luZyA9IGZhbHNlOwogI2VuZGlmCisvLyBtbGFtIEJFR0lOCisjZWxzZSAKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKKy8vIG1sYW0gRU5ECiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKICAgICAKIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgpCkBAIC0yNTc4LDcgKzI1ODIsOCBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21p
bmdDYWxscygpCiAKIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRl
KiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7Ci0jaWYgRU5BQkxFKExM
SU5UKQorLy8gbWxhbSAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVO
QUJMRShDWFhfSU5URVJQUkVURVIpCiAgICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKICAgICAgICAgJiYgcmV0dXJuQWRkcmVz
cy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKICAgICAgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcs
NyBAQAogLy8gKGFzIG9wcG9zZWQgdG8gYXBwIGRlYnVnZ2luZyksIHRoaXMgZmVhdHVyZSBpcyB0
byBiZSBkaXNhYmxlZCBieSBkZWZhdWx0LAogLy8gYW5kIGNhbiBiZSBlbmFibGVkIGFzIG5lZWRl
ZCBmb3IgVk0gZGV2ZWxvcG1lbnQgdXNlIG9ubHkuCiAKLSNkZWZpbmUgRU5BQkxFX0JZVEVDT0RF
X0NPTU1FTlRTIDAKKyNkZWZpbmUgRU5BQkxFX0JZVEVDT0RFX0NPTU1FTlRTIDEgLy8gbWxhbSB3
YXMgMAogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjI4LDkgKzIyOCwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhv
ZENhbGxMaW5rSW5mbywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5k
ZXg+KG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Mu
c2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAgICAgICAgIH0KKyNlbmRpZiAvLyBtbGFtCiAKICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0
cik7CiAKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTI1MCw2ICsyNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwog
ICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogI2lmIEVOQUJMRShMTElO
VCkKICAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZvKiBpbmNv
bWluZykKICAgICAgICAgewpAQCAtMjU4LDcgKzI2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21p
bmdDYWxscygpOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAg
ICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29kZU1hcD4gaml0
Q29kZU1hcCkKQEAgLTMzNCwxMCArMzM3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICAgICAgICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBKdW1wUmVwbGFjZW1lbnRX
YXRjaHBvaW50JiB3YXRjaHBvaW50KQogICAgICAgICB7CisjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CiAgICAgICAgICAgICBtX2Rm
Z0RhdGEtPndhdGNocG9pbnRzLmFwcGVuZCh3YXRjaHBvaW50KTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisjZWxzZQorICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHdhdGNocG9pbnQpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZPU1JFeGl0cygpCkBAIC04MTIsNiArODIwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9yYXJlRGF0YSAmJiAhIW1fcmFyZURhdGEt
Pm1fY29kZU9yaWdpbnMuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAorI2lmIEVOQUJMRShK
SVQpIC8vIG1sYW0KICAgICAgICAgYm9vbCBjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFoYXNDb2RlT3JpZ2lucygpKQpAQCAtODIzLDcgKzgzMiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgY29kZU9yaWdpbiA9IGVudHJ5LT5jb2RlT3JpZ2lu
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisjZW5kaWYK
KwogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4odW5zaWduZWQgaW5kZXgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMzI3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsOCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwotI2lm
IEVOQUJMRShMTElOVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoTExJ
TlQpICYmICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQogICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUlu
ZGV4OwogICAgIAogICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9t
ZXRob2RfY2hlY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDggQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKLSNpZiBFTkFCTEUoTExJTlQpCisvLyBtbGFt
ICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKENYWF9JTlRF
UlBSRVRFUikKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKIAogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDEw
IEBAIHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEkKIHsKICNpZiBFTkFC
TEUoTExJTlQpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKLSAgICAKKworI2lmICFFTkFCTEUo
Q1hYX0lOVEVSUFJFVEVSKSAvLyBtbGFtCiAgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bj
b2RlID09IGxsaW50X29wX3Jlc29sdmVfZ2xvYmFsKTsKKyNlbmRpZiAvLyBtbGFtCiAgICAgCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQo
KTsKICAgICBpZiAoIXN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9BYnN0cmFjdFBDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFic3RyYWN0UEM6OkFic3RyYWN0
UEMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbERhdGEpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsgLy8gbWxhbQog
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJ
KHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw4IEBAIG5hbWVzcGFjZSBK
U0MgIHsKICAgICAgICAgQ2FsbEZyYW1lJiBvcGVyYXRvcj0oY29uc3QgUmVnaXN0ZXImIHIpIHsg
KnN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcykgPSByOyByZXR1cm4gKnRoaXM7IH0KIAogICAg
ICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3Rl
ckZpbGU6OkNhbGxlckZyYW1lXS5jYWxsRnJhbWUoKTsgfQotI2lmIEVOQUJMRShKSVQpCisvLyBt
bGFtICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQygpIGNvbnN0IHsgcmV0dXJuIFJldHVybkFk
ZHJlc3NQdHIodGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKSk7IH0KICAgICAgICAg
Ym9vbCBoYXNSZXR1cm5QQygpIGNvbnN0IHsgcmV0dXJuICEhdGhpc1tSZWdpc3RlckZpbGU6OlJl
dHVyblBDXS52UEMoKTsgfQogICAgICAgICB2b2lkIGNsZWFyUmV0dXJuUEMoKSB7IHJlZ2lzdGVy
cygpW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdID0gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigw
KTsgfQpAQCAtMTQ4LDcgKzE0OSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRF
UikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKENYWF9JTlRFUlBS
RVRFUikgLy8gbWxhbQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyBy
ZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcwLDIwICs1NzAsNDAgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6
RGF0YQogI2Vycm9yICJCdWlsZGluZyBib3RoIExMSW50IGFuZCB0aGUgQ2xhc3NpYyBJbnRlcnBy
ZXRlciBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgZG9lc24ndCBtYWtlIHNlbnNlLiIKICNl
bmRpZgogCi0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxhbSBvcmlnIAorLy8gI2lmIEVOQUJMRShM
TElOVCkKKyNpZiBFTkFCTEUoTExJTlQpICYmICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQogICAg
IG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCiAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQo
bV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICBtX2NsYXNz
aWNFbmFibGVkID0gZmFsc2U7CisKKy8vIG1sYW0gQkVHSU4KKyNlbGlmIEVOQUJMRShDWFhfSU5U
RVJQUkVURVIpCisgICAgbGxpbnRDWFhFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDAs
IGxsaW50RGF0YSk7CisgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgbV9v
cGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
aSkpOworCisgICAgbV9jbGFzc2ljRW5hYmxlZCA9IGZhbHNlOyAvLyBtbGFtCisvLyBtbGFtIEVO
RCAqLworCiAjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQog
ICAgIGlmIChjYW5Vc2VKSVQpIHsKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBk
b24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCi0gICAgICAgIAorCisgICAg
ICAgIC8vIG1sYW0gOjogVGhlIGZvbGxvd2luZyBjb2RlIGlzIG9ic29sZXRlIGJlY2F1c2Ugd2Ug
c2hvdWxkIG5ldmVyIGVuY291bnRlciB0aGlzCisgICAgICAgIC8vIGNhc2UuICBJbiBwcml2YXRl
RXhlY3V0ZSgpLCB0aGVyZSBpcyBhbiBhc3NlcnRpb24gdGhhdCBlbnN1cmVzIHRoYXQgd2UgbmV2
ZXIKKyAgICAgICAgLy8gbWl4IHRoZSBKSVQgd2l0aCB0aGUgY2xhc3NpYyBjb21waWxlci4KICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAg
ICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAg
ICB9CiAgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgLy8gbWxhbSA6
OiBOT1RFOiBCYXNlZCBvbiBKU0dsb2JhbERhdGEncyBlbmFibGVBc3NlbWJsZXIoKSwgaXQgbG9v
a3MgbGlrZSB0aGUgY2xhc3NpYworICAgICAgICAvLyBpbnRlcnByZXRlciBpcyBzdGlsbCBpbiB1
c2Ugd2hlbiAtLXVzZUpJVD1mYWxzZS4gIFdpbGwgaGF2ZSB0byBmaXggdGhpcyBzbyB0aGF0Cisg
ICAgICAgIC8vIExMSU5UIGNhbiBzdGFuZCBhbG9uZS4KKwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKQEAg
LTU5OCw3ICs2MTgsOCBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRh
CiAjZWxzZQogICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmIC8v
IEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjZW5kaWYgLy8gIUVO
QUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUoTExJTlQp
CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CiAjZW5k
aWYKQEAgLTExMTAsNyArMTEzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNoZWNrZWRS
ZXR1cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNPYmplY3QqIHRoaXNPYmopCitKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTT2Jq
ZWN0KiB0aGlzT2JqKQogewogICAgIEFTU0VSVChpc1ZhbGlkVGhpc09iamVjdCh0aGlzT2JqLCBj
YWxsRnJhbWUpKTsKICAgICBBU1NFUlQoIXNjb3BlQ2hhaW4tPmdsb2JhbERhdGEtPmV4Y2VwdGlv
bik7CkBAIC0xMTIxLDYgKzExNDIsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFBy
b2dyYW1FeGVjCiAgICAgaWYgKG1fcmVlbnRyeURlcHRoID49IE1heFNtYWxsVGhyZWFkUmVlbnRy
eURlcHRoICYmIG1fcmVlbnRyeURlcHRoID49IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm1heFJl
ZW50cnlEZXB0aCkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgInByb2dy
YW0iIGlzIGFjdHVhbGx5IGp1c3QgYSBKU09OIG9iamVjdC4gSWYgc28sCisgICAgLy8gd2UnbGwg
aGFuZGxlIHRoZSBKU09OIG9iamVjdCBoZXJlLiBFbHNlLCB3ZSdsbCBoYW5kbGUgcmVhbCBKUyBj
b2RlCisgICAgLy8gYmVsb3cgYXQgZmFpbGVkSlNPTlAuCiAgICAgRHluYW1pY0dsb2JhbE9iamVj
dFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKCpzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBzY29wZUNo
YWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIFZlY3RvcjxKU09OUERhdGE+IEpTT05QRGF0
YTsKICAgICBib29sIHBhcnNlUmVzdWx0OwpAQCAtMTIyMSwxNiArMTI0NSwyMiBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogZmFpbGVkSlNPTlA6CisgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gd2UgaGF2
ZSBhbHJlYWR5IHByb3ZlbiB0aGF0IHRoZSBzY3JpcHQgaXMgbm90IGEgSlNPTgorICAgIC8vIG9i
amVjdC4KKworICAgIC8vIENvbXBpbGUgc291cmNlIHRvIGJ5dGVjb2RlIGlmIG5lY2Vzc2FyeToK
ICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5jb21waWxlKGNhbGxGcmFtZSwgc2NvcGVD
aGFpbik7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJv
d0Vycm9yKGNhbGxGcmFtZSwgZXJyb3IpKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZw
cm9ncmFtLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogCisgICAgLy8gUmVzZXJ2ZSBzdGFjayBzcGFj
ZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3JlZ2lzdGVy
RmlsZS5lbmQoKTsKICAgICBSZWdpc3RlciogbmV3RW5kID0gb2xkRW5kICsgY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgIGlmICghbV9yZWdpc3RlckZpbGUuZ3Jv
dyhuZXdFbmQpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUpKTsKIAorICAgIC8vIFB1c2ggdGhlIGNhbGwgZnJhbWUgZm9yIHRo
aXMgaW52b2NhdGlvbjoKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6
Y3JlYXRlKG9sZEVuZCArIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgUmVnaXN0ZXJGaWxl
OjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAgICAgbmV3Q2FsbEZyYW1l
LT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGVDaGFpbiwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgMCk7CkBAIC0xMjQwLDE3ICsxMjcwLDIyIEBAIGZh
aWxlZEpTT05QOgogICAgIGlmIChQcm9maWxlciogcHJvZmlsZXIgPSBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRl
KGNhbGxGcmFtZSwgcHJvZ3JhbS0+c291cmNlVVJMKCksIHByb2dyYW0tPmxpbmVObygpKTsKIAor
ICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgewogICAg
ICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkp
OwogCiAgICAgICAgIG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiAhRU5BQkxFKENYWF9JTlRFUlBS
RVRFUikKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAoIWNsYXNzaWNFbmFibGVkKCkpCiAg
ICAgICAgICAgICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0ZSgm
bV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7CiAg
ICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAgICBy
ZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZy
YW1lKTsKKyNlbHNlIC8vIEVOQUJMRShDWFhfSU5URVJQUkVURVIpCisgICAgICAgIHJlc3VsdCA9
IGxsaW50Q1hYRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lKTsK
KyNlbmRpZiAvLyBFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQogCiAgICAgICAgIG1fcmVlbnRyeURl
cHRoLS07CiAgICAgfQpAQCAtMTMxNywxMiArMTM1MiwxNyBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNv
cmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBtX3JlZW50cnlE
ZXB0aCsrOyAgCisjaWYgIUVOQUJMRShDWFhfSU5URVJQUkVURVIpCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgICAgIGlmICghY2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1
bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JD
YWxsKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgY2FsbERhdGFTY29w
ZUNoYWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9y
bWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZWxzZSAvLyBFTkFCTEUoQ1hY
X0lOVEVSUFJFVEVSKQorICAgICAgICAgICAgcmVzdWx0ID0gbGxpbnRDWFhFeGVjdXRlKE5vcm1h
bCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2VuZGlmIC8vIEVOQUJMRShDWFhf
SU5URVJQUkVURVIpCisKICAgICAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgICAgIH0K
IApAQCAtMTQxMSwxMiArMTQ1MSwxNiBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
b25zdHJ1Y3QoCiAgICAgICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29y
ZChtX3NhbXBsZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisj
aWYgIUVOQUJMRShDWFhfSU5URVJQUkVURVIpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgICAg
IGlmICghY2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1
Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVj
dCgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGNvbnN0cnVjdERhdGFT
Y29wZUNoYWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUo
Tm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZWxzZSAvLyBFTkFCTEUo
Q1hYX0lOVEVSUFJFVEVSKQorICAgICAgICAgICAgcmVzdWx0ID0gbGxpbnRDWFhFeGVjdXRlKE5v
cm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2VuZGlmIC8vIEVOQUJMRShD
WFhfSU5URVJQUkVURVIpCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgICAgICB9
CiAKQEAgLTE1MTQsMTggKzE1NTgsMjcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShD
YWxsRnJhbWVDbAogICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZCht
X3NhbXBsZXIuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAot
I2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQorI2lmICFFTkFCTEUoQ1hY
X0lOVEVSUFJFVEVSKQorICAgICAgICAvLyogbWxhbSBWRVJJRllpbmcgdGhhdCBMTElOVCBkb2Vz
bid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVS
KQogICAgICAgICBpZiAoY2xvc3VyZS5uZXdDYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VK
SVQoKSkKICNlbmRpZgotICAgICAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUs
IGNsb3N1cmUubmV3Q2FsbEZyYW1lLCBjbG9zdXJlLmdsb2JhbERhdGEpOworICAgICAgICAvLyov
CisgICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yQ2FsbCgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxG
cmFtZSwgY2xvc3VyZS5nbG9iYWxEYXRhKTsKKyAgICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRo
YXQgTExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJ
Q19JTlRFUlBSRVRFUikKICAgICAgICAgZWxzZQogI2VuZGlmCi0jZW5kaWYKKyAgICAgICAgLy8q
LworI2Vsc2UgLy8gRU5BQkxFKENYWF9JTlRFUlBSRVRFUikKKyAgICAgICAgcmVzdWx0ID0gbGxp
bnRDWFhFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFt
ZSk7CisjZW5kaWYgLy8gRU5BQkxFKENYWF9JTlRFUlBSRVRFUikKKyAgICAgICAgLy8qIG1sYW0g
VkVSSUZZaW5nIHRoYXQgTExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBF
TkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVF
eGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CiAj
ZW5kaWYKKyAgICAgICAgLy8qLwogICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgIH0KIApA
QCAtMTYxOSwxOCArMTY3MiwyNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhCiAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsKICAgICAgICAgCi0jaWYgRU5BQkxF
KEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpCisjaWYgIUVOQUJMRShDWFhfSU5URVJQUkVU
RVIpCisgICAgICAgIC8vKiBtbGFtIFZFUklGWWluZyB0aGF0IExMSU5UIGRvZXNuJ3QgdXNlIHBy
aXZhdGVFeGVjdXRlKCk6CiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAg
IGlmIChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKICNlbmRpZgotICAgICAg
ICAgICAgcmVzdWx0ID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpLmV4ZWN1dGUoJm1fcmVnaXN0
ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpOworICAgICAgICAv
LyovCisgICAgICAgIHJlc3VsdCA9IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKS5leGVjdXRlKCZt
X3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBzY29wZUNoYWluLT5nbG9iYWxEYXRhKTsKKyAg
ICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQgTExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4
ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgZWxzZQog
I2VuZGlmCi0jZW5kaWYKKyAgICAgICAgLy8qLworI2Vsc2UgLy8gRU5BQkxFKENYWF9JTlRFUlBS
RVRFUikKKyAgICAgICAgcmVzdWx0ID0gbGxpbnRDWFhFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0
ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2VuZGlmIC8vIEVOQUJMRShDWFhfSU5URVJQUkVURVIp
CisgICAgICAgIC8vKiBtbGFtIFZFUklGWWluZyB0aGF0IExMSU5UIGRvZXNuJ3QgdXNlIHByaXZh
dGVFeGVjdXRlKCk6CiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgICAg
ICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2Fs
bEZyYW1lKTsKICNlbmRpZgorICAgICAgICAvLyovCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07
CiAgICAgfQogCkBAIC0xOTA2LDYgKzE5NjgsOCBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnBy
ZXRlcjo6dW5jYWNoZUdlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikK
IAorI2lmICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQorCiBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aWxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFsaXph
dGlvbiBvZiBvdXIgYWRkcmVzcyB0YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQpAQCAt
MTk5MSw5ICsyMDU1LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhl
YwogICAgICAgICAgICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOwogI2Vsc2UKICAgICAjZGVm
aW5lIERFRklORV9PUENPREUob3Bjb2RlKSBvcGNvZGU6IFVQREFURV9CWVRFQ09ERV9PRkZTRVQo
KTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShPUENPREVfU1RBVFMpCiAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwotI2Vsc2UKKyNlbHNlIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lD
X0lOVEVSUFJFVEVSKQogICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFNBTVBMRShjb2Rl
QmxvY2ssIHZQQyk7IGdvdG8gaW50ZXJwcmV0ZXJMb29wU3RhcnQKICNpZiBFTkFCTEUoT1BDT0RF
X1NUQVRTKQogICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShvcGNvZGUpIFwKQEAgLTIwMDYsNyAr
MjA3MCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICB3
aGlsZSAoMSkgeyAvLyBpdGVyYXRvciBsb29wIGJlZ2lucwogICAgIGludGVycHJldGVyTG9vcFN0
YXJ0OjsKICAgICBzd2l0Y2ggKHZQQy0+dS5vcGNvZGUpCi0jZW5kaWYKKyNlbmRpZiAvLyAhRU5B
QkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICB7CiAgICAgREVGSU5F
X09QQ09ERShvcF9uZXdfb2JqZWN0KSB7CiAgICAgICAgIC8qIG5ld19vYmplY3QgZHN0KHIpCkBA
IC01MzE3LDYgKzUzODEsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogI2VuZGlmIC8vIEVOQUJM
RShDTEFTU0lDX0lOVEVSUFJFVEVSKQogfQogCisjZW5kaWYgLy8gIUVOQUJMRShDWFhfSU5URVJQ
UkVURVIpCisKKwogSlNWYWx1ZSBJbnRlcnByZXRlcjo6cmV0cmlldmVBcmd1bWVudHNGcm9tVk1D
b2RlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikgY29uc3QKIHsK
ICAgICBDYWxsRnJhbWUqIGZ1bmN0aW9uQ2FsbEZyYW1lID0gZmluZEZ1bmN0aW9uQ2FsbEZyYW1l
RnJvbVZNQ29kZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsKQEAgLTUzODUsNyArNTQ1Miw3IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICBpZiAoIWNhbGxlckNv
ZGVCbG9jaykKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
MDsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikgfHwgRU5BQkxFKENYWF9JTlRFUlBSRVRFUikgLy8gbWxhbQogICAgIGlmICgh
Y2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
VlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyNSw3ICsyMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzT3Bj
b2RlKE9wY29kZSk7CiAKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxl
KiwgQ2FsbEZyYW1lKiwgU2NvcGVDaGFpbk5vZGUqLCBKU09iamVjdCogdGhpc09iaik7CisgICAg
ICAgIEpTVmFsdWUgZXhlY3V0ZV9tbGFtUChQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSos
IFNjb3BlQ2hhaW5Ob2RlKiwgSlNPYmplY3QqIHRoaXNPYmopOwogICAgICAgICBKU1ZhbHVlIGV4
ZWN1dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0
IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAg
SlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9u
LCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwog
ICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgU2NvcGVDaGFpbk5vZGUqKTsKQEAgLTI4MCw3ICsyODAsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIENhbGxGcmFtZSogZmluZEZ1bmN0aW9uQ2Fs
bEZyYW1lRnJvbVZNQ29kZShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKik7CiAKKyAgICAvKiBtbGFt
IFZFUklGWWluZyB0aGF0IExMSU5UIGRvZXNuJ3QgdXNlIHByaXZhdGVFeGVjdXRlKCk6CiAgICAg
ICAgIEpTVmFsdWUgcHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZywgUmVnaXN0ZXJGaWxlKiwg
Q2FsbEZyYW1lKik7CisgICAgKi8KKyAgICAgICAgSlNWYWx1ZSBsbGludENYWEV4ZWN1dGUoRXhl
Y3V0aW9uRmxhZywgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZyYW1lKiwgTExJbnQ6OkRhdGEqIGRhdGEg
PSAwKTsKIAogICAgICAgICB2b2lkIGR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKik7CiAgICAgICAg
IApAQCAtMjk0LDcgKzI5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVy
RmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxh
bSAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgLy8gbWxhbSAmJiAhRU5BQkxF
KENYWF9JTlRFUlBSRVRFUikgLy8gbWxhbQogICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7
IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1h
cDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9w
Y29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJ
Q19JTlRFUlBSRVRFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQzMSwxNyArMzQzMSwxNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1
YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9z
dEZ1bmN0aW9uU3R1Yl9tbGFtMShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsKICAgICBpZiAoTmF0
aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+
Z2V0KGZ1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiAKLSAgICBO
YXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3Jl
YXRlKCpnbG9iYWxEYXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1
bmN0aW9uKSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY29uc3RydWN0b3IsIE5vSW50cmluc2lj
KTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0
YWJsZTo6Y3JlYXRlX21sYW0oKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwo
Z2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjb25zdHJ1Y3Rv
ciwgTm9JbnRyaW5zaWMpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgZnVu
Y3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KG5hdGl2ZUV4ZWN1dGFibGUpKTsKICAg
ICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1
bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJp
bnNpYykKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yl9tbGFt
MihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVu
a0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgaWYgKE5h
dGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAt
PmdldChmdW5jdGlvbikpCiAgICAgICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwpAQCAtMzQ1
NSw3ICszNDU1LDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpbwog
ICAgIH0gZWxzZQogICAgICAgICBjb2RlID0gSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9i
YWxEYXRhLCBmdW5jdGlvbik7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBjb2RlLCBmdW5jdGlv
biwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0
aXZlQ29uc3RydWN0KCkpLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgaW50cmluc2lj
KTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0
YWJsZTo6Y3JlYXRlX21sYW0oKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qo
KSksIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpOwogICAgIHdlYWtB
ZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1
dGFibGU+KG5hdGl2ZUV4ZWN1dGFibGUpKTsKICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEyMzI3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEwLDcgKzMxMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY3RpVmlydHVhbENvbnN0cnVjdCgpIHsgcmV0dXJuIG1fdHJhbXBvbGluZVN0
cnVjdHVyZS5jdGlWaXJ0dWFsQ29uc3RydWN0OyB9CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBjdGlOYXRpdmVDYWxsKCkKICAgICAgICAgewotI2lmIEVOQUJMRShMTElOVCkKKy8vIG1s
YW0gI2lmIEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoTExJTlQpICYmICFFTkFCTEUoQ1hYX0lO
VEVSUFJFVEVSKQogICAgICAgICAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOwogI2VuZGlmCkBAIC0zMTgsNyArMzE5LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGN0aU5hdGl2ZUNvbnN0cnVjdCgpCiAgICAgICAgIHsKLSNpZiBFTkFCTEUoTExJTlQpCisv
LyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKENY
WF9JTlRFUlBSRVRFUikKICAgICAgICAgICAgIGlmICghbV9leGVjdXRhYmxlTWVtb3J5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwogI2VuZGlmCkBAIC0zMjcs
OCArMzI5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGN0aVN0dWIoSlNHbG9iYWxEYXRhKiwgVGh1bmtHZW5lcmF0b3IpOwogCi0gICAgICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsKLSAgICAgICAgTmF0aXZlRXhlY3V0
YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqLCBOYXRpdmVGdW5jdGlvbiwgVGh1
bmtHZW5lcmF0b3IsIEludHJpbnNpYyk7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RG
dW5jdGlvblN0dWJfbWxhbTEoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0
aW9uU3R1Yl9tbGFtMihKU0dsb2JhbERhdGEqLCBOYXRpdmVGdW5jdGlvbiwgVGh1bmtHZW5lcmF0
b3IsIEludHJpbnNpYyk7CiAKICAgICAgICAgdm9pZCBjbGVhckhvc3RGdW5jdGlvblN0dWJzKCk7
CiAKQEAgLTQ2OCw3ICs0NzAsMTQgQEAgZXh0ZXJuICJDIiB7CiAgICAgdm9pZCogSklUX1NUVUIg
Y3RpX3ZtX3Rocm93KFNUVUJfQVJHU19ERUNMQVJBVElPTikgUkVGRVJFTkNFRF9GUk9NX0FTTSBX
VEZfSU5URVJOQUw7CiB9IC8vIGV4dGVybiAiQyIKIAotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisj
ZWxzZSAvLyAhRU5BQkxFKEpJVCkKKworLy8gTmVlZGVkIGZvciB0aGUgTExJbnQgQysrIEludGVy
cHJldGVyIGJhY2tlbmQ6CitzdHJ1Y3QgSklUU3RhY2tGcmFtZSB7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhOworfTsKKworI2VuZGlmIC8vICFFTkFCTEUoSklUKQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0lu
dGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw5IEBACiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVQpIC8vIG1s
YW0KKwogICAgIGNsYXNzIEpTSW50ZXJmYWNlSklUIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIC8vIE5PVEVTOgpAQCAtMzMxLDYgKzMzNCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZpcnR1YWxSZWdpc3RlckluZGV4KSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9
CiAKLX0KKyNlbmRpZiAvLyBFTkFCTEUoSklUKSAvLyBtbGFtCisKK30gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSlNJbnRlcmZhY2VKSVRfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCAr
MjcsMTAgQEAKICNkZWZpbmUgTExJbnRDb21tb25faAogCiAvLyBQcmludCBldmVyeSBpbnN0cnVj
dGlvbiBleGVjdXRlZC4KLSNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2RlZmlu
ZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAxCiAKIC8vIFByaW50IHNvbWUgaW5mb3JtYXRpb24g
Zm9yIHNvbWUgb2YgdGhlIG1vcmUgc3VidGxlIHNsb3cgcGF0aHMuCi0jZGVmaW5lIExMSU5UX1NM
T1dfUEFUSF9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcgMQogCiAv
LyBEaXNhYmxlIGlubGluZSBhbGxvY2F0aW9uIGluIHRoZSBpbnRlcnByZXRlci4gVGhpcyBpcyBn
cmVhdCBpZiB5b3UncmUgY2hhbmdpbmcKIC8vIGhvdyB0aGUgR0MgYWxsb2NhdGVzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDEyMzI3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5o
IgogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNs
dWRlICJJbnRlcnByZXRlci5oIiAvLyBtbGFtCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCkBAIC00MCwxMSArNDEsMTMgQEAgRGF0YTo6RGF0
YSgpCiAgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bj
b2RlTGVuZ3RoICsgMV0pCiAgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlE
c10pCiB7CisjaWYgIUVOQUJMRShDWFhfSU5URVJQUkVURVIpCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCiAgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zy
b21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwogI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBs
ZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8j
I29wY29kZSk7CiAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CiAjdW5kZWYg
T1BDT0RFX0VOVFJZCisjZW5kaWYgLy8gIUVOQUJMRShDWFhfSU5URVJQUkVURVIpCiB9CiAKICNp
ZiBDT01QSUxFUihDTEFORykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorI2lm
ICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKSAvLyBtbGFtCisKIHZvaWQgZ2V0RnVuY3Rpb25FbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2sp
CiB7CiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CkBAIC04Myw2ICs4NSw4IEBA
IHZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiAKICAgICBqaXRDb2RlID0g
SklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKIH0KIAorI2VuZGlmIC8vICFFTkFCTEUoQ1hY
X0lOVEVSUFJFVEVSKSAvLyBtbGFtCisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCiAj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw5ICs0NCwxNSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUq
CiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNl
cHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgZ2VuZXJpY1Rocm93KAogICAgICAgICBn
bG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCiAgICAgICAgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLCBwYykpOworI2Vsc2UKKyAgICAvLyBtbGFt
IEZJWE1FCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFVOVVNFRF9QQVJBTShwYyk7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogfQogCiBJbnN0cnVjdGlvbiogcmV0dXJuVG9U
aHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCkBAIC02MSw4ICs2NywxNCBA
QCBJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4CiAjaWYgTExJTlRfU0xP
V19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVy
blRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbSBGSVhNRQogICAgIGdlbmVyaWNUaHJvdyhnbG9i
YWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwotICAgIAorI2Vsc2UKKyAgICAvLyBtbGFtIEZJ
WE1FCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFVOVVNFRF9QQVJBTShwYyk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkgLy9tbGFtIEZJWE1FCisKICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+
bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwogfQogCkBAIC03Myw5ICs4NSwxOSBA
QCB2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RyCiAjaWYgTExJTlRfU0xP
V19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxU
b1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0gRklYTUUKICAgICBnZW5lcmljVGhyb3coZ2xvYmFs
RGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyNlbHNlCisgICAgLy8gbWxhbSBGSVhNRQorICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBVTlVTRURfUEFSQU0ocGMpOworI2VuZGlmIC8vIEVO
QUJMRShKSVQpIC8vbWxhbSBGSVhNRQogICAgIAorI2lmIEVOQUJMRShDWFhfSU5URVJQUkVURVIp
CisgICAgcmV0dXJuIE5VTEw7IC8vIG1sYW0gRklYTUUKKyNlbHNlCiAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworI2Vu
ZGlmCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNp
b24gMTIzMjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOSArMzEsMjYgQEAKICNpbmNsdWRlIDx3
dGYvSW5saW5lQVNNLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBDUFUoWDg2
KQorCisjaWYgRU5BQkxFKENYWF9JTlRFUlBSRVRFUikKKyNkZWZpbmUgT0ZGTElORV9BU01fQ1hY
X0lOVEVSUFJFVEVSIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0NYWF9JTlRFUlBSRVRF
UiAwCisjZW5kaWYKKworI2lmIENQVShYODYpICYmICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQog
I2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQogI2Vsc2UKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKEFSTV9USFVNQjIpICYm
ICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQogI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCiAj
ZWxzZQogI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCiAjZW5kaWYKIAotI2lmIENQVShYODZf
NjQpCisjaWYgQ1BVKFg4Nl82NCkgJiYgIUVOQUJMRShDWFhfSU5URVJQUkVURVIpCiAjZGVmaW5l
IE9GRkxJTkVfQVNNX1g4Nl82NCAxCiAjZWxzZQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZfNjQg
MApAQCAtOTEsNiArOTgsOCBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9WQUxVRV9QUk9GSUxFUiAw
CiAjZW5kaWYKIAorI2lmICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQorCiAvLyBUaGVzZSBhcmUg
Zm9yIGJ1aWxkaW5nIGFuIGludGVycHJldGVyIGZyb20gZ2VuZXJhdGVkIGFzc2VtYmx5IGNvZGU6
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0JFR0lOICAgYXNtICgKICNkZWZpbmUgT0ZGTElORV9BU01f
RU5EICAgICApOwpAQCAtMTExLDQgKzEyMCwxNCBAQAogCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKGxhYmVsKSAgIExPQ0FMX0xBQkVMX1NUUklORyhsYWJlbCkgIjpcbiIKIAorI2Vs
c2UgLy8gRU5BQkxFKENYWF9JTlRFUlBSRVRFUikKKworLy8gVGhlc2UgYXJlIGZvciBidWlsZGlu
ZyBhIEMrKyBpbnRlcnByZXRlcjoKKyNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4KKyNkZWZpbmUg
T0ZGTElORV9BU01fRU5ECisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkg
IGxhYmVsOgorI2RlZmluZSBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChsYWJlbCkgICBsYWJlbDoK
KworI2VuZGlmIC8vIEVOQUJMRShDWFhfSU5URVJQUkVURVIpCisKICNlbmRpZiAvLyBMTEludE9m
ZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw3ICs2MSw4IEBAIHB1YmxpYzoKIAogY29uc3QgdW5zaWduZWQqIExM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQogewotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFt
ICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKIC8vIFRo
aXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0
cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQogLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zm
c2V0cywgc2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9m
CiAvLyBQbGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUg
b2YgYSBtZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMzI3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIK
ICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorI2luY2x1ZGUgIlByb2ZpbGVyLmgiIC8vIG1sYW0KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CiAKQEAgLTcyLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CiAjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51
Lm9wZXJhbmQpKQogCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8g
eyAgICAgICBcCi0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmlyc3QsIHNlY29uZCk7ICAg
ICAgICBcCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocmVpbnRlcnByZXRfY2FzdDxJbnN0
cnVjdGlvbio+KGZpcnN0KSwgc2Vjb25kKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVm
aW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKQEAgLTI2NCw2
ICsyNjUsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQogLy8gUmV0
dXJucyB0cnVlIGlmIHdlIHNob3VsZCB0cnkgdG8gT1NSLgogaW5saW5lIGJvb2wgaml0Q29tcGls
ZUFuZFNldEhldXJpc3RpY3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgY29kZUJsb2NrLT51cGRhdGVBbGxQcmVk
aWN0aW9ucygpOwogICAgIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmSklUVGhyZXNob2xk
UmVhY2hlZCgpKSB7CkBAIC0yOTYsOCArMjk4LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVB
bmRTZXRIZXVyaXN0aWNzKEMKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGZhbHNlOworI2Vsc2UgLy8gIUVOQUJMRShKSVQpCisgICAgVU5VU0VEX1BBUkFNKGNv
ZGVCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZiAvLyAhRU5BQkxFKEpJVCkKIH0KIAorI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KIGVudW0g
RW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKIHsKQEAgLTM5
MCw2ICszOTgsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQogICAgICAgICBjb2Rl
QmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChyZWdp
c3Rlcl9maWxlX2NoZWNrKQogewpAQCAtODk2LDEwICs5MDUsMTggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUu
c2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5j
YWNoZWRPZmZzZXQoKSkpIHsKKyNpZiBFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQorICAgICAgICAg
ICAgICAgIC8vIG1sYW0gRklYTUUKKyNlbHNlCiAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworI2VuZGlmCiAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoQ1hYX0lO
VEVSUFJFVEVSKQorICAgICAgICAgICAgICAgIC8vIG1sYW0gRklYTUUKKyNlbHNlCiAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9n
ZXRfYnlfaWRfb3V0X29mX2xpbmUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05NTEsNyArOTY4
LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1
c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgIC8vIGJl
bG93IG1heSBHQy4KKyNpZiBFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQorICAgICAgICAgICAgICAg
ICAgICAvLyBtbGFtIEZJWE1FCisjZWxzZQogICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisjZW5kaWYK
IAogICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNl
Q2VsbCk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtOTcwLDI1ICs5OTEsNDEgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFu
ZCkgeworI2lmIEVOQUJMRShDWFhfSU5URVJQUkVURVIpCisgICAgICAgICAgICAgICAgICAgIC8v
IG1sYW0gRklYTUUKKyNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyNl
bmRpZgogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShDWFhfSU5URVJQ
UkVURVIpCisgICAgICAgICAgICAgICAgICAgIC8vIG1sYW0gRklYTUUKKyNlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEs
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisjaWYgRU5BQkxF
KENYWF9JTlRFUlBSRVRFUikKKyAgICAgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRQorI2Vs
c2UKICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShDWFhfSU5URVJQUkVURVIpCisg
ICAgICAgICAgICAgICAgICAgIC8vIG1sYW0gRklYTUUKKyNlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkX291dF9vZl9saW5lKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTM3
Myw3ICsxNDEwLDExIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisjaWYgRU5B
QkxFKEpJVCkgLy8gbWxhbSBGSVhNRQogICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworI2Vsc2UKKyAgICAgICAg
OyAvLyBtbGFtIEZJWE1FCisjZW5kaWYgLy8gbWxhbSBGSVhNRQogICAgIGVsc2UgewogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogICAgICAgICBKU09iamVjdCogZXJyb3Ig
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29w
ZSgpLCBraW5kKTsKQEAgLTEzODEsMTAgKzE0MjIsMTIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBzZXRVcENhbGwoRXhlYwogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSAmZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKICAgICAgICAgQVNT
RVJUKGNvZGVCbG9jayk7CisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbSBGSVhNRQogICAgICAgICBp
ZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0
PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQogICAgICAgICAgICAgY29kZVB0
ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9y
KGtpbmQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisjZW5k
aWYgLy8gbWxhbSBGSVhNRQogICAgIH0KICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvKSB7CkBA
IC0xNDY2LDcgKzE1MDksOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9l
dmFsCiAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAg
IGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyNpZiAhRU5B
QkxFKENYWF9JTlRFUlBSRVRFUikgLy8gbWxhbSBGSVhNRQogICAgIGV4ZWNDYWxsZWUtPnNldFJl
dHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9w
b2ludCkpOworI2VuZGlmCiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogICAgIGV4
ZWMtPnNldEN1cnJlbnRWUEMocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOwogICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNiArNDMsMzIgQEAgbmFtZXNwYWNlIExM
SW50IHsKIC8vICdleHRlcm4gIkMiJykgbmVlZHMgdG8gYmUgUE9EOyBoZW5jZSBwdXR0aW5nIGFu
eSBjb25zdHJ1Y3RvcnMgaW50byBpdCBjb3VsZCBjYXVzZSBlaXRoZXIgY29tcGlsZXIKIC8vIHdh
cm5pbmdzLCBvciB3b3JzZSwgYSBjaGFuZ2UgaW4gdGhlIEFCSSB1c2VkIHRvIHJldHVybiB0aGVz
ZSB0eXBlcy4KIHN0cnVjdCBTbG93UGF0aFJldHVyblR5cGUgewotICAgIHZvaWQqIGE7Ci0gICAg
dm9pZCogYjsKKyAgICBJbnN0cnVjdGlvbiogYTsKKyAgICBFeGVjU3RhdGUqIGI7CiB9OwogCi1p
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCB2b2lkKiBiKQor
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQoSW5zdHJ1Y3Rpb24qIGEsIEV4
ZWNTdGF0ZSogYikKIHsKICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0OwogICAgIHJlc3Vs
dC5hID0gYTsKICAgICByZXN1bHQuYiA9IGI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKworaW5s
aW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIEluc3RydWN0
aW9uKiYgYSwgRXhlY1N0YXRlKiYgYikKK3sKKyAgICBhID0gcmVzdWx0LmE7CisgICAgYiA9IHJl
c3VsdC5iOworfQogI2Vsc2UKIHR5cGVkZWYgaW50NjRfdCBTbG93UGF0aFJldHVyblR5cGU7CiAK
LWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIHZvaWQqIGIp
CitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdChJbnN0cnVjdGlvbiogYSwg
RXhlY1N0YXRlKiBiKQogewogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgIHZvaWQqIGE7Ci0gICAgICAgICAgICB2b2lkKiBiOworICAgICAgICAgICAgSW5zdHJ1Y3Rp
b24qIGE7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGI7CiAgICAgICAgIH0gcGFpcjsKICAgICAg
ICAgaW50NjRfdCBpOwogICAgIH0gdTsKQEAgLTcwLDYgKzc2LDIwIEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHYKICAgICB1LnBhaXIuYiA9IGI7CiAgICAgcmV0dXJu
IHUuaTsKIH0KKworaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQsIEluc3RydWN0aW9uKiYgYSwgRXhlY1N0YXRlKiYgYikKK3sKKyAgICB1bmlvbiB7Cisg
ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogYTsKKyAgICAgICAgICAg
IEV4ZWNTdGF0ZSogYjsKKyAgICAgICAgfSBwYWlyOworICAgICAgICBpbnQ2NF90IGk7CisgICAg
fSB1OworICAgIHUuaSA9IHJlc3VsdDsKKyAgICBhID0gdS5wYWlyLmE7CisgICAgYiA9IHUucGFp
ci5iOworfQogI2VuZGlmCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQg
b3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKKyNpZiAhRU5BQkxFKENYWF9JTlRFUlBSRVRF
UikKKwogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIg
KnRodW5rS2luZCkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CkBAIC03OCw2ICs4MCw4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0cKICAgICByZXR1cm4gZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwg
InByb2dyYW0iKTsKIH0KIAorI2VuZGlmIC8vICFFTkFCTEUoQ1hYX0lOVEVSUFJFVEVSKQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIAogI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtODQsOCArODQsOCBAQCBjb25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKIAogIyBV
dGlsaXRpZXMKIG1hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCi0gICAgYWRkcCBhZHZhbmNlICogNCwg
UEMKLSAgICBqbXAgW1BDXQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CisgICAgam1wIFtQQ10gICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKIGVuZAogCiBtYWNybyBkaXNwYXRjaEJy
YW5jaFdpdGhPZmZzZXQocGNPZmZzZXQpCkBAIC0xMDAsMjEgKzEwMCwyNCBAQCBtYWNybyBkaXNw
YXRjaEJyYW5jaChwY09mZnNldCkKIGVuZAogCiBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCi0g
ICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwotICAgIGptcCBbUENd
CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQyAgICAvLyBwYyA9
IGNmci5Bcmd1bWVudENvdW50LlRhZzsgLy8gUmVsb2FkIGEgcHJldmlvdXNseSBzdGFzaGVkIHJl
dHVyblBDLgorICAgIGptcCBbUENdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byAqcGM7CiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQog
ICAgIGlmIEFSTXY3Ci0gICAgICAgIG1vdmUgYXJnMSwgdDAKLSAgICAgICAgbW92ZSBhcmcyLCB0
MQorICAgICAgICBtb3ZlIGFyZzEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJn
MSA9IC4uLjsKKyAgICAgICAgbW92ZSBhcmcyLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFyZzIgPSAuLi47CisgICAgICAgIGNhbGwgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb247CiAgICAgZWxzaWYgWDg2Ci0gICAgICAgIHBva2Ug
YXJnMSwgMAotICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmcxLCAwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAgICAgIHBva2UgYXJnMiwg
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcyID0gLi4uOworICAgICAgICBjYWxs
IGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uOwor
ICAgIGVsc2lmIENYWF9JTlRFUlBSRVRFUgorICAgICAgICBjeHhDYWxsU2xvd1BhdGggZnVuY3Rp
b24sIGFyZzEsIGFyZzIgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgIGVs
c2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKLSAgICBjYWxsIGZ1bmN0aW9uCiBlbmQKIAogIyBU
aGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRp
YXRlcy4KQEAgLTEyOSw2ICsxMzIsMTEgQEAgbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBh
cmcyLCBhcmczLAogICAgICAgICBwb2tlIGFyZzIsIDEKICAgICAgICAgcG9rZSBhcmczLCAyCiAg
ICAgICAgIHBva2UgYXJnNCwgMworICAgIGVsc2lmIENYWF9JTlRFUlBSRVRFUgorICAgICAgICBt
b3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0
MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCiAgICAgZWxzZQogICAgICAgICBlcnJvcgogICAgIGVu
ZApAQCAtMTM3LDggKzE0NSw4IEBAIGVuZAogCiBtYWNybyBjYWxsU2xvd1BhdGgoc2xvd1BhdGgp
CiAgICAgY0NhbGwyKHNsb3dQYXRoLCBjZnIsIFBDKQotICAgIG1vdmUgdDAsIFBDCi0gICAgbW92
ZSB0MSwgY2ZyCisgICAgbW92ZSB0MCwgUEMgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgorICAgIG1vdmUgdDEsIGNmciAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5leGVjU3RhdGU8dDE+CiBlbmQKIAogIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlv
dSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBm
cm9tV2hlcmUKQEAgLTE4NiwxNyArMTk0LDE3IEBAIGVuZAogIyBJbmRleCwgdGFnLCBhbmQgcGF5
bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAogIyBjaGFuZ2Vk
LgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQotICAg
IGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAotICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCi0gICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAotICAgIGptcCAuZG9uZQorICAgIGJpZ3RlcSBp
bmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBj
ZnJbaW5kZXg8YTA+LlBheWxvYWQ7CisgICAgam1wIC5kb25lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIGdvdG8gLmRvbmU7CiAuY29uc3RhbnQ6Ci0gICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHBheWxvYWQKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgcGF5bG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7Cisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3BheWxvYWRdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxh
Mj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgICAj
IFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFs
dWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCiAgICAgIyB0aGVuIHZhbHVlIDw8IDMg
d2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwg
My4KLSAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKLSAgICBsb2Fk
cCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGxvYWRwIFRh
Z09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEy
PltpbmRleDxhMD5dLlRhZzsKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgcGF5bG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsK
IC5kb25lOgogZW5kCiAKQEAgLTIxNSwzNSArMjIzLDM5IEBAIGVuZAogCiAjIEluZGV4IGFuZCBw
YXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4K
IG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCi0g
ICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0g
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCi0gICAgam1wIC5kb25lCisgICAgLy8gbWFj
cm86IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKKyAg
ICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+
XS5UYWc7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxv
YWQ8YTI+ID0gY2ZyW2luZGV4PGEwPl0uUGF5bG9hZDsKKyAgICBqbXAgLmRvbmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKIC5jb25zdGFudDoKLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdGFnCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0
ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdGFnXSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEx
PiA9IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgICMg
VGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1
ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3
aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAz
LgotICAgIGxzaGlmdGkgMywgaW5kZXgKLSAgICBhZGRwIGluZGV4LCB0YWcKLSAgICBsb2FkcCBQ
YXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKLSAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFn
CisgICAgbHNoaWZ0aSAzLCBpbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxh
MD4gPSBpbmRleDxhMD4gPDwgMzsKKyAgICBhZGRwIGluZGV4LCB0YWcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07
CisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+
ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIHRhZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwogLmRvbmU6CisgICAgLy8g
fSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiBlbmQKIAogbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXls
b2FkKQotICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25z
dGFudAotICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKLSAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCi0gICAgam1wIC5kb25lCisgICAg
Ly8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRh
Z0NoZWNrLCBwYXlsb2FkKSB7CisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAgIGlmIChpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29u
c3RhbnQ7CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZ0No
ZWNrKGNmcltpbmRleF0uVGFnKTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKKyAgICBqbXAgLmRvbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKIC5jb25zdGFudDoKLSAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25z
dGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9h
ZD4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lz
dGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZCAgICAgICAgICAgICAg
ICAgLy8gICB2ZWN0b3JCdWZmZXI8cGF5bG9hZD4gPSBjb2RlQmxvY2s8cGF5bG9hZD4uY29uc3Rh
bnRSZWdpc3RlcnMudmVjdG9yZUJ1ZmZlcjsKICAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwg
aGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsCiAgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KLSAgICB0YWdDaGVjayhUYWdPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwg
aW5kZXgsIDhdLCBwYXlsb2FkCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAgIHRhZ0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uVGFnKTsKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1
ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsKIC5kb25lOgorICAgIC8vIH0gRU5EIG1hY3Jv
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tLgogZW5kCiAKICMgSW5kZXgg
YW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0
YXRlZC4gVXNlCkBAIC0yNTIsMTAgKzI2NCwxNCBAQCBlbmQKICMgYmUgZmFzdGVyIHRoYW4gZG9p
bmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKICMg
dGFnLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVk
VGFnLCBwYXlsb2FkLCBzbG93KQorICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykgewogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAogICAgICAgICBpbmRleCwKLSAgICAgICAg
bWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQs
Ci0gICAgICAgIHBheWxvYWQpCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpCisgICAgICAgICAg
ICBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93ICAvLyAgIGlmIChhY3R1YWxUYWcg
IT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CisgICAgICAgIGVuZCwKKyAgICAgICAgcGF5bG9h
ZCkgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oLi4uKTsKKyAgICAv
LyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KIGVuZAogCiBtYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkK
QEAgLTI3MSw4ICsyODcsMTAgQEAgZW5kCiAKIG1hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxv
YWQsIHByb2ZpbGUpCiAgICAgaWYgVkFMVUVfUFJPRklMRVIKLSAgICAgICAgc3RvcmVpIHRhZywg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0KLSAgICAgICAgc3Rv
cmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9m
aWxlXQorICAgIC8vIG1hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2ZpbGUgaS5l
LiBvcmFjbGVDYWNoZUlkKSB7CisgICAgICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9i
dWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdICAgICAgICAgICAgLy8gICBWYWx1ZVByb2ZpbGU6
OmJ1Y2tldHNbb3JhY2xlQ2FjaGVJZF0uVGFnID0gdGFnPGEwPjsKKyAgICAgICAgc3RvcmVpIHBh
eWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXSAg
ICAvLyAgIFZhbHVlUHJvZmlsZTo6YnVja2V0c1tvcmFjbGVDYWNoZUlkXS5QYXlsb2FkID0gcGF5
bG9hZDxhMT47CisgICAgLy8gfSBFTkQgdmFsdWVQcm9maWxlLgogICAgIGVuZAogZW5kCiAKQEAg
LTI5OSw2MzEgKzMxNyw5NDYgQEAgZW5kCiAKICMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25z
CiAKKy8vIGJ5dGVjb2RlOiBlbnRlcgorLy8gZnVuY3Rpb246IGZvciBlYWNoIGlkIGluIGxvY2Fs
cyB7IGNmcltpZF0gPSB1bmRlZmluZWQ7IH0KKy8vCisvLyAgIEluaXRpYWxpemVzIGxvY2FsIHZh
cmlhYmxlcyB0byB1bmRlZmluZWQuIElmIHRoZSBjb2RlIGJsb2NrIHJlcXVpcmVzCisvLyAgIGFu
IGFjdGl2YXRpb24sIGVudGVyX3dpdGhfYWN0aXZhdGlvbiBpcyB1c2VkIGluc3RlYWQuCisvLyAg
IFRoaXMgb3Bjb2RlIGFwcGVhcnMgb25seSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9j
ay4KKwogX2xsaW50X29wX2VudGVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJsb2NrPiA9IGNmci5D
b2RlQmxvY2sKLSAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8g
dDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgYnRpeiB0MiwgLm9wRW50
ZXJEb25lCi0gICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCi0gICAgbW92ZSAwLCB0MQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAgICAgICAgICAvLyBjb2RlQmxvY2s8dDI+ID0g
Y2ZyLkNvZGVCbG9jazsKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAg
ICAgLy8gbnVtVmFyczx0Mj4gPSBjb2RlQmxvY2s8dDI+Lm1fbnVtVmFyczsKKyAgICBidGl6IHQy
LCAub3BFbnRlckRvbmUgICAgICAgICAgICAgICAgICAgLy8gaWYgKG51bVZhcnM8dDI+ID09IDAp
IGdvdG8gLmRvbmU7CisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwICAgICAgICAgICAgICAgICAg
IC8vIGpzVW5kZWZpbmVkPHQwPiA9IFVuZGVmaW5lZFRhZzsKKyAgICBtb3ZlIDAsIHQxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gemVybzx0MT4gPSAwOwogLm9wRW50ZXJMb29wOgot
ICAgIHN1YmkgMSwgdDIKLSAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGJ0aW56IHQyLCAub3BF
bnRlckxvb3AKKyAgICBzdWJpIDEsIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBudW1WYXJzPHQyPi0tOworICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAg
ICAgICAvLyAgIGNmcltudW1WYXJzPHQyPl0uVGFnID0ganNVbmRlZmluZWQ8dDA+OworICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAvLyAgIGNmcltudW1WYXJzPHQy
Pl0uUGF5bG9hZCA9IHplcm88dDE+OworICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AgICAgICAg
ICAgICAgICAgICAvLyBpZiAobnVtVmFyczx0Mj4gIT0gMCkgZ290byAubG9vcDsKIC5vcEVudGVy
RG9uZToKLSAgICBkaXNwYXRjaCgxKQorICAgIGRpc3BhdGNoKDEpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IGNyZWF0
ZV9hY3RpdmF0aW9uIGRzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IG5ldyBB
Y3RpdmF0aW9uKCkgaWYgbm90IGFscmVhZHkgcHJlc2VudDsKKy8vCisvLyAgIElmIHRoZSBhY3Rp
dmF0aW9uIG9iamVjdCBmb3IgdGhpcyBjYWxsZnJhbWUgaGFzIG5vdCB5ZXQgYmVlbiBjcmVhdGVk
LAorLy8gICB0aGlzIGNyZWF0ZXMgaXQgYW5kIHdyaXRlcyBpdCBiYWNrIHRvIGRzdC4KKwogX2xs
aW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2Fk
aSA0W1BDXSwgdDAKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pCisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmF0aW9uUmVn
PHQwPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lIC8vIGlmIChjZnJbYWN0
aXZhdGlvblJlZzx0MD5dLlRhZyAhPSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5kb25lOworICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKSAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb247CiAub3BDcmVhdGVB
Y3RpdmF0aW9uRG9uZToKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDIpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBpbml0X2xhenlfcmVnIGRzdFJlZ0lkCisv
LyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IEpTVmFsdWUoKTsKKy8vCisvLyAgIEluaXRpYWxp
c2VzIGRzdChyKSB0byBKU1ZhbHVlKCkuCisvLyAgIFRoaXMgb3Bjb2RlIGFwcGVhcnMgb25seSBh
dCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KIAogX2xsaW50X29wX2luaXRfbGF6eV9y
ZWc6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIHN0b3Jl
aSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgMCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIGRpc3BhdGNoKDIpCisgICAgbG9hZGkgNFtQQ10s
IHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2Rz
dDx0MD5dLlRhZyA9IEVtcHR5VmFsdWVUYWc7CisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0PHQw
Pl0uUGF5bG9hZCA9IDA7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IAorLy8gYnl0ZWNvZGU6IGNyZWF0ZV9hcmd1bWVudHMgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBj
ZnJbZHN0UmVnSWRdID0gbmV3IEFyZ3VtZW50cygpIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQ7Cisv
LworLy8gICBDcmVhdGVzIHRoZSAnYXJndW1lbnRzJyBvYmplY3QgYW5kIHBsYWNlcyBpdCBpbiBi
b3RoIHRoZQorLy8gICAnYXJndW1lbnRzJyBjYWxsIGZyYW1lIHNsb3QgYW5kIHRoZSBsb2NhbCAn
YXJndW1lbnRzJworLy8gICByZWdpc3RlciwgaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gaW5p
dGlhbGlzZWQuCisKIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQorICAgIGxvYWRpIDRbUENdLCB0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZHN0PHQwPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUgIC8vIGlmIChjZnJb
ZHN0PHQwPl0uVGFnICE9IEVtcHR5VmFsdWVUYWcpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzOwogLm9wQ3JlYXRlQXJndW1lbnRz
RG9uZToKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBvcF9jcmVhdGVfdGhpcyB0aGlzUmVnSWQKKy8vIGZ1bmN0
aW9uOiBjZnJbdGhpc1JlZ0lkXSA9IG5ldyBPYmplY3QoY3VycmVudCBQcm90bz8pOworLy8gbWxh
bSBGSVhNRTogSG93IGRvZXMgdGhlIGNhY2hlZEluaGVyaXRvciBnZXQgcG9wdWxhdGVkPworLy8g
ICAgICAgQ2xhc3NpYyBzcGVjaWZpZXMgYSAybmQgb3BlcmFuZCBwcm90byhyKSwgYnV0IG91ciBk
aXNwYXRjaCBiZWxvdyBpZ25vcmVzIGl0LgorLy8KKy8vICAgQWxsb2NhdGUgYW4gb2JqZWN0IGFz
ICd0aGlzJywgZm9yIHVzZSBpbiBjb25zdHJ1Y3Rpb24uCisvLyAgIFRoaXMgb3Bjb2RlIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNvZGUgYmxvY2suCisKIF9sbGlu
dF9vcF9jcmVhdGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAgQ2FsbGVl
W2Nmcl0sIHQwCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9jYWNoZWRJbmhlcml0b3JJRFt0MF0s
IHQyCi0gICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBDYWxsZWVbY2Zy
XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRo
aXM8dDA+ID0gY2ZyLkNhbGxlZTsKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVy
aXRvcklEW3QwXSwgdDIgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaGVyaXRvcjx0Mj4gPSB0
aGlzPHQwPi5jYWNoZWRJbmhlcml0b3JJRDsKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xv
dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChpbmhlcml0
b3IgPT0gMCkgZ290byAuc2xvdzsKKyAgICAvLyBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5h
bE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0lu
Zm8sIGluaGVyaXRvcjx0Mj4sIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KTsKICAgICBh
bGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2Jh
bERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVU
aGlzU2xvdykKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
Ci0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXNJRDx0MT4gPSBvcGVyYW5k
c1t0aGlzUmVnSWRdOworICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3RoaXNJRDx0MT5dLlRhZyA9IENl
bGxUYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbdGhpc0lEPHQxPl0uUGF5bG9hZCA9IHRoaXM8
dDA+OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BDcmVhdGVU
aGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykK
LSAgICBkaXNwYXRjaCgyKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0
ZV90aGlzKSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRl
X3RoaXM7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0
ZWNvZGU6IGNvbnZlcnRfdGhpcyB0aGlzUmVnSWQgb3JhY2xlQ2FjaGVJZAorLy8gZnVuY3Rpb246
IGNmclt0aGlzUmVnSWRdID0gQ29udmVydFRvVGhpcyhjZnJbdGhpc1JlZ0lkXSk7CisvLworLy8g
ICBUYWtlcyB0aGUgdmFsdWUgaW4gdGhlICd0aGlzJyByZWdpc3RlciwgY29udmVydHMgaXQgdG8g
YQorLy8gICB2YWx1ZSB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlICd0aGlzJyB2YWx1
ZSwgYW5kCisvLyAgIHN0b3JlcyBpdCBpbiB0aGUgJ3RoaXMnIHJlZ2lzdGVyLiBUaGlzIG9wY29k
ZSBpcyBlbWl0dGVkCisvLyAgIHRvIGF2b2lkIGRvaW5nIHRoZSBjb252ZXJzaW9uIGluIHRoZSBj
YWxsZXIgdW5uZWNlc3NhcmlseS4KKy8vCisvLyAgIFRoaXMgb3Bjb2RlIHNob3VsZCBvbmx5IGJl
IHVzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNvZGUKKy8vICAgYmxvY2suCisKIF9sbGludF9v
cF9jb252ZXJ0X3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0
MAotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRo
aXNTbG93Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xv
dwotICAgIGxvYWRpIDhbUENdLCB0MQotICAgIHZhbHVlUHJvZmlsZShDZWxsVGFnLCB0MCwgdDEp
Ci0gICAgZGlzcGF0Y2goMykKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXNJRDx0MD4gPSBvcGVyYW5k
c1t0aGlzUmVnSWRdOworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywg
Lm9wQ29udmVydFRoaXNTbG93ICAgICAgICAgICAgLy8gaWYgKGNmclt0aGlzSUQ8dDA+XS5UYWcg
IT0gQ2VsbFRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXM8dDA+ID0gY2Zy
W3RoaXNJRDx0MD5dLlBheWxvYWQ7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDA+ID0g
dGhpczx0MD4uc3RydWN0dXJlOworICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93ICAgIC8vIGlm
IChzdHJ1Y3R1cmU8dDA+LnR5cGVJbmZvLnR5cGUgPCBPYmplY3RUeXBlKSBnb3RvIC5zbG93Owor
ICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gb3JhY2xlSWQ8dDE+ID0gb3BlcmFuZHNbb3JhY2xlQ2FjaGVJZF07
CisgICAgdmFsdWVQcm9maWxlKENlbGxUYWcsIHQwLCB0MSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywgc3RydWN0dXJlPHQwPiwg
b3JhY2xlSWQ8dDE+KTsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAog
Lm9wQ29udmVydFRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2Nv
bnZlcnRfdGhpcykKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2NvbnZlcnRfdGhpcykgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93
X3BhdGhfY29udmVydF90aGlzOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogCiAKKy8vIGJ5dGVjb2RlOiBuZXdfb2JqZWN0IGRzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2Zy
W2RzdFJlZ0lkXSA9IG5ldyBPYmplY3QoKTsKKy8vCisvLyAgIENvbnN0cnVjdHMgYSBuZXcgZW1w
dHkgT2JqZWN0IGluc3RhbmNlIHVzaW5nIHRoZSBvcmlnaW5hbAorLy8gICBjb25zdHJ1Y3Rvciwg
YW5kIHB1dHMgdGhlIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uZXdfb2Jq
ZWN0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
LSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBK
U0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2Rl
QmxvY2s8dDA+ID0gY2ZyLkNvZGVCbG9jazsKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbE9iamVjdDx0MD4gPSBjb2Rl
QmxvY2s8dDA+Lmdsb2JhbE9iamVjdDsKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0
eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxICAgIC8vIGVtcHR5U3RydWN0dXJlPHQxPiA9IGdsb2Jh
bE9iamVjdDx0MD4uZW1wdHlPYmplY3RTdHJ1Y3R1cmU7CisgICAgLy8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFs
T2JqZWN0Q2xhc3NJbmZvLCBlbXB0eVN0cnVjdHVyZTx0MT4sIHQwLCB0MiwgdDMsIC5vcE5ld09i
amVjdFNsb3cpOwogICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNs
YXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0
MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCi0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgc3RvcmVp
IENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpCisgICAgbG9hZGkgNFtQQ10sIHQxICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MT4gPSBvcGVy
YW5kc1tkc3RSZWdJZF07CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5UYWcgPSBDZWxsVGFnOworICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IGFsbG9jYXRlZE9iamVjdDx0MD47CisgICAgZGlz
cGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcE5ld09iamVjdFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X29iamVjdCkKLSAgICBkaXNwYXRjaCgyKQorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19vYmplY3QpICAgICAgICAgICAgICAgLy8gY2Fs
bCBzbG93X3BhdGhfbmV3X29iamVjdDsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisv
LyBieXRlY29kZTogbW92IGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJl
Z0lkXSA9IGNmcltzcmNSZWdJZF07CisvLworLy8gICBDb3BpZXMgcmVnaXN0ZXIgc3JjIHRvIHJl
Z2lzdGVyIGRzdC4KKwogX2xsaW50X29wX21vdjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MSwgdDIsIHQzKQotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
Ci0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2go
MykKKyAgICBsb2FkaSA4W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BD
XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQw
PiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MiwgdDMpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3Jj
SWQ8dDE+ID09PiB2YWx1ZTx0MiwgdDM+KTsKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlRhZyA9IHNy
Y1RhZzx0Mj47CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XS5QYXlsb2FkID0gc3JjUGF5bG9hZDx0Mz47
CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG5vdCBkc3RSZWdJ
ZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RyZWdJZF0gPSAhY2ZyW3NyY3JlZ0lkXTsK
Ky8vCisvLyAgIENvbXB1dGVzIGxvZ2ljYWwgTk9UIG9mIHJlZ2lzdGVyIHNyYyAoY29udmVydGVk
IHRvCisvLyAgIGJvb2xlYW4pLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4K
IAogX2xsaW50X29wX25vdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10s
IHQwCi0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwg
dDIsIHQzKQotICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93Ci0gICAgeG9yaSAx
LCB0MwotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBsb2FkaSA4
W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lk
PHQwPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2Rz
dFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpICAgICAgICAg
ICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+ID0+IHRhZzx0
Mj4sIHBheWxvYWQ8dDM+KTsKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDI+ICE9IEJvb2xlYW5UYWcpIGdvdG8g
LnNsb3c7CisgICAgeG9yaSAxLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYXlsb2FkPHQzPiA9ICFwYXlsb2FkPHQzPjsKKyAgICBzdG9yZWkgdDIs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3R4
c0lkPHQxPl0uVGFnID0gdGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBw
YXlsb2FkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTm90U2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ub3QpCi0gICAgZGlzcGF0Y2goMykKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ub3QpICAgICAgICAgICAgICAgICAgICAg
IC8vIGNhbGwgc2xvd19wYXRoX25vdDsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisv
LyBieXRlY29kZTogZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246
IGNmcltkc3RyZWdJZF0gPSAoY2ZyW3NyYzFSZWdJZF0gPT0gY2ZyW3NyYzJSZWdJZF0pOworLy8K
Ky8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUg
ZXF1YWwsCisvLyAgIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz09JyBvcGVyYXRvciwgYW5kIHB1
dHMgdGhlIHJlc3VsdAorLy8gICBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxp
bnRfb3BfZXE6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAg
ICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0
MiwgdDMsIC5vcEVxU2xvdwotICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdwotICAgIGJp
YiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBjaWVx
IHQwLCB0MSwgdDAKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
Ci0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgZGlzcGF0Y2go
NCkKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMyUmVnSWRdOworICAgIGxvYWRpIDhb
UENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMUlk
PHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKSAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNyYzJJZDx0Mj4gPT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOwor
ICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWYgKHRhZzE8dDI+ICE9IHRhZzI8dDM+KSBnb3RvIC5zbG93OworICAgIGJpZXEgdDIs
IENlbGxUYWcsIC5vcEVxU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRh
ZzE8dDI+ID09IENlbGxUYWcpIGdvdG8gLnNsb3c7CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cEVxU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHVuc2lnbmVkKXRhZzE8
dDI+IDwgTG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNb
ZHN0UmVnSWRdOworICAgIGNpZXEgdDAsIHQxLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IChwYXlsb2FkMjx0MT4gPT0gcGF5bG9hZDE8
dDA+KTsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAg
ICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDI+XS5QYXlsb2FkID0gcGF5bG9hZDE8dDA+OworICAgIGRpc3BhdGNoKDQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAub3BFcVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZXEp
Ci0gICAgZGlzcGF0Y2goNCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9lcSkg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2VxOworICAgIGRpc3BhdGNo
KDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBlcV9udWxsIGRzdFJlZ0lkIHNyY1JlZ0lk
CisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9IChjZnJbc3JjUmVnSWRdID09IG51bGwpOwor
Ly8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjIGlzIG51bGwsIGFzIHdpdGggdGhl
IEVDTUFTY3JpcHQgJyE9JworLy8gICBvcGVyYXRvciwgYW5kIHB1dHMgdGhlIHJlc3VsdCBhcyBh
IGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfZXFfbnVsbDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0g
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCi0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MQotICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQotICAgIGptcCAub3BFcU51
bGxOb3RJbW1lZGlhdGUKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAg
ICBsb2FkaSA0W1BDXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGRzdElkPHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2VydE5vdENvbnN0
YW50KHNyY0lkPHQwPik7CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0YWc8dDE+ID0gY2ZyW3NyY0lkPHQwPl0uVGFnOworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwICAgICAgICAgICAgICAgICAgICAg
Ly8gcGF5bG9hZDx0MD4gPSBjZnJbc3JjSWQ8dDA+XS5QYXlsb2FkOworICAgIGJpbmVxIHQxLCBD
ZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0
MT4gIT0gQ2VsbFRhZykgZ290byAuaW1tZWRpYXRlOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQxPiA9IHBh
eWxvYWQ8dDA+LnN0cnVjdHVyZTsKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEgLy8gcmVzdWx0
PHQxPiA9ICgoc3RydWN0dXJlPHQxPi50eXBlSW5mby5mbGFnICYgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkgIT0gMCk7CisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnb3RvIC5ub3RJbW1lZGlhdGU7CiAub3BFcU51bGxJbW1lZGlh
dGU6Ci0gICAgY2llcSB0MSwgTnVsbFRhZywgdDIKLSAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcs
IHQxCi0gICAgb3JpIHQyLCB0MQorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXNOdWxsPHQyPiA9ICh0YWc8dDE+ID09IE51bGx0
YWcpOworICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaXNVbmRlZmluZWQ8dDE+ID0gKHRhZzx0MT4gPT0gVW5kZWZpbmVkVGFnKTsK
KyAgICBvcmkgdDIsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHJlc3VsdDx0MT4gPSBpc051bGw8dDI+IHwgaXNVbmRlZmluZWQ8dDE+OwogLm9wRXFO
dWxsTm90SW1tZWRpYXRlOgotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNw
YXRjaCgzKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAg
ICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mz5dLlBheWxvYWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDMpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBuZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAor
Ly8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyYzFSZWdJZF0gIT0gY2ZyW3NyYzJS
ZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0
ZXIgc3JjMiBhcmUgbm90CisvLyAgIGVxdWFsLCBhcyB3aXRoIHRoZSBFQ01BU2NyaXB0ICchPScg
b3BlcmF0b3IsIGFuZCBwdXRzIHRoZQorLy8gICByZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lz
dGVyIGRzdC4KKwogX2xsaW50X29wX25lcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9h
ZGkgMTJbUENdLCB0MgotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQotICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdwotICAgIGJpZXEgdDIsIENlbGxUYWcs
IC5vcE5lcVNsb3cKLSAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdwotICAgIGxvYWRp
IDRbUENdLCB0MgotICAgIGNpbmVxIHQwLCB0MSwgdDAKLSAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCi0gICAgZGlzcGF0Y2goNCkKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMy
UmVnSWRdOworICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3JjMUlkPHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKSAgICAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0
MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApICAgICAgICAg
ICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3JjMUlkPHQwPiA9PT4gdGFn
MTx0Mj4sIHBheWxvYWQxPHQwPik7CisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4pIGdv
dG8gLnNsb3c7CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gPT0gQ2VsbHRhZykgZ290byAuc2xvdzsKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAg
bG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgY2luZXEgdDAsIHQxLCB0MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDA+ID0gKHBh
eWxvYWQxPHQwPiAhPSBwYXlsb2FkMjx0MT4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0g
Qm9vbGVhblRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSByZXN1bHQ8dDA+Owor
ICAgIGRpc3BhdGNoKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BOZXFTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25lcSkKLSAgICBkaXNwYXRjaCg0KQorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25lcSkgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93
X3BhdGhfbmVxOworICAgIGRpc3BhdGNoKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgIAogCisvLyBieXRlY29k
ZTogbmVxX251bGwgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRd
ID0gKGNmcltzcmNSZWdJZF0gIT0gbnVsbCk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdp
c3RlciBzcmMgaXMgbm90IG51bGwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJyE9JworLy8gICBv
cGVyYXRvciwgYW5kIHB1dHMgdGhlIHJlc3VsdCBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0
LgorCiBfbGxpbnRfb3BfbmVxX251bGw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRp
IDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MwotICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQotICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAotICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxs
SW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCi0gICAgdGJ6
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgdDEKLSAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorICAgIGxv
YWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0Tm90Q29uc3RhbnQoc3JjSWQ8dDA+KTsKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRhZzx0MT4gPSBjZnJbc3JjSWQ8dDA+XS5UYWc7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAgICAgICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQwPiA9IGNmcltz
cmNJZDx0MD5dLlBheWxvYWQ7CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1l
ZGlhdGUgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQxPiAhPSBDZWxsVGFnKSBnb3RvIC5p
bW1lZGlhdGU7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0MD4uc3RydWN0dXJlOwor
ICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxIC8vIHJlc3VsdDx0MT4gPSAoKHN0cnVjdHVyZTx0MT4u
dHlwZUluZm8uZmxhZ3MgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSA9PSAwKTsKKyAgICBqbXAg
Lm9wTmVxTnVsbE5vdEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gLm5vdEltbWVkaWF0ZTsKIC5vcE5lcU51bGxJbW1lZGlhdGU6Ci0gICAgY2luZXEgdDEsIE51
bGxUYWcsIHQyCi0gICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKLSAgICBhbmRpIHQyLCB0
MQorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaXNOb3ROdWxsPHQyPiA9ICh0YWc8dDE+ICE9IE51bGxUYWcpOworICAgIGNpbmVx
IHQxLCBVbmRlZmluZWRUYWcsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXNO
b3RVbmRlZmluZWQ8dDE+ID0gKHRhZzx0MT4gIT0gVW5kZWZpbmVkVGFnKTsKKyAgICBhbmRpIHQy
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3Vs
dDx0MT4gPSAoaXNOb3ROdWxsPHQyPiAmIGlzTm90VW5kZWZpbmVkPHQxPik7CiAub3BOZXFOdWxs
Tm90SW1tZWRpYXRlOgotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRj
aCgzKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAg
ICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltk
c3RJZDx0Mz5dLlBheWxvYWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogCiAKIG1hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGF0aCkKLSAgICBs
b2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCi0gICAgYmluZXEgdDIsIHQzLCAuc2xvdwotICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAu
c2xvdwotICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCi0gICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0s
IHQzCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKLSAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworICAgIGxvYWRpIDEy
W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklk
PHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNb
c3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAg
ICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4g
dGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
ZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKKyAgICBiaW5lcSB0Miwg
dDMsIC5zbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcx
PHQyPiAhPSB0YWcyPHQzPikgZ290byAuc2xvdzsKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNs
b3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiA8IExvd2Vz
dFRhZykgZ290byAuc2xvdzsKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSBDZWxsVGFnKSBnb3RvIC5u
b3RTdHJpbmc7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmUxPHQyPiA9IHBheWxvYWQxPHQwPi5zdHJ1Y3R1cmU7
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzdHJ1Y3R1cmUyPHQzPiA9IHBheWxvYWQyPHQxPi5zdHJ1Y3R1cmU7CisgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5
cGUsIC5ub3RTdHJpbmcgIC8vIGlmIChzdHJ1Y3R1cmUxPHQyPi50eXBlSW5mby50eXBlICE9IFN0
cmluZ1R5cGUpIGdvdG8gLm5vdFN0cmluZzsKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdyAgICAgICAgLy8gaWYg
KHN0cnVjdHVyZTI8dDM+LnR5cGVJbmZvLnR5cGUgPT0gU3RyaW5nVHlwZSkgZ290byAuc2xvdzsK
IC5ub3RTdHJpbmc6Ci0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgZXF1YWxpdHlPcGVyYXRpb24o
dDAsIHQxLCB0MCkKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
Ci0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgZGlzcGF0Y2go
NCkKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBlcXVhbGl0eU9w
ZXJhdGlvbih0MCwgdDEsIHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0
MD4gPSBwYXlsb2FkMTx0MD4gQ09NUEFSQVRPUiBwYXlsb2FkMjx0MT47CisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0
SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9
IHJlc3VsdDx0MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNh
bGxTbG93UGF0aChzbG93UGF0aCkKLSAgICBkaXNwYXRjaCg0KQorICAgIGNhbGxTbG93UGF0aChz
bG93UGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93UGF0
aDxhMT47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiBlbmQKIAorLy8gYnl0ZWNvZGU6IHN0
cmljdGVxIGRzdFJlZ0lkIHNyYzFSZWdJZCBzcmMyUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0
UmVnSWRdID0gKGNmcltzcmMxUmVnZF0gPT09IGNmcltzcmMyUmVnSWRdKTsKKy8vCisvLyAgIENo
ZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNyYzIgYXJlIHN0cmljdGx5
CisvLyAgIGVxdWFsLCBhcyB3aXRoIHRoZSBFQ01BU2NyaXB0ICc9PT0nIG9wZXJhdG9yLCBhbmQg
cHV0cyB0aGUKKy8vICAgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9s
bGludF9vcF9zdHJpY3RlcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgLy8gc3RyaWN0RXEo
bWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQs
IHNsb3dQYXRoPF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXE+KTsKKyAgICAvLyBDT01QQVJBVE9S
ID0gIj09IgogICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxl
ZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfc2xvd19wYXRoX3N0cmljdGVxKQogCiAKKy8v
IGJ5dGVjb2RlOiBuc3RyaWN0ZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVu
Y3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyYzFSZWdJZF0gIT09IGNmcltzcmMyUmVnSWRd
KTsKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNy
YzIgYXJlIG5vdAorLy8gICBzdHJpY3RseSBlcXVhbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAn
IT09JyBvcGVyYXRvciwgYW5kCisvLyAgIHB1dHMgdGhlIHJlc3VsdCBhcyBhIGJvb2xlYW4gaW4g
cmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbnN0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAvLyBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVm
dCwgcmlnaHQsIHJlc3VsdCBlbmQsIHNsb3dQYXRoPF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVx
Pik7CisgICAgLy8gQ09NUEFSQVRPUiA9ICIhPSIKICAgICBzdHJpY3RFcShtYWNybyAobGVmdCwg
cmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93
X3BhdGhfbnN0cmljdGVxKQogCiAKKy8vIGJ5dGVjb2RlOiBwcmVfaW5jIHNyY0RzdFJlZ0lkCisv
LyBmdW5jdGlvbjogY2ZyW3NyY0RzdHJlZ0lkXSA9ICsrY2ZyW3NyY0RzdHJlZ0lkXTsKKy8vCisv
LyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIsIGFkZHMgb25lLCBhbmQgcHV0
cyB0aGUgcmVzdWx0CisvLyAgIGJhY2sgaW4gcmVnaXN0ZXIgc3JjRHN0LgorCiBfbGxpbnRfb3Bf
cHJlX2luYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdwotICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0gICAgYmFkZGlvIDEsIHQxLCAu
b3BQcmVJbmNTbG93Ci0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJ
ZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5j
U2xvdyAgICAgICAgLy8gaWYgKGNmcltyZWdJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAu
c2xvdzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyByZXN1bHQ8dDE+ID0gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZDsKKyAg
ICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoKytyZXN1bHQ8dDE+IG92ZXJsb3dzKSBnb3RvIC5zbG93OworICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltyZWdJZDx0MD5dLlBheWxvYWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKIAogLm9wUHJlSW5jU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9wcmVfaW5jKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHJlX2luYykgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3Bh
dGhfcHJlX2luYzsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNv
ZGU6IHByZV9kZWMgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbc3JjRHN0UmVnSWRdID0g
LS1jZnJbc3JjRHN0UmVnSWRdOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRv
IG51bWJlciwgc3VidHJhY3RzIG9uZSwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBiYWNrIGlu
IHJlZ2lzdGVyIHNyY0RzdC4KIAogX2xsaW50X29wX3ByZV9kZWM6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQotICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdwotICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIGRpc3BhdGNoKDIpCisgICAgbG9hZGkg
NFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cmVnSWQ8dDA+ID0gb3BlcmFuZHNbc3JjRHN0UmVnSWRdOworICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cgICAgICAgIC8vIGlmIChjZnJbcmVn
SWQ8dDA+XS5UYWcgIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQx
PiA9IGNmcltyZWdJZDx0MD5dLlBheWxvYWQ7CisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNT
bG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKC0tcmVzdWx0PHQxPiBv
dmVybG93cykgZ290byAuc2xvdzsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbcmVnSWQ8dDA+XS5QYXlsb2FkID0g
cmVzdWx0PHQxPjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFByZURlY1Ns
b3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykKLSAgICBkaXNw
YXRjaCgyKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9kZWMpICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3ByZV9kZWM7CisgICAgZGlzcGF0Y2go
MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBwb3N0X2luYyBkc3RSZWdJZCBzcmNE
c3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjRHN0UmVnSWRdKys7
CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmNEc3QgdG8gbnVtYmVyLiBUaGUgbnVtYmVy
IGl0c2VsZiBpcworLy8gICB3cml0dGVuIHRvIHJlZ2lzdGVyIGRzdCwgYW5kIHRoZSBudW1iZXIg
cGx1cyBvbmUgaXMgd3JpdHRlbgorLy8gICBiYWNrIHRvIHJlZ2lzdGVyIHNyY0RzdC4KKwogX2xs
aW50X29wX3Bvc3RfaW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwg
dDAKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IEludDMyVGFnLCAub3BQb3N0SW5jU2xvdwotICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9u
ZQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCi0gICAgbW92ZSB0Miwg
dDMKLSAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93Ci0gICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBs
b2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAgbG9hZGkgNFtQQ10s
IHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8
dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93ICAgICAgIC8vIGlmIChjZnJbc3JjSWQ8dDA+XS5U
YWcgIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNE
b25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyY0lkPHQwPiA9PSBk
c3RJZDx0MT4pIGdvdG8gLmRvbmU7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2xkUGF5bG9hZDx0Mj4gPSBjZnJbc3Jj
SWQ8dDA+XS5QYXlsb2FkOworICAgIG1vdmUgdDIsIHQzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ld1BheWxvYWQ8dDM+ID0gb2xkUGF5bG9hZDx0
Mj47CisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKCsrbmV3UGF5bG9hZDx0Mz4gb3ZlcmZsb3dzKSBnb3RvIC5zbG93
OworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlRhZyA9IEludDMyVGFnOworICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0MT5dLlBheWxvYWQgPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbc3Jj
SWQ8dDA+XS5QYXlsb2FkID0gbmV3UGF5bG9hZDx0Mz47CiAub3BQb3N0SW5jRG9uZToKLSAgICBk
aXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUG9zdEluY1Ns
b3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcG9zdF9pbmMpCi0gICAgZGlz
cGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2luYykgICAg
ICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9wb3N0X2luYzsKKyAgICBkaXNwYXRj
aCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IHBvc3RfZGVjIGRzdFJlZ0lkIHNy
Y0RzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmNEc3RSZWdJZF0t
LTsKKy8vCisvLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBudW1i
ZXIgaXRzZWxmIGlzCisvLyAgIHdyaXR0ZW4gdG8gcmVnaXN0ZXIgZHN0LCBhbmQgdGhlIG51bWJl
ciBtaW51cyBvbmUgaXMgd3JpdHRlbgorLy8gICBiYWNrIHRvIHJlZ2lzdGVyIHNyY0RzdC4KKwog
X2xsaW50X29wX3Bvc3RfZGVjOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BD
XSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdwotICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVj
RG9uZQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCi0gICAgbW92ZSB0
MiwgdDMKLSAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93Ci0gICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAgbG9hZGkgNFtQ
Q10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93ICAgICAgIC8vIGlmIChjZnJbc3JjSWQ8dDA+
XS5UYWcgIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RE
ZWNEb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyY0lkPHQwPiA9
PSBkc3RJZDx0MT4pIGdvdG8gLmRvbmU7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2xkUGF5bG9hZDx0Mj4gPSBjZnJb
c3JjSWQ8dDA+XS5QYXlsb2FkOworICAgIG1vdmUgdDIsIHQzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ld1BheWxvYWQ8dDM+ID0gb2xkUGF5bG9h
ZDx0Mj47CisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKC0tbmV3UGF5bG9hZDx0Mz4gb3ZlcmZsb3dzKSBnb3RvIC5z
bG93OworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlRhZyA9IEludDMyVGFnOworICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJb
c3JjSWQ8dDA+XS5QYXlsb2FkID0gbmV3UGF5bG9hZDx0Mz47CiAub3BQb3N0RGVjRG9uZToKLSAg
ICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUG9zdERl
Y1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcG9zdF9kZWMpCi0gICAg
ZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2RlYykg
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9wb3N0X2RlYzsKKyAgICBkaXNw
YXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IHRvX2pzbnVtYmVyIGRzdFJl
Z0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IE51bWJlcihjZnJbZHN0
UmVnSWRdKTsKKy8vCisvLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyYyB0byBudW1iZXIsIGFuZCBw
dXRzIHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfdG9fanNu
dW1iZXI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxv
YWRpIDRbUENdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKLSAg
ICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50Ci0gICAgYmlhZXEgdDIsIEVt
cHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3Bl
cmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lk
XTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQwPiA9PT4gdGFnPHQy
PiwgcGF5bG9hZDx0Mz4pOworICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJ
bnQgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDI+ID09IEludDMyVGFnKSBnb3Rv
IC5pc0ludDsKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cg
ICAgICAgICAgICAgICAgICAvLyBpZiAoKHVuc2lnbmVkKXRhZzx0Mj4gPj0gRW1wdHlWYWx1ZVRh
ZykgZ290byAuc2xvdzsKIC5vcFRvSnNudW1iZXJJc0ludDoKLSAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQotICAgIGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gdGFnPHQy
PjsKKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0gcGF5bG9hZDx0Mz47CisgICAg
ZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BUb0pzbnVtYmVyU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b19qc251bWJlcikKLSAgICBkaXNwYXRjaCgzKQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX2pzbnVtYmVyKSAgICAgICAgICAg
ICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3RvX2pzbnVtYmVyOworICAgIGRpc3BhdGNoKDMpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogbmVnYXRlIGRzdFJlZ0lkIHNyY1JlZ0lkCisv
LyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IC1jZnJbc3JjUmVnSWRdOworLy8KKy8vICAgQ29u
dmVydHMgcmVnaXN0ZXIgc3JjIHRvIG51bWJlciwgbmVnYXRlcyBpdCwgYW5kIHB1dHMgdGhlCisv
LyAgIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9uZWdhdGU6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0Mwot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxLCB0MikKLSAgICBiaW5lcSB0MSwgSW50
MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAotICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5l
Z2F0ZVNsb3cKLSAgICBuZWdpIHQyCi0gICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBk
aXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAg
ICBsb2FkaSA0W1BDXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBkc3RJZDx0Mz4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MCwgdDEsIHQyKSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MD4gPT0+IHRhZzx0MT4sIHBheWxvYWQ8dDI+KTsKKyAg
ICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludCAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAodGFnPHQxPiAhPSBJbnQzMlRhZykgZ290byAuc3JjTm90SW50OworICAgIGJ0
aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlmICgocGF5bG9hZDx0Mj4gJiAweDdmZmZmZmZmKSA9PSAwKSBnb3RvIC5zbG93OyAvLyBp
ZiAoaXMgMCBvciBJTlRfTUlOKSAuLi4KKyAgICBuZWdpIHQyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQyPiA9IC1wYXlsb2Fk
PHQyPjsKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBJbnQzMlRhZzsKKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbZHN0SWQ8dDM+XS5QYXlsb2FkID0gcGF5bG9hZDx0Mj47CisgICAgZGlzcGF0Y2goMykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogLm9wTmVnYXRlU3JjTm90SW50OgotICAgIGJpYSB0MSwgTG93ZXN0VGFn
LCAub3BOZWdhdGVTbG93Ci0gICAgeG9yaSAweDgwMDAwMDAwLCB0MQotICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRl
U2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHVuc2lnbmVkKXRhZzx0MT4g
PiBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gV2UgaGF2ZSBhbiB1bmJveGVkIGRvdWJs
ZSwganVzdCBpbnZlcnQgaXRzIHNpZ24gYml0OgorICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhpZ2hXb3JkPHRhZzx0MT4+
LnNpZ25CaXQgPSAhaGlnaFdvcmQ8dGFnPHQxPj4uc2lnbkJpdDsKKyAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0
SWQ8dDM+XS5UYWcgPSB0YWc8dDE+OworICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQg
PSBwYXlsb2FkPHQyPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcE5lZ2F0
ZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVnYXRlKQotICAgIGRp
c3BhdGNoKDMpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVnYXRlKSAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfbmVnYXRlOworICAgIGRpc3BhdGNo
KDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIAogCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkKLSAgICBsb2FkaSAx
MltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDAp
Ci0gICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50Ci0gICAgYmluZXEgdDMsIEludDMy
VGFnLCAub3AyTm90SW50Ci0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgaW50ZWdlck9wZXJhdGlv
bkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKLSAgICBkaXNwYXRjaCg1KQorICAgIC8v
IG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3Vi
bGVPcGVyYXRpb24sIHNsb3dQYXRoKSB7CisgICAgbG9hZGkgMTJbUENdLCB0MiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRz
W3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMUlkPHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcyPHQz
PiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKSAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhz
cmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKKyAgICBiaW5lcSB0MiwgSW50
MzJUYWcsIC5vcDFOb3RJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFn
MTx0Mj4gIT0gSW50MzJUYWcpIGdvdG8gLm9wMU5vdEludDsKKyAgICBiaW5lcSB0MywgSW50MzJU
YWcsIC5vcDJOb3RJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMjx0
Mz4gIT0gSW50MzJUYWcpIGdvdG8gLm9wMk5vdEludDsKKyAgICAvLyBvcDEgYW5kIG9wMiBhcmUg
aW50MzI6IGRvIGZhc3QgaW50MzIgb3BlcmF0aW9uLCBhbmQgZW5kLgorICAgIGxvYWRpIDRbUENd
LCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElk
PHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUo
dDMsIHQxLCB0MCwgLnNsb3csIHQyKSAgICAgICAgICAgICAvLyBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUodGFnMjx0Mz4sIHBheWxvYWQyPHQxPiwgcGF5bG9hZDE8dDA+LCAuc2xvdywgdDIpOwor
ICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wMU5vdEludDoKLSAgICAjIEZpcnN0
IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291
bGQgYmUgYW55dGhpbmcuCi0gICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgYmliIHQz
LCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKLSAgICBiaW5lcSB0MywgSW50MzJUYWcs
IC5zbG93Ci0gICAgY2kyZCB0MSwgZnQxCi0gICAgam1wIC5vcDFOb3RJbnRSZWFkeQorICAgIC8v
IEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJh
bmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA+
IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91Ymxl
LCBvcDIgaXMgPz8/OiBjaGVjayBvcDIuCisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJ
bnRPcDJEb3VibGUgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcyPHQz
PiA8IExvd2VzdFRhZykgZ290byAub3AxTm90SW50T3AyRG91YmxlOworICAgIGJpbmVxIHQzLCBJ
bnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgh
dGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gb3AxIGlzIGludC1lbmNv
ZGVkLWRvdWJsZSwgb3AyIGlzIGludDMyOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAgY2ky
ZCB0MSwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+KTsKKyAgICBqbXAgLm9wMU5vdElu
dFJlYWR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIC5v
cDFOb3RJbnRSZWFkeTsKIC5vcDFOb3RJbnRPcDJEb3VibGU6Ci0gICAgZmlpMmQgdDEsIHQzLCBm
dDEKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50LWVuY29kZWQt
ZG91YmxlOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAgZmlpMmQgdDEsIHQzLCBmdDEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBE
b3VibGUocGF5bG9hZDI8dDE+LCB0YWcyPHQzPik7CiAub3AxTm90SW50UmVhZHk6Ci0gICAgbG9h
ZGkgNFtQQ10sIHQxCi0gICAgZmlpMmQgdDAsIHQyLCBmdDAKLSAgICBkb3VibGVPcGVyYXRpb24o
ZnQxLCBmdDApCi0gICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goNSkK
KyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgZG91YmxlOgorICAgIGxv
YWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBmaWkyZCB0MCwgdDIsIGZ0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDFEYmw8ZnQw
PiA9IERvdWJsZShwYXlsb2FkMTx0MD4sIHRhZzE8dDI+KTsKKyAgICBkb3VibGVPcGVyYXRpb24o
ZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8
ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOworICAgIHN0
b3JlZCBmdDAsIFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNmcltkc3RJZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OworICAgIGRpc3BhdGNo
KDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIAogLm9wMk5vdEludDoKLSAgICAjIEZpcnN0IG9wZXJhbmQgaXMg
ZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4K
LSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKLSAgICBj
aTJkIHQwLCBmdDAKLSAgICBmaWkyZCB0MSwgdDMsIGZ0MQotICAgIGRvdWJsZU9wZXJhdGlvbihm
dDEsIGZ0MCkKLSAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg1KQor
ICAgIC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3Bl
cmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tk
c3RSZWdJZF07CisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykg
Z290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50MzIsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3Vi
bGU6CisgICAgY2kyZCB0MCwgZnQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gb3AxRGJsPGZ0MD4gPSBEb3VibGUocGF5bG9hZDE8dDA+KTsgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2Fk
Mjx0MT4sIHRhZzI8dDM+KTsKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJh
dGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOworICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQy
LCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5d
LkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
IAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDUpCisg
ICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2FsbCBzbG93IHBhdGg7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
ICAgIC8vIH0gRU5EIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUuIAogZW5kCiAKIG1hY3JvIGJp
bmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAg
Ly8gbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBzbG93
UGF0aCkgewogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKLSAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCi0gICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIC8vIG1hY3JvIChpbnQzMlRhZywgbGVmdCwg
cmlnaHQsIHNsb3csIGluZGV4KSB7CisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQs
IHJpZ2h0LCBzbG93KSAgICAgICAgICAgICAgICAgLy8gICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQs
IHJpZ2h0LCBzbG93KTsKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdICAgICAgICAgICAvLyAgIGNmcltpbmRleF0uVGFnID0gaW50MzJUYWc7Cisg
ICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0gICAg
ICAgICAgLy8gICBjZnJbaW5kZXhdLlBheWxvYWQgPSByaWdodDsKKyAgICAgICAgICAgIC8vIH0g
RU5EIG1hY3JvLgogICAgICAgICBlbmQsCi0gICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1Bh
dGgpCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIC8vICAgYmluYXJ5T3BDdXN0
b21TdG9yZSgpOworICAgIC8vIH0gRU5EIG1hY3JvIGJpbmFyeU9wLgogZW5kCiAKKy8vIGJ5dGVj
b2RlOiBhZGQgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltk
c3RSZWdJZF0gPSBjZnJbc3JjMlJlZ0lkXSArIGNmcltzcmMxUmVnSWRdOworLy8KKy8vICAgQWRk
cyByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyLCBhbmQgcHV0cyB0aGUgcmVzdWx0Cisv
LyAgIGluIHJlZ2lzdGVyIGRzdC4gKEpTIGFkZCBtYXkgYmUgc3RyaW5nIGNvbmNhdGVuYXRpb24g
b3IKKy8vICAgbnVtZXJpYyBhZGQsIGRlcGVuZGluZyBvbiB0aGUgdHlwZXMgb2YgdGhlIG9wZXJh
bmRzLikKKwogX2xsaW50X29wX2FkZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYmluYXJ5
T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0
LCBzbG93IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0
IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9hZGQpCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmICgocmlnaHQgKz0gbGVmdCkgb3ZlcmZsb3dz
KSBnb3RvIHNsb3c7CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQor
ICAgICAgICAgICAgYWRkZCBsZWZ0LCByaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgcmlnaHQgPSBsZWZ0ICsgcmlnaHQ7CisgICAgICAgIGVuZCwKKyAgICAgICAg
X2xsaW50X3Nsb3dfcGF0aF9hZGQpIC8vIGJpbmFyeU9wKCJiYWRkaW8gbGVmdCwgcmlnaHQsIHNs
b3ciLCAiYWRkZCBsZWZ0LCByaWdodCIsIF9sbGludF9zbG93X3BhdGhfYWRkKSB7CisgICAgLy8g
fSAvLyBFTkQgYmluYXJ5T3AoKQogCiAKKy8vIGJ5dGVjb2RlOiBtdWwgZHN0UmVnSWQgc3JjMVJl
Z0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lk
XSAqIGNmcltzcmMyUmVnSWRdCisvLworLy8gICBNdWx0aXBsaWVzIHJlZ2lzdGVyIHNyYzEgYW5k
IHJlZ2lzdGVyIHNyYzIgKGNvbnZlcnRlZCB0bworLy8gICBudW1iZXJzKSwgYW5kIHB1dHMgdGhl
IHByb2R1Y3QgaW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbXVsOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAoaW50MzJU
YWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKLSAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2gg
PSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVn
aXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCi0gICAgICAgICAgICBtb3ZlIHJpZ2h0LCBz
Y3JhdGNoCi0gICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdwotICAgICAgICAg
ICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKLSAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdwot
ICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAgICAgLy8gbWFjcm8gKGlu
dDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IHNj
cmF0Y2ggPSBpbnQzMlRhZyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCB3
ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50
LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc2NyYXRjaCA9IHJpZ2h0OworICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0
Y2gsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKChzY3JhdGNoICo9IGxlZnQpIG92
ZXJmbG93cykgZ290byBzbG93OworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNjcmF0Y2ggIT0gMCkgZ290byAuZG9uZTsK
KyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmIChsZWZ0IDwgMCkgZ290byAuc2xvdzsKKyAgICAgICAgICAgIGJpbHQgcmlnaHQs
IDAsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChyaWdodCA8IDApIGdv
dG8gLnNsb3c7CiAgICAgICAgIC5kb25lOgotICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAvLyBjZnJbaW5kZXhdLlRhZyA9IEludDMyVGFn
OworICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0gICAgLy8gY2ZyW2luZGV4XS5QYXlsb2FkID0gc2NyYXRjaDsKKyAgICAgICAgICAgIC8vIH0g
RU5EIG1hY3JvLgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkKKyAg
ICAgICAgICAgIG11bGQgbGVmdCwgcmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHJpZ2h0ID0gbGVmdCAqIHJpZ2h0OwogICAgICAgICBlbmQsCi0gICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3Bh
dGhfbXVsKQorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX211bCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYmluYXJ5T3BDdXN0b21TdG9yZSguLi4sIF9sbGludF9zbG93X3BhdGhf
bXVsKTsKIAogCisvLyBieXRlY29kZTogc3ViIGRzdFJlZ0lkIHNyYzFSZWdJZCBzcmMyUmVnSWQK
Ky8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyYzFSZWdJZF0gLSBjZnJbc3JjMlJl
Z0lkXTsKKy8vCisvLyAgIFN1YnRyYWN0cyByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gbnVt
YmVyKSBmcm9tIHJlZ2lzdGVyCisvLyAgIHNyYzEgKGNvbnZlcnRlZCB0byBudW1iZXIpLCBhbmQg
cHV0cyB0aGUgZGlmZmVyZW5jZSBpbgorLy8gICByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9z
dWI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wKAotICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCi0gICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGlu
dF9zbG93X3BhdGhfc3ViKQorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAg
ICAgICAgICBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGlmICgocmlnaHQgLT0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgIGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgc3ViZCBsZWZ0LCBy
aWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByaWdodCA9IHJpZ2h0IC0g
bGVmdDsKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikgLy8gYmlu
YXJ5T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3N1YikgeworICAgIC8vIH0gLy8gRU5EIGJpbmFy
eU9wKCkKKwogCisvLyBieXRlY29kZTogZGl2IGRzdFJlZ0lkIGRpdmlkZW5kUmVnSWQgZGl2aXNv
clJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltkaXZpZGVuZFJlZ0lkXSAv
IGNmcltkaXZpc29yUmVnSWRdOworLy8KKy8vICAgRGl2aWRlcyByZWdpc3RlciBkaXZpZGVuZCAo
Y29udmVydGVkIHRvIG51bWJlcikgYnkgdGhlCisvLyAgIHJlZ2lzdGVyIGRpdmlzb3IgKGNvbnZl
cnRlZCB0byBudW1iZXIpLCBhbmQgcHV0cyB0aGUKKy8vICAgcXVvdGllbnQgaW4gcmVnaXN0ZXIg
ZHN0LgogCiBfbGxpbnRfb3BfZGl2OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaW5hcnlP
cEN1c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93
LCBpbmRleCkKLSAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCi0gICAgICAgICAgICBjaTJkIHJp
Z2h0LCBmdDEKLSAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKLSAgICAgICAgICAgIGJjZDJpIGZ0
MSwgcmlnaHQsIC5ub3RJbnQKLSAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdCi0gICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAgICAgLy8gbWFj
cm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKKyAgICAgICAgICAgIGNp
MmQgbGVmdCwgZnQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnREYmw8
ZnQwPiA9IERvdWJsZShsZWZ0KTsKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0RGJsPGZ0MT4gPSBEb3VibGUocmlnaHQp
OworICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcmVzdWx0RGJsPGZ0MT4gPSByaWdodERibDxmdDA+IC8gbGVmdERibDxmdDE+Owor
ICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludCAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmVzdWx0PHJpZ2h0PiA9IEludChyZXN1bHREYmw8ZnQxPikgaWYgKChkb3VibGUpKGlu
dClyZXN1bHREYmwgPSByZXN1bHREYmwpIGVsc2UgZ290byAubm90SW50OworICAgICAgICAgICAg
c3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0gICAgICAgLy8gY2ZyW2lu
ZGV4XS5UYWcgPSBpbnQzMlRhZzsKKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9m
ZnNldFtjZnIsIGluZGV4LCA4XSAgICAgIC8vIGNmcltpbmRleF0uUGF5bG9hZCA9IHJpZ2h0Owor
ICAgICAgICAgICAgam1wIC5kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byAuZG9uZTsKICAgICAgICAgLm5vdEludDoKLSAgICAgICAgICAgIHN0b3JlZCBm
dDEsIFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgs
IDhdICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2luZGV4XS5Eb3VibGUgPSByZXN1bHREYmw8
ZnQxPjsKICAgICAgICAgLmRvbmU6CisgICAgICAgICAgICAvLyBFTkQgbWFjcm8uCiAgICAgICAg
IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwK
LSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9kaXYpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkKKyAgICAgICAgICAgIGRpdmQgbGVmdCwgcmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJpZ2h0ID0gcmlnaHQgLyBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9s
bGludF9zbG93X3BhdGhfZGl2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW5h
cnlPcEN1c3RvbVN0b3JlKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9kaXYpOwogCiAKIG1hY3JvIGJp
dE9wKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpCi0gICAgbG9hZGkgMTJbUENdLCB0Mgot
ICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQotICAgIGJpbmVx
IHQzLCBJbnQzMlRhZywgLnNsb3cKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93Ci0gICAg
bG9hZGkgNFtQQ10sIHQyCi0gICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCi0gICAgc3RvcmVp
IHQzLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaChhZHZhbmNlKQorICAgIC8vIG1hY3JvIGJpdE9wKG9w
ZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpIHsKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMyUmVnSWRd
OworICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Jj
MUlkPHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKSAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0
Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3Jj
MUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPikKKyAgICBiaW5lcSB0MywgSW50MzJU
YWcsIC5zbG93ICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJbnQzMlRhZykg
Z290byAuc2xvdzsKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93ICAgICAgICAgICAgICAg
ICAgIC8vIGlmICh0YWcxPHQyPiAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSA0
W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJh
bmRzW2RzdFJlZ0lkXTsKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykgICAgICAgICAgICAg
ICAgICAgIC8vIHJlc3VsdDx0MD4gPSBvcGVyYXRpb24ocGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0
MD4sIC5zbG93KTsKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAg
ICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IHRhZzI8dDM+OworICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9
IHJlc3VsdDx0MD47CisgICAgZGlzcGF0Y2goYWR2YW5jZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNhbGxTbG93UGF0aChz
bG93UGF0aCkKLSAgICBkaXNwYXRjaChhZHZhbmNlKQorICAgIGNhbGxTbG93UGF0aChzbG93UGF0
aCkgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93UGF0aDsKKyAgICBkaXNwYXRjaChh
ZHZhbmNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
KyAgICAvLyBFTkQgbWFjcm8gbWFjcm8gYml0T3AuCiBlbmQKIAorCisvLyBieXRlY29kZTogbHNo
aWZ0IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gSW50MzIoY2ZyW3ZhbFJlZ0lkXSkgPDwgY2ZyW3NoaWZ0UmVnSWRdKTsKKy8vCisvLyAg
IFBlcmZvcm1zIGxlZnQgc2hpZnQgb2YgcmVnaXN0ZXIgdmFsIChjb252ZXJ0ZWQgdG8gaW50MzIp
IGJ5CisvLyAgIHJlZ2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8gdWludDMyKSwgYW5kIHB1dHMg
dGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9sc2hpZnQ6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpCisgICAgICAgICAgICBsc2hpZnRpIGxlZnQsIHJpZ2h0ICAgICAgICAgLy8g
cmlnaHQgPSAocmlnaHQgPDwgbGVmdCk7CisgICAgICAgIGVuZCwKICAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9sc2hpZnQsCi0gICAgICAgIDQpCisgICAgICAgIDQpIC8vIGJpdE9wKC4uLiwgX2xs
aW50X3Nsb3dfcGF0aF9sc2hpZnQsIDQpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAor
Ly8gYnl0ZWNvZGU6IHJzaGlmdCBkc3RSZWdJZCB2YWxSZWdJZCBzaGlmdFJlZ0lkCisvLyBmdW5j
dGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmclt2YWxSZWdJZF0gPj4gY2ZyW3NoaWZ0UmVnSWRdOwor
Ly8KKy8vICAgUGVyZm9ybXMgYXJpdGhtZXRpYyByaWdodCBzaGlmdCBvZiByZWdpc3RlciB2YWwg
KGNvbnZlcnRlZAorLy8gICB0byBpbnQzMikgYnkgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0
bworLy8gICB1aW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KIAog
X2xsaW50X29wX3JzaGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHJzaGlmdGkgbGVm
dCwgcmlnaHQgICAgICAgICAvLyByaWdodCA9IChyaWdodCA+PiBsZWZ0KTsKKyAgICAgICAgZW5k
LAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAg
NCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwgNCkgeworICAgIC8vIH0g
Ly8gRU5EIGJpdE9wKCkKIAorLy8gYnl0ZWNvZGU6IHJzaGlmdCBkc3RSZWdJZCB2YWxSZWdJZCBz
aGlmdFJlZ0lkCisvLyBmdW5jdGlvbjoKKy8vCisvLyAgIFBlcmZvcm1zIGxvZ2ljYWwgcmlnaHQg
c2hpZnQgb2YgcmVnaXN0ZXIgdmFsIChjb252ZXJ0ZWQKKy8vICAgdG8gdWludDMyKSBieSByZWdp
c3RlciBzaGlmdCAoY29udmVydGVkIHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1
bHQgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfdXJzaGlmdDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKLSAg
ICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCBzbG93CisgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCByaWdodCAgICAgICAgLy8gcmlnaHQg
PSAoKHVuc2lnbmVkKXJpZ2h0ID4+IGxlZnQpOworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwg
c2xvdyAgICAgICAgIC8vIGlmIChyaWdodCA8IDApIGdvdG8gc2xvdzsKICAgICAgICAgZW5kLAog
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3Vyc2hpZnQsCi0gICAgICAgIDQpCisgICAgICAgIDQp
IC8vIGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF91cnNoaWZ0LCA0KSB7CisgICAgLy8gfSAv
LyBFTkQgYml0T3AoKQogCiAKKy8vIGJ5dGVjb2RlOiBiaXRhbmQgZHN0UmVnSWQgc3JjMVJlZ0lk
IHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSAm
IGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgYml0d2lzZSBBTkQgb2YgcmVnaXN0
ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8gICBhbmQgcmVnaXN0ZXIgc3JjMiAoY29u
dmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBk
c3QuCisKIF9sbGludF9vcF9iaXRhbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9w
KAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBhbmRpIGxl
ZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgJiBsZWZ0KTsKKyAgICAgICAg
ZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdGFuZCwKLSAgICAgICAgNSkKKyAgICAg
ICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdGFuZCwgNSkgeworICAgIC8v
IH0gLy8gRU5EIGJpdE9wKCkKKwogCisvLyBieXRlY29kZTogYml0eG9yIGRzdFJlZ0lkIHNyYzFS
ZWdJZCBzcmMyUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyYzFSZWdJ
ZF0gXiBjZnJbc3JjMlJlZ0lkXTsKKy8vCisvLyAgIENvbXB1dGVzIGJpdHdpc2UgWE9SIG9mIHJl
Z2lzdGVyIHNyYzEgKGNvbnZlcnRlZCB0byBpbnQzMikKKy8vICAgYW5kIHJlZ2lzdGVyIHNyYzIg
KGNvbnZlcnRlZCB0byBpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0
ZXIgZHN0LgogCiBfbGxpbnRfb3BfYml0eG9yOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBi
aXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgeG9y
aSBsZWZ0LCByaWdodCAgICAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0IF4gbGVmdCk7CisgICAg
ICAgIGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsCi0gICAgICAgIDUpCisg
ICAgICAgIDUpIC8vIGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsIDUpIHsKKyAg
ICAvLyB9IC8vIEVORCBiaXRPcCgpCiAKIAorLy8gYnl0ZWNvZGU6IGJpdG9yIGRzdFJlZ0lkIHNy
YzFSZWdJZCBzcmMyUmVnSUQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyYzFS
ZWdJZF0gfCBjZnJbc3JjMlJlZ0lkXTsKKy8vCisvLyAgIENvbXB1dGVzIGJpdHdpc2UgT1Igb2Yg
cmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8gICBhbmQgcmVnaXN0ZXIgc3Jj
MiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlCisvLyAgIHJlc3VsdCBpbiByZWdp
c3RlciBkc3QuCisKIF9sbGludF9vcF9iaXRvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Yml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgb3Jp
IGxlZnQsIHJpZ2h0ICAgICAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0IHwgbGVmdCk7CisgICAg
ICAgIGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXRvciwKLSAgICAgICAgNSkKKyAg
ICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdG9yLCA1KSB7CisgICAg
Ly8gfSAvLyBFTkQgYml0T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBjaGVja19oYXNfaW5zdGFuY2Ug
Y29uc3RydWN0b3JSZWdJZAorLy8gZnVuY3Rpb246IGFzc2VydCh0eXBlb2YgY2ZyW2NvbnN0cnVj
dG9yUmVnSWRdLkhhc0luc3RhbmNlID09ICJmdW5jdGlvbiIpOworLy8KKy8vICAgQ2hlY2sgJ2Nv
bnN0cnVjdG9yJyBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgaW50ZXJuYWwgcHJvcGVydHkKKy8vICAg
W0hhc0luc3RhbmNlXSAoaS5lLiBpcyBhIGZ1bmN0aW9uIC4uLiAqc2hha2VzIGhlYWQgc2FkbHkg
YXQKKy8vICAgSlNDIEFQSSopLiBSYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHJlZ2lzdGVyIGNvbnN0
cnVjdG9yIGlzIG5vdAorLy8gICBhIHZhbGlkIHBhcmFtZXRlciBmb3IgaW5zdGFuY2VvZi4KIAog
X2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENl
bGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdwotICAgIGRpc3BhdGNoKDIpCisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0
b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
KSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChjb25zdHJ1Y3RvcklkPHQxPiwgQ2Vs
bFRhZywgb2JqPHQwPiwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpOworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHN0cnVjdHVyZTx0MD4gPSBvYmo8dDA+LnN0cnVjdHVyZTsKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdyAgLy8gaWYgIShzdHJ1Y3R1cmU8dDA+LnR5
cGVJbmZvLmZsYWdzICYgSW1wbGVtZW50c0hhc0luc3RhbmNlKSBnb3RvIC5zbG93OworICAgIGRp
c3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY2hlY2tfaGFzX2luc3Rh
bmNlKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y2hlY2tfaGFzX2luc3RhbmNlKSAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3Bh
dGhfY2hlY2tfaGFzX2luc3RhbmNlOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKKwogCisvLyBieXRlY29kZTogaW5zdGFuY2VvZiBkc3RSZWdJZCB2YWx1ZVJlZ0lk
IGNvbnN0cnVjdG9yUmVnSWQgY29uc3RydWN0b3JQcm90b1JlZ0lkCisvLyBmdW5jdGlvbjogY2Zy
W2RzdFJlZ0lkXSA9IGNmclt2YWx1ZVJlZ0lkXSBpbnN0YW5jZW9mIGNmcltjb25zdHJ1Y3RvclJl
Z2lkXTsKKy8vCisvLyAgIFRlc3RzIHdoZXRoZXIgcmVnaXN0ZXIgdmFsdWUgaXMgYW4gaW5zdGFu
Y2Ugb2YgcmVnaXN0ZXIKKy8vICAgY29uc3RydWN0b3IsIGFuZCBwdXRzIHRoZSBib29sZWFuIHJl
c3VsdCBpbiByZWdpc3RlcgorLy8gICBkc3QuIFJlZ2lzdGVyIGNvbnN0cnVjdG9yUHJvdG8gbXVz
dCBjb250YWluIHRoZSAicHJvdG90eXBlIgorLy8gICBwcm9wZXJ0eSAobm90IHRoZSBhY3R1YWwg
cHJvdG90eXBlKSBvZiB0aGUgb2JqZWN0IGluCisvLyAgIHJlZ2lzdGVyIGNvbnN0cnVjdG9yLiBU
aGlzIGxvb2t1cCBpcyBzZXBhcmF0ZWQgc28gdGhhdAorLy8gICBwb2x5bW9ycGhpYyBpbmxpbmUg
Y2FjaGluZyBjYW4gYXBwbHkuCisvLworLy8gICBSYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHJlZ2lz
dGVyIGNvbnN0cnVjdG9yIGlzIG5vdCBhbgorLy8gICBvYmplY3QuCiAKIF9sbGludF9vcF9pbnN0
YW5jZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBp
bXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgIC8vIENoZWNr
IHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9y
LgogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCi0gICAgbG9hZGkgMTJb
UENdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0
MCkKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICAKLSAgICAjIEFjdHVhbGx5IGRv
IHRoZSB3b3JrLgotICAgIGxvYWRpIDE2W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3Rh
bmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgotICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQot
ICAgIAotICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCi0g
ICAgbW92ZSAxLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVj
dG9ySWQ8dDE+ID0gb3BlcmFuZHNbY29uc3RydWN0b3JSZWdJZF07CisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQo
Y29uc3RydWN0b3JJZDx0MT4sIG9iajx0MD4pOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHN0cnVjdHVyZTx0MD4gPSBvYmo8dDA+LnN0cnVjdHVyZTsKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cgLy8gaWYgIShzdHJ1Y3R1cmU8dDA+LnR5
cGVJbmZvLmZsYWdzICYgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkgZ290byAuc2xvdzsK
KworICAgIC8vIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNvbnN0cnVjdG9yUHJvdG9JZDx0MD4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclBy
b3RvUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQzPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KSAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChjb25zdHJ1Y3RvclByb3RvSWQ8dDA+LCBDZWxs
VGFnLCBwcm90b09iajx0MT4sIC5zbG93KTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzdHJ1Y3R1cmU8dDI+ID0gcHJvdG9PYmo8dDE+LnN0cnVjdHVyZTsKKyAgICBiYmIgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5v
cEluc3RhbmNlb2ZTbG93ICAgICAvLyBpZiAoKHVuc2lnbmVkKXN0cnVjdHVyZTx0Mj4udHlwZUlu
Zm8udHlwZSA8IE9iamVjdFR5cGUpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdmFsdWVJZDx0MD4gPSBvcGVyYW5kc1t2YWx1ZVJlZ0lkXTsKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZT
bG93KSAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh2
YWx1ZUlkPHQwPiwgQ2VsbFRhZywgb2JqPHQyPiwgLnNsb3cpOworCisgICAgLy8gUmVnaXN0ZXIg
c3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSB0cnVlOwogLm9wSW5zdGFuY2VvZkxvb3A6
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCi0gICAgbG9hZGkgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgotICAgIGJwZXEgdDIsIHQx
LCAub3BJbnN0YW5jZW9mRG9uZQotICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc3RydWN0dXJlPHQyPiA9IG9iajx0Mj4u
c3RydWN0dXJlOworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zm
c2V0W3QyXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgb2JqPHQyPiA9
IHN0cnVjdHVyZTx0Mj4ucHJvdG90eXBlLlBheWxvYWQ7CisgICAgYnBlcSB0MiwgdDEsIC5vcElu
c3RhbmNlb2ZEb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICBpZiAob2JqPHQyPiA9PSBwcm90b09iaikgZ290byAuZG9uZTsKKyAgICBi
dGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob2JqPHQyPiAhPSBudWxsKSBnb3RvIC5s
b29wOwogCi0gICAgbW92ZSAwLCB0MAorICAgIG1vdmUgMCwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHByb3RvV2FzRm91bmQ8dDA+ID0gZmFsc2U7CiAub3BJbnN0YW5jZW9mRG9uZToKLSAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goNSkKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwcm90
b1dhc0ZvdW5kOworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKIAogLm9wSW5zdGFuY2VvZlNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfaW5zdGFuY2VvZikKLSAgICBkaXNwYXRjaCg1KQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2luc3RhbmNlb2Y7CisgICAgZGlzcGF0Y2go
NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2Rl
OiBpc191bmRlZmluZWQgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJ1bmRlZmluZWQiKTsKKy8vCisvLyAgIERl
dGVybWluZXMgd2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBhY2NvcmRpbmcgdG8KKy8v
ICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInVuZGVmaW5lZCIsIGFuZCBwdXRzIHRoZSByZXN1
bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwg
dDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQotICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cElzVW5kZWZpbmVkQ2VsbAotICAgIGNpZXEgdDIsIFVuZGVmaW5lZFRhZywgdDMKLSAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxv
YWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQx
PiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07Cisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKSAgICAgICAgICAgICAgLy8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHRhZzx0Mj4sIHBheWxvYWQ8dDM+KTsK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAvLyBj
ZnJbZHN0SWQ8dDA+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cElzVW5kZWZpbmVkQ2VsbCAgICAgICAgICAgIC8vIGlmICh0YWc8dDI+ID09IENlbGxUYWcpIGdv
dG8gLmNlbGw7CisgICAgY2llcSB0MiwgVW5kZWZpbmVkVGFnLCB0MyAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaXNVbmRlZmluZWQ8dDM+ID0gKHRhZzx0Mj4gPT0gVW5kZWZpbmVkVGFnKTsKKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BJc1Vu
ZGVmaW5lZENlbGw6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCi0gICAg
dGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIHQxCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDEgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0Mz4uc3RydWN0
dXJlOworICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MSAgLy8gaXNVbmRlZmluZWQ8dDE+ID0gKChz
dHJ1Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWdzICYgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgIT0g
MCk7CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQwPl0gPSBpc1VuZGVmaW5lZDx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CiAKKy8vIGJ5dGVjb2RlOiBpc19ib29sZWFuIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlv
bjogY2ZyW2RzdFJlZ0lkXSA9ICh0eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAiYm9vbGVhbiIpOwor
Ly8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Igc3JjIGFjY29y
ZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAiYm9vbGVhbiIsIGFuZCBwdXRz
IHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfYm9vbGVh
bjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkg
NFtQQ10sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApCi0gICAgY2ll
cSB0MCwgQm9vbGVhblRhZywgdDAKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAg
ZGlzcGF0Y2goMykKKyAgICBsb2FkaSA4W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQ
Q10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3Bl
cmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcodDEsIHQwKSAg
ICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc3JjSWQ8dDE+ID09PiB0
YWc8dDA+KTsKKyAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MCAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpc0Jvb2xlYW48dDA+ID0gKHRhZzx0MD4gPT0gQm9vbGVhblRhZyk7CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgLy8gY2ZyW2RzdElk
PHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gaXNCb29sZWFu
PHQwPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IGlzX251bWJlciBkc3RS
ZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltz
cmNSZWdJZF0gPT0gIm51bWJlciIpOworLy8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0
eXBlIHN0cmluZyBmb3Igc3JjIGFjY29yZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxl
cyBpcyAibnVtYmVyIiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3Qu
CisKIF9sbGludF9vcF9pc19udW1iZXI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRp
IDhbUENdLCB0MQotICAgIGxvYWRpIDRbUENdLCB0MgotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVUYWcodDEsIHQwKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KLSAgICBhZGRpIDEsIHQwCi0gICAgY2liIHQwLCBMb3dlc3RUYWcgKyAxLCB0MQotICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKDMpCi0KKyAg
ICBsb2FkaSA4W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJ
ZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcodDEsIHQwKSAgICAgICAgICAgICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc3JjUmVnSWQ8dDE+ID09PiB0YWc8dDA+KTsKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIGFkZGkgMSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MD4gKz0gMTsKKyAgICBjaWIgdDAsIExv
d2VzdFRhZyArIDEsIHQxICAgICAgICAgICAgICAgICAgICAgICAvLyBpc051bWJlcjx0MT4gPSAo
KHVuc2lnbmVkKXRhZzx0MD4gPCBMb3dlc3RUYWcgKyAxKTsKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2Fk
ID0gaXNOdW1iZXI8dDE+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKworCisvLyBieXRlY29kZTogaXNf
c3RyaW5nIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9ICh0
eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAic3RyaW5nIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdo
ZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01B
U2NyaXB0IHJ1bGVzIGlzICJzdHJpbmciLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJl
Z2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2lzX3N0cmluZzoKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KLSAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNTdHJpbmdOb3RDZWxs
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQwCi0gICAgY2JlcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgdDEKLSAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQor
ICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxv
YWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHRhZzx0MD4sIHBheWxv
YWQ8dDM+KTsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5U
YWc7CisgICAgYmluZXEgdDAsIENlbGxUYWcsIC5vcElzU3RyaW5nTm90Q2VsbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQwPiAhPSBDZWxsVGFnKSBnb3RvIC5ub3RD
ZWxsOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IHBheWxvYWQ8dDM+LnN0cnVj
dHVyZTsKKyAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBTdHJpbmdUeXBlLCB0MSAgIC8vIGlzU3RyaW5nPHQxPiA9IChzdHJ1Y3R1cmU8dDA+LnR5
cGVJbmZvLnR5cGUgPT0gU3RyaW5nVHlwZSk7CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8
dDI+XS5QYXlsb2FkID0gaXNTdHJpbmc8dDE+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogLm9wSXNTdHJpbmdOb3RDZWxsOgotICAgIHN0b3JlcCAwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBzdG9yZXAgMCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltk
c3RJZDx0Mj5dLlBheWxvYWQgPSBmYWxzZTsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKIAogCiBtYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RG
aW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAg
IC8vIG1hY3JvOiBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9w
ZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKSB7CiAgICAgYXNzZXJ0
KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHks
IG9rIGVuZCkKLSAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFu
ZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCi0gICAgbG9hZGkgVGFnT2Zmc2V0IC0gOCAqIElu
bGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0s
IHRhZwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5
W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZAorICAgIGxvYWRw
IEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFu
ZFN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0b3JhZ2U8b2JqZWN0QW5kU3Rv
cmFnZT4gPSBvYmplY3Q8b2JqZWN0QW5kU3RvcmFnZT4ub3V0T2ZMaW5lU3RvcmFnZTsKKyAgICBs
b2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3Jh
Z2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnICAgICAgICAgICAvLyB0YWcgPSBzdG9yYWdlPG9i
amVjdEFuZFN0b3JhZ2U+W29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShwcm9wZXJ0eU9mZnNldCld
LlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0
eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQgICAvLyBwYXls
b2FkID0gc3RvcmFnZTxvYmplY3RBbmRTdG9yYWdlPltvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
cHJvcGVydHlPZmZzZXQpXS5QYXlsb2FkOworICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsCiBlbmQKIAogbWFjcm8gbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBw
YXlsb2FkKQpAQCAtOTM4LDMyICsxMjcxLDQ0IEBAIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQocHJvcGUKIGVuZAogCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCi0g
ICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKLSAgICAjIDRbUENdICAgRGVzdGluYXRpb24g
Zm9yIHRoZSBsb2FkLgotICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGlu
IHRoZSBjb2RlIGJsb2NrLgotICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlh
bGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCi0gICAgIyAxNltQQ10gIE9mZnNldCBp
biBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4K
LSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
LSAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93Ci0gICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKQot
ICAgIGxvYWRpIDRbUENdLCB0MAotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
Ci0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgbG9hZGkgKHNp
emUgLSAxKSAqIDRbUENdLCB0MAotICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQwKQotZW5kCisg
ICAgLy8gbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KSB7CisgICAgLy8gT3BlcmFuZHMg
YXJlIGFzIGZvbGxvd3M6CisgICAgLy8gNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQu
CisgICAgLy8gOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJs
b2NrLgorICAgIC8vIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAg
YnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIC8vIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBv
YmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIC8vIC4u
LgorICAgIC8vIG9yYWNsZUNhY2hlSWRbUENdICBPZmZzZXQgaW50byB0aGUgVmFsdWVQcm9maWxl
OjpidWNrZXRzIHRoYXQgd2lsbCBzdG9yZSB0aGUgb3JhY2xlIHZhbHVlIGZvciB0aGlzIGJ5dGVj
b2RlLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MCAgICAgICAgICAgICAgICAgICAgIC8v
IGdsb2JhbE9iamVjdDx0MD4gPSBjb2RlQmxvY2s8dDA+Lmdsb2JhbE9iamVjdDsKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBzdHJ1Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5zdHJ1Y3R1cmU7CisgICAgYnBuZXEg
dDEsIDEyW1BDXSwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgKHN0cnVjdHVyZTx0MT4gIT0gc3RydWN0dXJlQXJnPHBjWzEyXT4pIGdvdG8gLnNsb3c7Cisg
ICAgbG9hZGkgMTZbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gb2Zmc2V0PHQxPiA9IG9mZnNldEFyZ1twY1sxNl1dKTsKKyAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbCh0MSwgdDAsIHQyLCB0MykgICAvLyBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChvZmZzZXQ8dDE+LCBnbG9iYWxP
YmplY3Q8dDA+ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQzPik7CisgICAgbG9hZGkgNFtQQ10sIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDA+
ID0gcGNbNF07CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQwPl0uVGFnID0gdGFnPHQyPjsKKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnJbZHN0SWQ8dDA+XS5QYXlsb2FkID0gcGF5bG9hZDx0Mz47CisgICAgbG9hZGkgKHNp
emUgLSAxKSAqIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Jh
Y2xlSWQ8dDA+ID0gcGNbb3JhY2xlQ2FjaGVJZF07CisgICAgdmFsdWVQcm9maWxlKHQyLCB0Mywg
dDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWVQcm9maWxlKHRh
Zzx0Mj4sIHBheWxvYWQ8dDM+LCBvcmFjbGVJZDx0MD4pOworICAgIC8vIH0gRU5EIG1hY3JvIHJl
c29sdmVHbG9iYWwuCitlbmQKKworLy8gYnl0ZWNvZGU6IGRzdFJlZ0lkIGdsb2JhbE9iamVjdChj
KSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJRCkgb2Zmc2V0KG4pIG9yYWNsZUNhY2hlSWQKKy8v
IGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gZ2xvYmFsT2JqZWN0W29mZnNldF07CisvLworLy8g
ICBQZXJmb3JtcyBhIGR5bmFtaWMgcHJvcGVydHkgbG9va3VwIGZvciB0aGUgZ2l2ZW4gcHJvcGVy
dHksIG9uIHRoZSBwcm92aWRlZAorLy8gICBnbG9iYWwgb2JqZWN0LiAgSWYgc3RydWN0dXJlIG1h
dGNoZXMgdGhlIFN0cnVjdHVyZSBvZiB0aGUgZ2xvYmFsIHRoZW4gcGVyZm9ybQorLy8gICBhIGZh
c3QgbG9va3VwIHVzaW5nIHRoZSBjYXNlIG9mZnNldCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBh
IGZ1bGwgcmVzb2x2ZSBhbmQKKy8vICAgY2FjaGUgdGhlIG5ldyBzdHJ1Y3R1cmUgYW5kIG9mZnNl
dAogCiBfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCi0gICAgZGlzcGF0Y2goNikK
KyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KSAgLy8gcmVzb2x2ZUds
b2JhbCg2LCAuc2xvdyk7CisgICAgZGlzcGF0Y2goNikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUmVzb2x2ZUdsb2JhbFNsb3c6Ci0gICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWwpCi0gICAgZGlzcGF0
Y2goNikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbCkg
ICAvLyBjYWxsIHNsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbDsKKyAgICBkaXNwYXRjaCg2KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IAogIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0
aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQpAQCAtOTcxLDU0ICsxMzE2
LDY5IEBAIF9sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKICMgaG9sZGluZyB0aGUgc2NvcGUsIGFu
ZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlz
IGRvZXMgbm90CiAjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQg
YmUuCiBtYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCi0g
ICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDAKLSAgICBsb2FkaSBk
ZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAgLy8gbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamlu
SW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKSB7CisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgdDAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gY2Zy
LlNjb3BlQ2hhaW4uUGF5bG9hZDsKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZUJydWlqaW5JbmRleDx0Mj4gPSBbZGVC
cnVpamluSW5kZXhPcGVyYW5kXTsKICAgICAKLSAgICBidGl6IHQyLCAuZG9uZQorICAgIGJ0aXog
dDIsIC5kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmIChkZUJydWlqaW5JbmRleDx0Mj4gPT0gMCkgZ290byAuZG9uZTsKICAgICAKLSAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKLSAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFd
LCBGdW5jdGlvbkNvZGUsIC5sb29wCi0gICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2Nv
cGVDaGFpblt0MV0sIC5sb29wCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQxPiA9IGNmci5Db2RlQmxv
Y2s7CisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAu
bG9vcCAgICAgICAgLy8gaWYgKGNvZGVCbG9jazx0MT4uY29kZVR5cGUgIT0gRnVuY3Rpb25Db2Rl
KSBnb3RvIC5sb29wOworICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5b
dDFdLCAubG9vcCAgICAgICAgICAgIC8vIGlmICghY29kZUJsb2NrPHQxPi5uZWVkc0Z1bGxTY29w
ZUNoYWluKSBnb3RvIC5sb29wOwogICAgIAotICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0
aW9uUmVnaXN0ZXJbdDFdLCB0MQorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVn
aXN0ZXJbdDFdLCB0MSAgICAgICAgICAgICAgIC8vIGFjdGl2YXRpb25SZWc8dDE+ID0gY29kZUJs
b2NrPHQxPi5hY3RpdmF0aW9uUmVnaXN0ZXI7CiAKLSAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxs
eSBza2lwIG92ZXIgb25lIHNjb3BlLgotICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBF
bXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCi0gICAgc2NvcGVDaGVjayh0MCwgdDEpCi0gICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIC8vIE5lZWQgdG8gY29uZGl0
aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uICAgIC8vIGlmIChjZnJbYWN0aXZhdGlv
blJlZzx0MT5dLlRhZyA9PSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5ub0FjdGl2YXRpb247CisgICAg
c2NvcGVDaGVjayh0MCwgdDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gc2NvcGVDaGVjayhzY29wZU9iajx0MD4sIGFjdGl2YXRpb25SZWc8dDE+KTsKKyAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzY29wZU9iajx0MD4gPSBzY29wZU9iajx0MD4ubmV4dDsKIC5ub0FjdGl2YXRpb246Ci0g
ICAgc3ViaSAxLCB0MgorICAgIHN1YmkgMSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRlQnJ1aWppbkluZGV4PHQyPi0tOwogICAgIAotICAg
IGJ0aXogdDIsIC5kb25lCisgICAgYnRpeiB0MiwgLmRvbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4PHQyPiA9PSAwKSBn
b3RvIC5kb25lOwogLmxvb3A6Ci0gICAgc2NvcGVDaGVjayh0MCwgdDEpCi0gICAgbG9hZHAgU2Nv
cGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAotICAgIHN1YmkgMSwgdDIKLSAgICBidGlueiB0Miwg
Lmxvb3AKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIHNjb3BlQ2hlY2soc2NvcGVPYmo8dDA+LCBhY3RpdmF0aW9uUmVn
PHQxPik7CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBzY29wZU9iajx0MD4gPSBzY29wZU9iajx0MD4ubmV4dDsKKyAg
ICBzdWJpIDEsIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIGRlQnJ1aWppbkluZGV4PHQyPi0tOworICAgIGJ0aW56IHQyLCAubG9vcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChkZUJydWlqaW5J
bmRleDx0Mj4gIT0gMCkgZ290byAubG9vcDsKIAogLmRvbmU6CisgICAgLy8gfSBFTkQgbWFjcm8g
Z2V0U2NvcGUuCiBlbmQKIAorLy8gYnl0ZWNvZGU6IHJlc29sdmVfc2tpcCBkc3QocikgZ2xvYmFs
T2JqZWN0KGMpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBvZmZzZXQobikgb3JhY2xlQ2Fj
aGVJZAorLy8gZnVuY3Rpb246IAorLy8KKy8vICAgUGVyZm9ybXMgYSBkeW5hbWljIHByb3BlcnR5
IGxvb2t1cCBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LCBvbiB0aGUgcHJvdmlkZWQKKy8vICAgZ2xv
YmFsIG9iamVjdC4gIElmIHN0cnVjdHVyZSBtYXRjaGVzIHRoZSBTdHJ1Y3R1cmUgb2YgdGhlIGds
b2JhbCB0aGVuIHBlcmZvcm0KKy8vICAgYSBmYXN0IGxvb2t1cCB1c2luZyB0aGUgY2FzZSBvZmZz
ZXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gYSBmdWxsIHJlc29sdmUgYW5kCisvLyAgIGNhY2hl
IHRoZSBuZXcgc3RydWN0dXJlIGFuZCBvZmZzZXQuCisvLyAgICAgICAgIAorLy8gICBUaGlzIHdh
bGtzIHRocm91Z2ggbiBsZXZlbHMgb2YgdGhlIHNjb3BlIGNoYWluIHRvIHZlcmlmeSB0aGF0IG5v
bmUgb2YgdGhvc2UgbGV2ZWxzCisvLyAgIGluIHRoZSBzY29wZSBjaGFpbiBpbmNsdWRlIGR5bmFt
aWNhbGx5IGFkZGVkIHByb3BlcnRpZXMuCisKIF9sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5h
bWljOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDMKLSAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1
cmVbdDNdLCB0MworICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbERhdGE8
dDM+ID0gc3AuZ2xvYmFsRGF0YTsgLy8gbWxhbSBGSVhNRSBOZWVkIFNQIHNldHVwLgorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRpb25TdHJ1Y3R1cmU8dDM+ID0gZ2xv
YmFsRGF0YTx0Mz4uYWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBnZXRTY29wZSgKICAgICAgICAg
MjBbUENdLAogICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCi0gICAgICAgICAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAotICAgICAgICAgICAgYnBu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5h
bWljU3VwZXJTbG93Ci0gICAgICAgIGVuZCkKLSAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29s
dmVHbG9iYWxEeW5hbWljU2xvdykKLSAgICBkaXNwYXRjaCg3KQorICAgICAgICAvLyBtYWNybyAo
c2NvcGUsIHNjcmF0Y2gpIHsKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmpl
Y3Rbc2NvcGVdLCBzY3JhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYmo8
c2NyYXRjaD4gPSBzY29wZS5vYmplY3Q7CisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cgICAg
Ly8gaWYgKG9iajxzY3JhdGNoPi5zdHJ1Y3R1cmUgIT0gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4p
IGdvdG8gLnN1cGVyU2xvdzsKKyAgICAgICAgLy8gfSBFTkQgbWFjcm8uCisgICAgICAgIGVuZCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZ2V0U2NvcGUob3BlcmFuZHNbb2Zmc2V0XSwgLi4uKTsKKyAg
ICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNvbHZlR2xvYmFsKDcsIC5zbG93KTsK
KyAgICBkaXNwYXRjaCg3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCi0gICAgZGlz
cGF0Y2goNykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Zvcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKSAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0
aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljOworICAgIGRpc3BhdGNoKDcpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpCi0gICAgZGlzcGF0Y2goNykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOworICAgIGRpc3Bh
dGNoKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRf
b3BfZ2V0X3Njb3BlZF92YXI6CkBAIC0xNTQ1LDMyICsxOTA1LDYyIEBAIF9sbGludF9vcF9uZXdf
ZnVuYzoKIC5vcE5ld0Z1bmNEb25lOgogICAgIGRpc3BhdGNoKDQpCiAKK21hY3JvIGNhbGxUYXJn
ZXRGdW5jdGlvbkJ5Q2FsbGVlKGNhbGxlZSkKKyAgICBpZiBDWFhfSU5URVJQUkVURVIKKyAgICAg
ICAgY3h4Q2FsbEpTRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGFyZ2V0IGlzIGluIHRoZSBDYWxsRnJhbWUuCisgICAgZWxzZQorICAgICAgICBj
YWxsIGNhbGxlZQorICAgICAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdl
IHN0YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKKyAgICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRD
b3VudC5UYWc7ICBnb3RvICpwYzsKKyAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzcGF0Y2hBZnRlckNhbGwoKTsK
KyAgICBlbmQKK2VuZAorCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24oY2FsbExpbmtJbmZvKQor
ICAgIGlmIENYWF9JTlRFUlBSRVRFUgorICAgICAgICBjeHhDYWxsSlNGdW5jdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUYXJnZXQgaXMgaW4gdGhlIENh
bGxGcmFtZS4KKyAgICBlbHNlCisgICAgICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hp
bmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10gICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvLm1hY2hp
bmVDb2RlVGFyZ2V0OworICAgICAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJl
IHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKKyAgICAgICAgLy8gcGMgPSBjZnIuQXJndW1l
bnRDb3VudC5UYWc7ICBnb3RvICpwYzsKKyAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzcGF0Y2hBZnRlckNhbGwo
KTsKKyAgICBlbmQKK2VuZAogCiBtYWNybyBkb0NhbGwoc2xvd1BhdGgpCi0gICAgbG9hZGkgNFtQ
Q10sIHQwCi0gICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZv
OjpjYWxsZWVbdDFdLCB0MgotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCi0gICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdwot
ICAgIGxvYWRpIDEyW1BDXSwgdDMKLSAgICBhZGRwIDI0LCBQQwotICAgIGxzaGlmdGkgMywgdDMK
LSAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKLSAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAotICAgIHN0b3JlaSB0Miwg
Q2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQ
YXlsb2FkT2Zmc2V0W3QzXQotICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCi0gICAgc3RvcmVpIFBD
LCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KLSAgICBzdG9yZXAgY2ZyLCBDYWxsZXJG
cmFtZVt0M10KLSAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3Qz
XQotICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCi0gICAgc3RvcmVp
IENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCi0gICAgbW92ZSB0MywgY2ZyCi0g
ICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCi0gICAgZGlz
cGF0Y2hBZnRlckNhbGwoKQorICAgIC8vIG1hY3JvIGRvQ2FsbChzbG93UGF0aCkgeworICAgIGxv
YWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdW5j
SWQ8dDA+ID0gcGNbMV07CisgICAgbG9hZGkgMTZbUENdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhbGxMaW5rSW5mbzx0MT4gPSBwY1s0XTsKKyAgICBsb2FkcCBM
TEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIgICAgICAgICAgICAgLy8gY2FsbGVlPHQy
PiA9IENhbGxMaW5rSW5mbzx0MT4uY2FsbGVlOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpIC8vIGxvYWQoZnVuY0lkPHQwPiA9
PT4gZnVuYzx0Mz4sIC4uLik7CisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGlmIChmdW5jPHQzPiAhPSBjYWxsZWU8dDI+IGkuZS4gaXNC
eXRlY29kZSgpPykgZ290byAuc2xvdzsKKyAgICBsb2FkaSAxMltQQ10sIHQzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0PHQzPiA9IHBjWzNdOworCisgICAgYWRk
cCAyNCwgUEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjICs9
IDI0IGkuZS4gcG9pbnQgdG8gdGhlIHJldHVybiBhZGRyZXNzLgorCisgICAgLy8gbmV3RnJhbWU8
dDM+ID0gY2ZyICsgb2Zmc2V0PHQzPiA8PCAzOyAgLy8gb2Zmc2V0ID0gc2l6ZW9mIGN1cnJlbnQg
ZnJhbWU7CisgICAgbHNoaWZ0aSAzLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9mZnNldDx0Mz4gPSBvZmZzZXQ8dDM+IDw8IDM7CisgICAgYWRkcCBjZnIsIHQz
ICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyICAgIC8vIG5ld0ZyYW1lPHQzPiA9
IG9mZnNldDx0Mz4gKyBjZnI7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBuZXdGcmFtZToKKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MCAgICAgICAgICAgICAgLy8g
c2NvcGU8dDA+ID0gY2FsbGVlPHQyPi5zY29wZUNoYWluOworICAgIHN0b3JlaSB0MiwgQ2FsbGVl
ICsgUGF5bG9hZE9mZnNldFt0M10gICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVl
LlBheWxvYWQgPSBjYWxsZWU8dDI+OworICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbdDNdICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uU2NvcGVDaGFpbi5QYXlsb2Fk
ID0gc2NvcGU8dDA+OworICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyA8dDI+ID0gLi4uOworICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBw
YzsgLy8gU3Rhc2ggdGhlIHJldHVyblBDLgorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3Qz
XSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVyRnJhbWUgPSBj
ZnI7CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10gICAg
ICAgIC8vIG5ld0ZyYW1lPHQzPi5Bcmd1bWVudENvdW50LlBheWxvYWQgPSA8dDI+OworICAgIHN0
b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdICAgICAgICAgICAgICAvLyBuZXdG
cmFtZTx0Mz4uQ2FsbGVlLlRhZyA9IENlbGxUYWc7CisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3Bl
Q2hhaW4gKyBUYWdPZmZzZXRbdDNdICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5TY29wZUNoYWlu
LlRhZyA9IENlbGxUYWc7CisgICAgbW92ZSB0MywgY2ZyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKKworICAgIC8vIENhbGwgdGhl
IHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0aG9kOgorICAgICMgbWxhbSBjYWxsIExM
SW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0gICAgICAgLy8gY2FsbCBjYWxs
TGlua0luZm88dDE+Lm1hY2hpbmVDb2RlVGFyZ2V0OworICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0
MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbFRhcmdldEZ1bmN0aW9uKGNh
bGxMaW5rSW5mbzx0MT4pOwogCiAub3BDYWxsU2xvdzoKLSAgICBzbG93UGF0aEZvckNhbGwoNiwg
c2xvd1BhdGgpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dQYXRoKSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNhbGwgc2xvd1BhdGg7CisgICAgLy8gfSBFTkQgZG9DYWxsLgogZW5kCiAK
IApAQCAtMTcxOSw2ICsyMTA5LDkgQEAgX2xsaW50X29wX2VuZDoKICAgICBkb1JldHVybigpCiAK
IAoraWYgQ1hYX0lOVEVSUFJFVEVSCitlbHNlICMgbm90IENYWF9JTlRFUlBSRVRFUgorCiBfbGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZToKICAgICAjIFdoZW4gdGhyb3dpbmcg
ZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludFNsb3dQYXRocyks
IHNvCiAgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRl
ZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCkBAIC0xNzcxLDExICsyMTY0LDExIEBAIG1hY3JvIG5h
dGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICAgICAgZXJyb3IKICAgICBlbmQK
ICAgICBiaW5lcSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIEVtcHR5
VmFsdWVUYWcsIC5leGNlcHRpb24KLSAgICByZXQKKyAgICByZXRfbWxhbQogLmV4Y2VwdGlvbjoK
ICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDEpICMgVGhpcyBpcyByZWFsbHkg
b25seSBuZWVkZWQgb24gWDg2CiAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdLCBQQwogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdGhyb3dfZnJvbV9uYXRpdmVfY2FsbCkK
ICAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKIGVuZAotCitl
bmQgIyBub3QgQ1hYX0lOVEVSUFJFVEVSCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTIzMjc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgY29uc3QgVmFsdWVOdWxsICAgICAg
ID0gVGFnQml0VHlwZU90aGVyCiAKICMgVXRpbGl0aWVzLgogbWFjcm8gZGlzcGF0Y2goYWR2YW5j
ZSkKLSAgICBhZGRwIGFkdmFuY2UsIFBDCi0gICAgam1wIFtQQiwgUEMsIDhdCisgICAgYWRkcCBh
ZHZhbmNlLCBQQyAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKKyAgICBqbXAgW1BCLCBQQywgOF0gICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogZW5kCiAKIG1hY3JvIGRpc3BhdGNoSW50KGFkdmFuY2UpCkBAIC01MSw5ICs1MSw5IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24s
IGFyZzEsIGFyZzIpCi0gICAgbW92ZSBhcmcxLCB0NQotICAgIG1vdmUgYXJnMiwgdDQKLSAgICBj
YWxsIGZ1bmN0aW9uCisgICAgbW92ZSBhcmcxLCB0NSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhcmcxID0gLi4uOworICAgIG1vdmUgYXJnMiwgdDQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYXJnMiA9IC4uLjsKKyAgICBjYWxsIGZ1bmN0aW9uICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbjsKIGVuZAogCiAjIFRoaXMgYmFy
ZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgpA
QCAtNzEsOCArNzEsOCBAQCBtYWNybyBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCiBlbmQKIAogbWFj
cm8gcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCi0gICAgbW92ZSB0MCwgUEMKLSAgICBtb3ZlIHQx
LCBjZnIKKyAgICBtb3ZlIHQwLCBQQyAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5z
dHJ1Y3Rpb248dDA+CisgICAgbW92ZSB0MSwgY2ZyICAgICAgICAgICAgICAgIC8vIHBjID0gcmVz
dWx0LmV4ZWNTdGF0ZTx0MT4KICAgICBtb3ZlIHQzLCBQQgogICAgIHN1YnAgUEIsIFBDCiAgICAg
dXJzaGlmdHAgMywgUEMKQEAgLTE4MCw1OCArMTgwLDg2IEBAIGVuZAogCiAjIEluc3RydWN0aW9u
IGltcGxlbWVudGF0aW9ucwogCisvLyBieXRlY29kZTogZW50ZXIKKy8vCisvLyAgIEluaXRpYWxp
emVzIGxvY2FsIHZhcmlhYmxlcyB0byB1bmRlZmluZWQuIElmIHRoZSBjb2RlIGJsb2NrIHJlcXVp
cmVzCisvLyAgIGFuIGFjdGl2YXRpb24sIGVudGVyX3dpdGhfYWN0aXZhdGlvbiBpcyB1c2VkIGlu
c3RlYWQuCisvLyAgIFRoaXMgb3Bjb2RlIGFwcGVhcnMgb25seSBhdCB0aGUgYmVnaW5uaW5nIG9m
IGEgY29kZSBibG9jay4KKwogX2xsaW50X29wX2VudGVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJs
b2NrPiA9IGNmci5Db2RlQmxvY2sKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0s
IHQyICAgICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgYnRp
eiB0MiwgLm9wRW50ZXJEb25lCi0gICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAKKyAgICBidGl6
IHQyLCAub3BFbnRlckRvbmUgICAgICAgICAgICAgICAgICAgLy8gaWYgKG51bVZhcnM8dDI+ID09
IDApIGdvdG8gLmRvbmU7CisgICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAgICAgICAgICAgICAg
ICAgIC8vIGpzVW5kZWZpbmVkPHQwPiA9IFVuZGVmaW5lZDsKIC5vcEVudGVyTG9vcDoKLSAgICBz
dWJpIDEsIHQyCi0gICAgc3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0KLSAgICBidGlueiB0MiwgLm9w
RW50ZXJMb29wCisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgbnVtVmFyczx0Mj4tLTsKKyAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XSAgICAgICAgICAg
ICAgICAgLy8gICBjZnJbbnVtVmFyczx0Mj5dID0ganNVbmRlZmluZWQ8dDA+OworICAgIGJ0aW56
IHQyLCAub3BFbnRlckxvb3AgICAgICAgICAgICAgICAgICAvLyBpZiAobnVtVmFyczx0Mj4gIT0g
MCkgZ290byAubG9vcDsKIC5vcEVudGVyRG9uZToKLSAgICBkaXNwYXRjaCgxKQorICAgIGRpc3Bh
dGNoKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CisKIAorLy8gYnl0ZWNvZGU6IGNyZWF0ZV9hY3RpdmF0aW9uIGRzdChyKQorLy8KKy8vICAgSWYg
dGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxmcmFtZSBoYXMgbm90IHlldCBiZWVu
IGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQgd3JpdGVzIGl0IGJhY2sgdG8gZHN0
LgogCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAgICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCi0gICAgYnBuZXEgW2NmciwgdDAsIDhdLCBWYWx1
ZUVtcHR5LCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0MD4gPSBv
cGVyYW5kPGRzdFJlZ0lkPjsKKyAgICBicG5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5v
cENyZWF0ZUFjdGl2YXRpb25Eb25lIC8vIGlmIChjZnJbYWN0aXZhdGlvblJlZzx0MD5dICE9IEVt
cHR5KSBnb3RvIC5kb25lOworICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0
ZV9hY3RpdmF0aW9uKSAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb247
CiAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNo
KDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBpbml0X2xhenlfcmVnIGRzdChyKQorLy8K
Ky8vICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8vICAgVGhpcyBvcGNvZGUg
YXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRf
b3BfaW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDAKLSAgICBzdG9yZXAgVmFsdWVFbXB0eSwgW2NmciwgdDAsIDhdCi0gICAgZGlz
cGF0Y2goMikKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAgICAgICAgICAgICAvLyBkc3Q8
dDA+ID0gb3BlcmFuZDxkc3RSZWdJZD47CisgICAgc3RvcmVwIFZhbHVlRW1wdHksIFtjZnIsIHQw
LCA4XSAgICAgLy8gY2ZyW2RzdDx0MD5dID0gRW1wdHk7CisgICAgZGlzcGF0Y2goMikgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2Rl
OiBjcmVhdGVfYXJndW1lbnRzIGRzdChyKQorLy8KKy8vICAgQ3JlYXRlcyB0aGUgJ2FyZ3VtZW50
cycgb2JqZWN0IGFuZCBwbGFjZXMgaXQgaW4gYm90aCB0aGUKKy8vICAgJ2FyZ3VtZW50cycgY2Fs
bCBmcmFtZSBzbG90IGFuZCB0aGUgbG9jYWwgJ2FyZ3VtZW50cycKKy8vICAgcmVnaXN0ZXIsIGlm
IGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGluaXRpYWxpc2VkLgorCiBfbGxpbnRfb3BfY3JlYXRl
X2FyZ3VtZW50czoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4
XSwgdDAKLSAgICBicG5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFyZ3Vt
ZW50c0RvbmUKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1l
bnRzKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZHN0PHQwPiA9IG9wZXJhbmQ8ZHN0UmVnSWQ+OworICAgIGJwbmVxIFtjZnIs
IHQwLCA4XSwgVmFsdWVFbXB0eSwgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZSAgLy8gaWYgKGNmcltk
c3Q8dDA+XSAhPSBFbXB0eSkgZ290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKSAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0
ZV9hcmd1bWVudHM7CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisg
ICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG9wX2NyZWF0ZV90aGlz
IHRoaXMocikgcHJvdG8ocikKKy8vCisvLyAgIEFsbG9jYXRlIGFuIG9iamVjdCBhcyAndGhpcycs
IGZvciB1c2UgaW4gY29uc3RydWN0aW9uLgorLy8gICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBi
ZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfY3Jl
YXRlX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0
MAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MgotICAg
IGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXM8dDA+ID0gY2ZyLkNhbGxlZTsKKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIgICAgICAgLy8g
aW5oZXJpdG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOworICAgIGJ0cHogdDIs
IC5vcENyZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoaW5oZXJp
dG9yID09IDApIGdvdG8gLnNsb3c7CisgICAgLy8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmlu
YWxPYmplY3RTaXplQ2xhc3NJbmRleCwganNGaW5hbE9iamVjdC5jbGFzcywgdDIsIHQwLCB0MSwg
dDMsIC5vcENyZWF0ZVRoaXNTbG93KTsKICAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5h
bE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0lu
Zm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKLSAgICBsb2FkaXMgOFtQQiwg
UEMsIDhdLCB0MQotICAgIHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikK
KyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpc0lEPHQxPiA9IG9wZXJhbmQ8dGhpc1JlZ0lkPjsKKyAgICBzdG9yZXAgdDAsIFtjZnIs
IHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3RoaXNJRDx0MT5dID0g
dGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0
Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykgICAg
ICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX3RoaXM7CisgICAgZGlzcGF0Y2goMikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKIAogCiBfbGxpbnRfb3BfY29udmVydF90aGlzOgpAQCAtNTAyLDE2ICs1MzAsMTYgQEAgbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aQogICAgIGJwYWVxIHQxLCB0YWdU
eXBlTnVtYmVyLCAub3AxTm90SW50T3AySW50CiAgICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwg
LnNsb3cKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0MSwgZnQxCisjIG1s
YW0gICAgZnAyZCB0MSwgZnQxCiAgICAgam1wIC5vcDFOb3RJbnRSZWFkeQogLm9wMU5vdEludE9w
MkludDoKICAgICBjaTJkIHQxLCBmdDEKIC5vcDFOb3RJbnRSZWFkeToKICAgICBsb2FkaXMgOFtQ
QiwgUEMsIDhdLCB0MgogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDAKLSAgICBmcDJkIHQwLCBm
dDAKKyMgbWxhbSAgICBmcDJkIHQwLCBmdDAKICAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDAp
Ci0gICAgZmQycCBmdDAsIHQwCisjIG1sYW0gICAgZmQycCBmdDAsIHQwCiAgICAgc3VicCB0YWdU
eXBlTnVtYmVyLCB0MAogICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2go
NSkKQEAgLTUyMiw5ICs1NTAsOSBAQCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJP
cGVyYXRpCiAgICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKICAgICBjaTJkIHQwLCBm
dDAKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0MSwgZnQxCisjIG1sYW0g
ICAgZnAyZCB0MSwgZnQxCiAgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQotICAgIGZkMnAg
ZnQwLCB0MAorIyBtbGFtICAgIGZkMnAgZnQwLCB0MAogICAgIHN1YnAgdGFnVHlwZU51bWJlciwg
dDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDUpCkBAIC0xMjkw
LDEwICsxMzE4LDEwIEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAK
IC5vcDFOb3RJbnRPcDJOb3RJbnQ6CiAgICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cK
ICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0MSwgZnQxCisjIG1sYW0gICAg
ZnAyZCB0MSwgZnQxCiAub3AxTm90SW50UmVhZHk6CiAgICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0
MAotICAgIGZwMmQgdDAsIGZ0MAorIyBtbGFtICAgIGZwMmQgdDAsIGZ0MAogICAgIGRvdWJsZUNv
bXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQogICAgIGRpc3BhdGNoKDQpCiAKQEAgLTEzMDEs
NyArMTMyOSw3IEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAKICAg
ICBjaTJkIHQwLCBmdDAKICAgICBidHB6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwogICAgIGFk
ZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBmcDJkIHQxLCBmdDEKKyMgbWxhbSAgICBmcDJkIHQx
LCBmdDEKICAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKICAgICBkaXNw
YXRjaCg0KQogCkBAIC0xNTYyLDYgKzE1OTAsOCBAQCBfbGxpbnRfb3BfZW5kOgogICAgIGxvYWRw
IFtjZnIsIHQwLCA4XSwgdDAKICAgICBkb1JldHVybigpCiAKK2lmIENYWF9JTlRFUlBSRVRFUgor
ZWxzZSAjIG5vdCBDWFhfSU5URVJQUkVURVIKIAogX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRo
X3RyYW1wb2xpbmU6CiAgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChp
LmUuIHRocm93aW5nIGZyb20gTExJbnRTbG93UGF0aHMpLCBzbwpAQCAtMTU5Nyw3ICsxNjI3LDcg
QEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZgogICAgIGFkZHAgMTYg
LSA4LCBzcAogICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA4W3NwXSwgdDMK
ICAgICBidHBueiBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvblt0M10sIC5leGNlcHRpb24KLSAgICBy
ZXQKKyAgICByZXRfbWxhbQogLmV4Y2VwdGlvbjoKICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwodDEpCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQ
QwpAQCAtMTYwOCw0ICsxNjM4LDUgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0
YWJsZU9mZgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdGhyb3dfZnJvbV9uYXRpdmVfY2FsbCkK
ICAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKIGVuZAorZW5k
ICMgbm90IENYWF9JTlRFUlBSRVRFUgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjMyNzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTExMCwyMSArMTEwLDM2IEBAIGVuZAogCiAjIFNvbWUgY29tbW9uIHV0
aWxpdGllcy4KIG1hY3JvIGNyYXNoKCkKLSAgICBzdG9yZWkgdDAsIDB4YmJhZGJlZWZbXQotICAg
IG1vdmUgMCwgdDAKLSAgICBjYWxsIHQwCisgICAgLy8gbWFjcm8gY3Jhc2goKSB7CisgICAgaWYg
Q1hYX0lOVEVSUFJFVEVSCisgICAgICAgIGN4eENyYXNoCisgICAgZWxzZQorICAgICAgICBzdG9y
ZWkgdDAsIDB4YmJhZGJlZWZbXQorICAgICAgICBtb3ZlIDAsIHQwCisgICAgICAgIGNhbGwgdDAK
KyAgICBlbmQKKyAgICAvLyB9IEVORCBjcmFzaC4KIGVuZAogCiBtYWNybyBhc3NlcnQoYXNzZXJ0
aW9uKQogICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlv
bikgewogICAgICAgICBhc3NlcnRpb24oLm9rKQogICAgICAgICBjcmFzaCgpCiAgICAgLm9rOgor
ICAgIC8vIH0gRU5EIGFzc2VydC4KICAgICBlbmQKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKLSAgICBpZiBBUk12NworICAg
ICMgbWxhbSBCRUdJTgorICAgIGlmIENYWF9JTlRFUlBSRVRFUgorICAgICAgICAjIG1sYW0gVGhp
cyBpcyByZWFsbHkgbm90IG5lY2Vzc2FyeS4gIE5lZWQgdG8gcmVwbGFjZSB3aXRoIGVxdWl2YWxl
bnQgbWFjaGluZXJ5LgorICAgICAgICAjIFRoZSBDIGZ1bmN0aW9uIGZyYW1lIHNob3VsZCB0YWtl
IGNhcmUgb2YgcHJlc2VydmluZyB0aGUgcmV0dXJuIGFkZHJlc3MKKyAgICAgICAgIyBpdHNlbGYu
IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyBhbnkgZXh0cmEgd29yayBoZXJlLgorICAgICAgICAj
IG1sYW0gTk9UIE5FRURFRCBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyICMgbWxhbSBGSVhN
RSB3ZSBjYW4ndCBkbyB0aGlzIGluIEMtY29kZS4KKyAgICAjIG1sYW0gRU5ECisgICAgZWxzaWYg
QVJNdjcKICAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgogICAgIGVsc2lmIFg4
NiBvciBYODZfNjQKICAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0ZXIKQEAgLTEzNCw3ICsx
NDksMTQgQEAgbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlcwogZW5kCiAK
IG1hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQot
ICAgIGlmIEFSTXY3CisgICAgIyBtbGFtIEJFR0lOICAgIAorICAgIGlmIENYWF9JTlRFUlBSRVRF
UgorICAgICAgICAjIG1sYW0gRklYTUU6IFJlcGxhY2Ugd2l0aCBhcHByb3ByaWF0ZSBlcXVpdmFs
ZW50IG1hY2hpbmVyeS4KKyAgICAgICAgIyBUaGUgQyBmdW5jdGlvbiBmcmFtZSBzaG91bGQgdGFr
ZSBjYXJlIG9mIHJlc3RvcmluZyB0aGUgcmV0dXJuIGFkZHJlc3MKKyAgICAgICAgIyBpdHNlbGYu
IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyBhbnkgZXh0cmEgd29yayBoZXJlLgorICAgICAgICAj
IG1sYW0gTk9UIE5FRUVERUQgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIgIyBtbGFtIEZJWE1FIHdl
IGNhbid0IGRvIHRoaXMgaW4gQy1jb2RlLgorICAgICMgbWxhbSBFTkQKKyAgICBlbHNpZiBBUk12
NwogICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgogICAgIGVsc2lmIFg4NiBvciBYODZf
NjQKICAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgpAQCAtMTQ0LDYgKzE2Niw5IEBAIG1hY3Jv
IHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHMKIGVuZAogCiBtYWNybyB0cmFjZUV4
ZWN1dGlvbigpCisgICAgIyBtbGFtIE5PVCBORUVERUQgaWYgQ1hYX0lOVEVSUFJFVEVSCisgICAg
IyAgICBjeHhUcmFjZSAgIyBtYWtlIHN1cmUgdG8gcmVtb3ZlIHRoaXMgb3Bjb2RlIGZyb20gdGhl
IGluc3RydWN0aW9ucy4KKyAgICAjZW5kCiAgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKICAgICAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF90cmFjZSkKICAgICBlbmQKQEAgLTE1NCw4ICsxNzksNyBA
QCBtYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgc2xvd1BhdGgpCiAgICAgICAgIGFkdmFu
Y2UsCiAgICAgICAgIHNsb3dQYXRoLAogICAgICAgICBtYWNybyAoY2FsbGVlKQotICAgICAgICAg
ICAgY2FsbCBjYWxsZWUKLSAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAg
ICAgIGNhbGxUYXJnZXRGdW5jdGlvbkJ5Q2FsbGVlKGNhbGxlZSkKICAgICAgICAgZW5kKQogZW5k
CiAKQEAgLTE3Nyw3ICsyMDEsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQogZW5kCiAKIG1hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQotICAgIGFzc2VydChtYWNy
byAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCisg
ICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsIG9rIGVuZCkgLy8gYXNzZXJ0KGluZGV4PGEwPiA8IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KTsKIGVuZAogCiBtYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0
UmVnaXN0ZXIpCkBAIC0yMTgsMTggKzI0MiwzMyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tH
ZXR0ZXIsIGNvZGVCbG9jCiAgICAgaWYgSklUX0VOQUJMRUQKICAgICAgICAgYmFkZGlzIDUsIENv
ZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyICsgRXhlY3V0aW9uQ291bnRlcjo6bV9jb3Vu
dGVyW3QxXSwgLmNvbnRpbnVlCiAgICAgICAgIGNDYWxsMihvc3JTbG93UGF0aCwgY2ZyLCBQQykK
KworICAgICAgICAjIFVwZGF0ZSB0aGUgY3VycmVudEZyYW1lUG9pbnRlcjoKICAgICAgICAgbW92
ZSB0MSwgY2ZyCisKKyAgICAgICAgIyB0MCBtdXN0IGVpdGhlciBiZSAwIG9yIHBvaW50cyB0byBl
eGVjdXRhYmxlIGNvZGUgZS5nLiBKSVR0ZWQgY29kZS4KKyAgICAgICAgIyBJZiBpdCBpcyAwLCB0
aGVuIHdlIGRvbid0IGhhdmUgYSBuYXRpdmUgY29kZSB0YXJnZXQgdG8gZXhlY3V0ZS4KKyAgICAg
ICAgIyBHbyByZWNvdmVyIG91ciBzdGF0ZSBhbmQgc3RhcnQgaW50ZXJwcmV0aW5nIHRoaXMgZnVu
Y3Rpb24uCiAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCi0gICAgICAgIGxvYWRwIFJldHVyblBD
W2Nmcl0sIHQyCi0gICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQot
ICAgICAgICBqbXAgdDAKKworICAgICAgICAjIElmIGl0IGlzIG5vdCAwLCB0aGVuLCB3ZSBoYXZl
IGEgbmF0aXZlIGZ1bmN0aW9uIHRvIGNhbGwgKEpJVHRlZCBvcgorICAgICAgICAjIG90aGVyd2lz
ZSkuIERvIGEgdGFpbGNhbGwgdG8gdGhlIHRhcmdldCBjb2RlLgorICAgICAgICBkb1RhaWxDYWxs
KHQwKQorICAgICAgICAjIG1sYW0gbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgIyBt
bGFtIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICAjIG1sYW0g
am1wIHQwCisKKyAgICAgICAgIyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgb3NyIGxvZ2ljIGhh
cyBkZXRlcm1pbmVkIHRoYXQgdGhlcmUgaXNuJ3QgYW55CisgICAgICAgICMgSklUdGVkIGNvZGUg
dG8gaW52b2tlIGF0IHRoaXMgdGltZS4gIFJlZmV0Y2ggdGhlIGN1cnJlbnQgY29kZWJsb2NrIChh
cworICAgICAgICAjIGl0IG1heSBoYXZlIGNoYW5nZWQpLCBhbmQgZmFsbCB0aHJ1IHRvIC5jb250
aW51ZSB0byBnbyBpbnRlcnByZXQgdGhlCisgICAgICAgICMgZnVuY3Rpb24uCiAgICAgLnJlY292
ZXI6CiAgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CiAgICAgZW5k
CiAgICAgY29kZUJsb2NrU2V0dGVyKHQxKQogICAgIAotICAgICMgU2V0IHVwIHRoZSBQQy4KKyAg
ICAjIFNldCB1cCB0aGUgUEMuICBUaGUgY2FsbGVyIHdpbGwgZGlzcGF0Y2gvanVtcCB0byB0aGlz
IGJ5dGVjb2RlIFBDIGFkZHIuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgogICAgICAgICBtb3ZlIDAsIFBDCkBAIC0yODks
NyArMzI4LDcgQEAgZW5kCiAKIG1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJ
bmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBzbG93Q2FzZSkKICAgICBpZiBBTFdBWVNfQUxMT0NBVEVfU0xPVwotICAgICAgICBqbXAg
c2xvd0Nhc2UKKyAgICAgICAgam1wIHNsb3dDYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgZ290byAuc2xvd0Nhc2U7CiAgICAgZWxzZQogICAgICAgICBjb25z
dCBvZmZzZXRPZk15U2l6ZUNsYXNzID0KICAgICAgICAgICAgIEpTR2xvYmFsRGF0YTo6aGVhcCAr
CkBAIC0zMDMsMjMgKzM0MiwyMyBAQCBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNs
YXNzSW5kCiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUxpc3Q6OmhlYWQKIAogICAgICAg
ICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRo
ZSBzdGFjay4KLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCi0gICAgICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgY29kZUJsb2NrPGE0PiA9IGNmci5Db2RlQmxvY2s7CisgICAgICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEgICAvLyAgIGdsb2JhbERhdGE8YTQ+
ID0gY29kZUJsb2NrPGE0Pi5nbG9iYWxEYXRhOwogICAgICAgICAKLSAgICAgICAgIyBHZXQgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCi0gICAgICAgIGxvYWRwIG9mZnNldE9mTXlT
aXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKLSAgICAg
ICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgICAgIC8vIEdldCB0aGUgb2JqZWN0IGZyb20g
dGhlIGZyZWUgbGlzdC4gICAKKyAgICAgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9m
ZnNldE9mRmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdCAvLyAgIHJlc3VsdDxhMz4gPSBn
bG9iYWxEYXRhPGE0Pi5NeVNpemVDbGFzcy5GaXJzdEZyZWVDZWxsOworICAgICAgICBidHB6IHJl
c3VsdCwgc2xvd0Nhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoIXJl
c3VsdDxhMz4gaS5lLiBubyBmcmVlIGNlbGwpIGdvdG8gLnNsb3dDYXNlOwogICAgICAgICAKLSAg
ICAgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCi0gICAgICAgIGxv
YWRwIFtyZXN1bHRdLCBzY3JhdGNoMgotICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9m
TXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgICAgIC8v
IFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jl
c3VsdF0sIHNjcmF0Y2gyICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbmV4dDxhNT4g
PSByZXN1bHQ8YTM+LnB0cjsKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6
ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSAvLyAgIGdsb2JhbERhdGE8
YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNlbGwgPSBuZXh0PGE1PjsKICAgICAKLSAgICAgICAg
IyBJbml0aWFsaXplIHRoZSBvYmplY3QuCi0gICAgICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtz
Y3JhdGNoMV0sIHNjcmF0Y2gyCi0gICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KLSAg
ICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCi0gICAg
ICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAgICAgIHN0
b3JlcCAwLCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgLy8g
SW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2Ny
YXRjaDFdLCBzY3JhdGNoMiAgICAgICAgICAgLy8gICBjbGFzc0luZm88YTU+ID0gZ2xvYmFsRGF0
YTxhND4uY2xhc3NJbmZvT2Zmc2V0OworICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRd
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+LnB0ciA9IGNsYXNzSW5m
bzxhNT47CisgICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVz
dWx0XSAgICAgICAvLyAgIHJlc3VsdDxhMz4uc3RydWN0dXJlID0gc3RydWN0dXJlPGEyPjsKKyAg
ICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0gICAgICAgICAg
IC8vICAgcmVzdWx0PGEzPi5pbmhlcml0b3JJRCA9IDA7CisgICAgICAgIHN0b3JlcCAwLCBKU09i
amVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0gICAgICAvLyAgIHJlc3VsdDxhMz4ub3V0
T2ZMaW5lU3RvcmFnZSA9IDA7CiAgICAgZW5kCiBlbmQKIApAQCAtMzI3LDkgKzM2NiwyOSBAQCBt
YWNybyBkb1JldHVybigpCiAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKICAgICBsb2FkcCBD
YWxsZXJGcmFtZVtjZnJdLCBjZnIKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bih0MikKLSAgICByZXQKKyAgICByZXRfbWxhbQogZW5kCiAKK21hY3JvIGRvVGFpbENhbGwoY2Fs
bFRhcmdldCkKKyAgICBpZiBDWFhfSU5URVJQUkVURVIKKyAgICAgICAgIyBGb3IgYysrIGNvZGUs
IHdlIGRvbid0IG1hbmFnZSB0aGUgcmV0dXJuIFBDIGRpcmVjdGx5LiAgRW1pdCBhCisgICAgICAg
ICMgdGFpbGNhbGwgaWRpb20gYW5kIGxldCB0aGUgY29tcGlsZXIgb3B0aW1pemUgaXQgaW50byBh
IHJlYWwgdGFpbCBjYWxsCisgICAgICAgICMgaWYgcG9zc2libGUuCisgICAgICAgIGNyYXNoKCkK
KyAgICAgICAgI2N4eFRhaWxDYWxsIHQwCisgICAgZWxzZQorICAgICAgICAjIFRvIGRvIGEgdGFp
bCBjYWxsLCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIHJldHVyblBDIGJlZm9yZSB3ZSBqdW1wIHRv
CisgICAgICAgICMgdGhlIGNhbGwgdGFyZ2V0IHNvIHRoYXQgaXQgbG9va3MgbGlrZSB3ZSBjYWxs
ZWQgaXQgZGlyZWN0bHkgZnJvbSBvdXIKKyAgICAgICAgIyBjYWxsZXIuICBUaGlzIHdheSwgdGhl
IG5hdGl2ZSBjb2RlIGNhbiBieXBhc3MgdXMgd2hlbiByZXR1cm5pbmcgdG8gb3VyCisgICAgICAg
ICMgY2FsbGVyLgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgZW5k
CitlbmQKKworaWYgQ1hYX0lOVEVSUFJFVEVSCitlbHNlICMgbm90IENYWF9JTlRFUlBSRVRFUgog
CiAjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCiBfbGxpbnRfYmVnaW46CkBAIC0z
NjksNiArNDI4LDcgQEAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlYwog
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCiAgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfc2xv
d19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogCitlbmQgIyBub3QgQ1hYX0lOVEVSUFJFVEVS
CiAKICMgVmFsdWUtcmVwcmVzZW50YXRpb24tc3BlY2lmaWMgY29kZS4KIGlmIEpTVkFMVUU2NApA
QCAtNjM2LDEwICs2OTYsMjAgQEAgX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CiAKIF9sbGludF9v
cF9uZXdfZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIG1sYW1CcmVhawogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRj
aCgzKQogCiAKKy8vIGJ5dGVjb2RlOiBjYWxsIGZ1bmMocikgYXJnQ291bnQobikgcmVnaXN0ZXJP
ZmZzZXQobikKKy8vCisvLyAgIFBlcmZvcm0gYSBmdW5jdGlvbiBjYWxsLgorLy8gICAgICAgICAg
IAorLy8gICByZWdpc3Rlck9mZnNldCBpcyB0aGUgZGlzdGFuY2UgdGhlIGNhbGxGcmFtZSBwb2lu
dGVyIHNob3VsZCBtb3ZlCisvLyAgIGJlZm9yZSB0aGUgVk0gaW5pdGlhbGl6ZXMgdGhlIG5ldyBj
YWxsIGZyYW1lJ3MgaGVhZGVyLgorLy8gICAgICAgICAgIAorLy8gICBkc3QgaXMgd2hlcmUgb3Bf
cmV0IHNob3VsZCBzdG9yZSBpdHMgcmVzdWx0LgorCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY2FsbCkKQEAgLTY5Mywx
MCArNzYzLDEzIEBAIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgCiAgICAgc2xvd1BhdGhGb3JD
YWxsKDQsIF9sbGludF9zbG93X3BhdGhfY2FsbF9ldmFsKQogCitpZiBDWFhfSU5URVJQUkVURVIK
K2Vsc2UgIyBub3QgQ1hYX0lOVEVSUFJFVEVSCiAKIF9sbGludF9nZW5lcmljX3JldHVybl9wb2lu
dDoKICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAKK2VuZCAjIG5vdCBDWFhfSU5URVJQUkVURVIK
IAogX2xsaW50X29wX3N0cmNhdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCkBAIC03NjMsNiArODM2
LDggQEAgX2xsaW50X29wX2RlYnVnOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2RlYnVnKQogICAgIGRpc3BhdGNoKDQpCiAKK2lmIENYWF9JTlRFUlBSRVRFUgorZWxzZSAjIG5v
dCBDWFhfSU5URVJQUkVURVIKIAogX2xsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmU6CiAgICAg
bmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZlRXhlY3V0YWJsZTo6bV9mdW5jdGlvbikKQEAgLTc3
MSw2ICs4NDYsNyBAQCBfbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZToKIF9sbGludF9uYXRp
dmVfY29uc3RydWN0X3RyYW1wb2xpbmU6CiAgICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZl
RXhlY3V0YWJsZTo6bV9jb25zdHJ1Y3RvcikKIAorZW5kICMgbm90IENYWF9JTlRFUlBSRVRFUgog
CiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9u
J3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJp
c2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKQEAgLTgzNSw4ICs5
MTEsMTEgQEAgX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgogX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uOgogICAgIG5vdFN1cHBvcnRlZCgpCiAKK2lmIENYWF9JTlRFUlBSRVRFUgor
ZWxzZSAjIG5vdCBDWFhfSU5URVJQUkVURVIKIAogIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50
LgogX2xsaW50X2VuZDoKICAgICBjcmFzaCgpCiAKK2VuZCAjIG5vdCBDWFhfSU5URVJQUkVURVIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEs
MjI1IEBACiAjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCiAjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgogCisvLyBtbGFtIEJFR0lOCisjaWYgRU5BQkxFKENYWF9JTlRFUlBSRVRF
UikKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkxMaW50U2xvd1BhdGhzLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzo6TExJbnQ7CisKKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3Bh
Y2UgTExJbnQgeworCitzdGF0aWMgdm9pZCBjcmFzaCgpCit7CisgICAgaW50KiBwID0gcmVpbnRl
cnByZXRfY2FzdDxpbnQqPigweGJiYWRiZWVmKTsKKyAgICAqcCA9IDA7CisgICAgdm9pZCAoKmYp
KCkgPSByZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4ocCk7CisgICAgZigpOworfQorCitzdGF0
aWMgZG91YmxlIEludHMyRG91YmxlKGludDMyX3QgbG8sIGludDMyX3QgaGkpCit7CisgICAgdW5p
b24geworICAgICAgICBkb3VibGUgZHZhbDsKKyAgICAgICAgdWludDY0X3QgaXZhbDY0OworICAg
IH0gdTsKKyAgICB1Lml2YWw2NCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihoaSkgPDwgMzIgfCBs
bzsKKyAgICByZXR1cm4gdS5kdmFsOworfQorCisvKiBtbGFtIFVOVVNFRAorc3RhdGljIHZvaWQg
RG91YmxlMkludHMoZG91YmxlIGR2YWwsIHVpbnQzMl90ICZsbywgdWludDMyX3QgJmhpKQorewor
ICAgIHVuaW9uIHsKKyAgICAgICAgZG91YmxlIGR2YWw7CisgICAgICAgIHVpbnQ2NF90IGl2YWw2
NDsKKyAgICB9IHU7CisgICAgdS5kdmFsID0gZHZhbDsKKyAgICBsbyA9IHN0YXRpY19jYXN0PHVp
bnQzMl90Pih1Lml2YWw2NCk7CisgICAgaGkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odS5pdmFs
NjQgPj4gMzIpOworfQorKi8KKworfSAvLyBuYW1lc3BhY2UgTExpbnQKKworSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBtbGFtQnJlYWsoY29uc3QgY2hhciogY29tbWVudCwgY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUpOwordm9pZCBtbGFtQnJlYWsoY29uc3QgY2hhciogY29tbWVudCwgY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICBwcmludGYoIkF0IG1sYW0gYnJlYWtwb2ludDog
JXMgQCAlczolZFxuIiwgY29tbWVudCwgZmlsZSwgbGluZSk7Cit9CisKK0pTVmFsdWUgSW50ZXJw
cmV0ZXI6OmxsaW50Q1hYRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSog
cmVnRmlsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTExJbnQ6OkRhdGEqIGxsaW50RGF0YSkgeworCisgICAgLy8gT25lLXRpbWUg
aW5pdGlhbGl6YXRpb24gb2Ygb3VyIGFkZHJlc3MgdGFibGVzLiBXZSBoYXZlIHRvIHB1dCB0aGlz
IGNvZGUKKyAgICAvLyBoZXJlIGJlY2F1c2Ugb3VyIGxhYmVscyBhcmUgb25seSBpbiBzY29wZSBp
bnNpZGUgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiAoVU5MSUtFTFkoZmxhZyA9PSBJbml0aWFsaXpl
QW5kUmV0dXJuKSkgeworCisgICAgICAgIC8qIG1sYW0KKyAgICAgICAgI2RlZmluZSBMSVNUX09Q
Q09ERV9MQUJFTChpZCwgbGVuZ3RoKSAmJmxsaW50XyMjaWQsCisgICAgICAgIHN0YXRpYyBPcGNv
ZGUgbGFiZWxzW10gPSB7IEZPUl9FQUNIX09QQ09ERV9JRChMSVNUX09QQ09ERV9MQUJFTCkgfTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGxhYmVscyk7
ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBsYWJlbHNbaV07CisgICAgICAg
ICovCisKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVN
YXAoKTsKKy8vI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFw
W29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisjZGVmaW5l
IE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVUYWJsZVtvcGNvZGVdID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmJmxsaW50XyMjb3Bjb2RlKTsKKyAgICAgICAgRk9SX0VBQ0hfT1BD
T0RFX0lEKE9QQ09ERV9FTlRSWSkKKyN1bmRlZiBPUENPREVfRU5UUlkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICB9CisKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCk7CisgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZTsKKyAgICAv
LyBtbGFtIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gMDsKKyAgICAvLyBtbGFtIENhbGxGcmFtZSoq
IHRvcENhbGxGcmFtZVNsb3QgPSAmZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lOworCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIEluc3RydWN0
aW9uKiB2UEMgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgLy8gbWxh
bSB1bnNpZ25lZCB0aWNrQ291bnQgPSBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci50aWNrc1Vu
dGlsTmV4dENoZWNrKCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblJldHVyblZhbHVlOworCisgICAg
c3RydWN0IFJlZ2lzdGVyIHsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgaW50cHRyX3Qg
aTsKKyAgICAgICAgICAgIHVpbnRwdHJfdCB1OworICAgICAgICAgICAgaW50OF90KiBpOHA7Cisg
ICAgICAgICAgICB2b2lkKiB2cDsKKyAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlY1N0YXRlOwor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uOworICAgICAgICB9IHU7CisgICAg
fTsKKyAgICBzdHJ1Y3QgRG91YmxlUmVnaXN0ZXIgeworICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICBkb3VibGUgZDsKKyAgICAgICAgfSB1OworICAgIH07CisgICAgLy8gbWxhbSB0eXBlZGVm
IGludCBMTElJbnQ7CisgICAgLy8gbWxhbSB0eXBlZGVmIHVuc2lnbmVkIGludCBMTElVSW50Owor
ICAgIC8vIG1sYW0gdHlwZWRlZiBMTElJbnQqIExMSUFkZHJlc3M7CisKKyAgICBKSVRTdGFja0Zy
YW1lIGppdFN0YWNrRnJhbWU7CisKKyAgICBSZWdpc3RlciByMCwgcjEsIHIyLCByNCwgclBDLCAv
KiBtbGFtIFVOVVNFRCByU2NyYXRjaCwgckJhc2VQQywgcjEzLCByMTQsKi8gckZQIC8qIG1sYW0g
VU5VU0VEIHJSZXR1cm5QQywqLzsKKyAgICBSZWdpc3RlciByMywgcjggLyogbWxhbSBVTlVTRUQg
LCByOSovOworICAgIERvdWJsZVJlZ2lzdGVyIGQwLCBkMS8qIG1sYW0gVU5VU0VELCAgZDIsIGQz
LCBkNCwgZDUsIGQ4ICovOworCisgICAgSklUU3RhY2tGcmFtZSogY29uc3Qgc3AgPSAmaml0U3Rh
Y2tGcmFtZTsKKyAgICBzcC0+Z2xvYmFsRGF0YSA9IGdsb2JhbERhdGE7CisKKyAgICAjZGVmaW5l
IENBU1QgcmVpbnRlcnByZXRfY2FzdAorICAgICNkZWZpbmUgU0lHTl9CSVQoeCkgKHggJiBJTlRf
TUlOKQorCisgICAgVU5VU0VEX1BBUkFNKHJlZ0ZpbGUpOyAvLyBtbGFtIEZJWE1FIFJFTU9WRSB0
aGlzIGxhdGVyLgorICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOyAvLyBtbGFtIEZJWE1FIFJF
TU9WRSB0aGlzIGxhdGVyLgorCisgICAgLy8gUHJlLXBvcHVsYXRlIHRoZSBjdXJyZW50RnJhbWUg
cG9pbnRlcjoKKyAgICByRlAudS52cCA9IGNhbGxGcmFtZTsKKyAgICByUEMudS52cCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZQQyk7CisKKyNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQor
ICAgICNkZWZpbmUgU0FNUExFKGNvZGVCbG9jaywgdlBDKSBtX3NhbXBsZXItPnNhbXBsZShjb2Rl
QmxvY2ssIHZQQykKKyNlbHNlCisgICAgI2RlZmluZSBTQU1QTEUoY29kZUJsb2NrLCB2UEMpCisj
ZW5kaWYKKworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgIHByaW50ZigiIG1sYW0gQCAlcyBA
ICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgcHJpbnRm
KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworICAgIGNv
ZGVCbG9jay0+ZHVtcChjYWxsRnJhbWUpOworICAgIHByaW50ZigiPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAvLyBtbGFtIEVORCB0ZXN0CisKKyAg
ICAvLyBUaGUgTExJbnQgQ1hYIEludGVycHJldGVyIHdpbGwgcmVseSBvbiBjb21wdXRlZCBnb3Rv
cy4KKyAgICAjZGVmaW5lIE5FWFRfSU5TVFJVQ1RJT04oKSBTQU1QTEUoY29kZUJsb2NrLCB2UEMp
OyBnb3RvICp2UEMtPnUub3Bjb2RlCisgICAgTkVYVF9JTlNUUlVDVElPTigpOyAvLyBEaXNwYXRj
aCB0byB0aGUgY3VycmVudCBieXRlY29kZS4KKworCisgICAgLy8gVGhpcyBpcyBhIGZpbGUgZ2Vu
ZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUKKyAgICAvLyBi
eXRlY29kZSBoYW5kbGVycyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tCisg
ICAgLy8gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisgICAgI2luY2x1ZGUgIkxMSW50QXNzZW1i
bHkuaCIKKworY2FsbEpTRnVuY3Rpb246CisgICAgeworICAgICAgICBtbGFtQnJlYWsoImNhbGxK
U0Z1bmN0aW9uIiwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgLy8gR2V0IHRoZSBjYWxs
IHRhcmdldCBpbmZvIGZyb20gdGhlIGNhbGxGcmFtZToKKyAgICAgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSByZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KHJGUC51LnZwKTsgICAgICAv
LyB0aGUgY2FsbEZyYW1lIGhhcyBjaGFuZ2VkLiAgUmVmZXRjaCBpdCBmcm9tIHRoZSBGUCAicmVn
aXN0ZXIiLgorICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jID0ganNDYXN0PEpTRnVuY3Rpb24qPihu
ZXdDYWxsRnJhbWUtPmNhbGxlZSgpKTsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAg
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuYywgY2FsbERhdGEpOworCisg
ICAgICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgICAgICBVU3RyaW5nIG5hbWUgPSBmdW5jLT5j
YWxjdWxhdGVkRGlzcGxheU5hbWUobmV3Q2FsbEZyYW1lKTsKKyAgICAgICAgY29uc3QgY2hhciog
bmFtZVN0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUuY2hhcmFjdGVyczgo
KSk7CisgICAgICAgIHByaW50ZigiIENhbGxpbmcgZnVuY3Rpb24gJyVzJyBjb2RlQmxvY2sgJXBc
biIsIG5hbWVTdHIgPyBuYW1lU3RyIDogIjx1bmtub3duPiIsIG5ld0NhbGxGcmFtZS0+Y29kZUJs
b2NrKCkpOworICAgICAgICAvLyBtbGFtIEVORCB0ZXN0CisKKyAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlSlMpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0g
JmNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxs
KCk7CisgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrKTsKKworICAgICAgICAgICAgLy8g
bWxhbSBGSVhNRSAqdG9wQ2FsbEZyYW1lU2xvdCA9IGNhbGxGcmFtZTsKKyAgICAgICAgICAgIHZQ
QyA9IG5ld0NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKworICAgICAgICAgICAg
TkVYVF9JTlNUUlVDVElPTigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgLy8gbWxhbSBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbiA9IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOworICAgICAgICAgICAgLy8gbWxhbSBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkgKyByZWdpc3Rlck9mZnNldCk7CisgICAgICAgICAgICAvLyBtbGFtIG5ld0NhbGxG
cmFtZS0+aW5pdCgwLCB2UEMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGwpLCBzY29wZUNoYWluLCBj
YWxsRnJhbWUsIGFyZ0NvdW50LCBhc09iamVjdCh2KSk7CisKKyAgICAgICAgICAgIC8vID8/PyBu
ZXdDYWxsRnJhbWUtPnNldENvZGVCbG9jaygwKTsKKyAgICAgICAgICAgIEpTVmFsdWUgcmV0dXJu
VmFsdWU7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRSAqdG9w
Q2FsbEZyYW1lU2xvdCA9IG5ld0NhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICAvLyBTYW1wbGlu
Z1Rvb2w6Okhvc3RDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24obmV3Q2FsbEZyYW1lKSk7CisgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRSAq
dG9wQ2FsbEZyYW1lU2xvdCA9IGNhbGxGcmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC8vIG1sYW0gRklYTUUgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOworICAgICAgICAgICAgZnVuY3Rp
b25SZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlOworCisgICAgICAgICAgICAvLyBtbGFtIFJFUExB
Q0VEIHZQQyA9IGNhbGxGcmFtZS0+cmV0dXJuVlBDKCk7CisgICAgICAgICAgICBjYWxsRnJhbWUg
PSBuZXdDYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgICAgICByRlAudS52cCA9IGNh
bGxGcmFtZTsKKyAgICAgICAgICAgIHJQQy51LnZwID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Y2FsbEZyYW1lLT5ieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSk7CisKKyAgICAgICAgICAg
IC8qIG1sYW0gRklYTUUKKyAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJh
bWVGbGFnKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworCisgICAgICAg
ICAgICAqdG9wQ2FsbEZyYW1lU2xvdCA9IGNhbGxGcmFtZTsKKyAgICAgICAgICAgIGZ1bmN0aW9u
UmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTsKKyAgICAgICAgICAgIGNvZGVCbG9jayA9IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBBU1NFUlQoY29kZUJsb2NrID09IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIE5FWFRfSU5T
VFJVQ1RJT04oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICN1bmRlZiBORVhUX0lOU1RSVUNU
SU9OCisgICAgI3VuZGVmIENBU1QKKyAgICAjdW5kZWYgU0lHTl9CSVQKKworICAgIHJldHVybiBK
U1ZhbHVlKCk7IC8vIEtlZXAgdGhlIGNvbXBpbGVyIGhhcHB5LgorCit9IC8vIEludGVycHJldGVy
OjpsbGludENYWEV4ZWN1dGUoKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vsc2UgLy8gIUVO
QUJMRShDWFhfSU5URVJQUkVURVIpCisKIC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBv
ZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKIC8vIGZv
ciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5h
c20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisjZW5kaWYgLy8gIUVOQUJMRShDWFhf
SU5URVJQUkVURVIpCisKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMTIzMjc0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHdvcmtpbmcgY29weSkKQEAg
LTU3OSw3ICs1NzksOCBAQCBkZWYgYXJtVjdMb3dlclJlZ2lzdGVyUmV1c2UobGlzdCkKICAgICAg
ICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gImNpZXEiLCAiY2luZXEi
LCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0IiwgImNpZ3RlcSIsICJjaWx0
IiwgImNpbHRlcSIsCiAgICAgICAgICAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwgImNw
YWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRlcSIs
Ci0gICAgICAgICAgICAgICAgInRpbyIsICJ0aXMiLCAidGl6IiwgInRpbnoiLCAidGJvIiwgInRi
cyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAidHBzIiwgInRweiIsICJ0cG56IiwKKyAgICAgICAg
ICAgICAgICAjIG1sYW0gVU5VU0VEICJ0aW8iLCAidGlzIiwgInRpeiIsICJ0aW56IiwgInRibyIs
ICJ0YnMiLCAidGJ6IiwgInRibnoiLCAidHBvIiwgInRwcyIsICJ0cHoiLCAidHBueiIsCisgICAg
ICAgICAgICAgICAgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0YnMiLCAidGJ6IiwgInRibnoiLCAi
dHBzIiwgInRweiIsICJ0cG56IiwKICAgICAgICAgICAgICAgICAiY2JlcSIsICJjYm5lcSIsICJj
YmEiLCAiY2JhZXEiLCAiY2JiIiwgImNiYmVxIiwgImNiZ3QiLCAiY2JndGVxIiwgImNibHQiLCAi
Y2JsdGVxIgogICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCiAgICAg
ICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQpA
QCAtOTQwLDkgKzk0MSw5IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIHdoZW4gImJ0aW56
IiwgImJ0cG56IiwgImJ0Ym56IgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykK
ICAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKLSAg
ICAgICAgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCi0gICAgICAgICAgICBlbWl0QXJtVjdU
ZXN0KG9wZXJhbmRzKQotICAgICAgICAgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1stMV0u
YXNtTGFiZWx9IgorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJi
dGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisg
ICAgICAgICMgbWxhbSBVTlVTRUQgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1stMV0uYXNt
TGFiZWx9IgogICAgICAgICB3aGVuICJidGlzIiwgImJ0cHMiLCAiYnRicyIKICAgICAgICAgICAg
IGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCiAgICAgICAgICAgICAkYXNtLnB1dHMgImJtaSAje29w
ZXJhbmRzWy0xXS5hc21MYWJlbH0iCkBAIC05ODIsOCArOTgzLDggQEAgY2xhc3MgSW5zdHJ1Y3Rp
b24KICAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsdCIpCiAgICAgICAg
IHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiLCAiY2JsdGVxIgogICAgICAgICAgICAgZW1pdEFybVY3
Q29tcGFyZShvcGVyYW5kcywgImxlIikKLSAgICAgICAgd2hlbiAidGlvIiwgInRibyIsICJ0cG8i
Ci0gICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAidnMiKQorICAgICAgICAj
IG1sYW0gVU5VU0VEIHdoZW4gInRpbyIsICJ0Ym8iLCAidHBvIgorICAgICAgICAjIG1sYW0gVU5V
U0VEICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCiAgICAgICAgIHdoZW4gInRp
cyIsICJ0YnMiLCAidHBzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywg
Im1pIikKICAgICAgICAgd2hlbiAidGl6IiwgInRieiIsICJ0cHoiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgICAgIEBudW1HbG9iYWxMYWJlbHMgPSAwCiAK
ICAgICAgICAgQG5ld2xpbmVTcGFjZXJTdGF0ZSA9IDpub25lCisgICAgICAgIEBsYXN0R2xvYmFs
TGFiZWwgPSBuaWwKICAgICBlbmQKICAgICAKICAgICBkZWYgZW50ZXJBc20KQEAgLTkzLDkgKzk0
LDIyIEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICBAYW5ub3RhdGlvbiA9IG5pbAogICAgICAg
ICBAY29kZU9yaWdpbiA9IG5pbAogICAgICAgICBAaW50ZXJuYWxDb21tZW50ID0gbmlsCisgICAg
ICAgIEBzb3VyY2VJbnN0cnVjdGlvbiA9IG5pbAogICAgICAgICByZXN1bHQKICAgICBlbmQKICAg
ICAKKyAgICAjIFB1dHMgYSBDIFN0YXRlbWVudCBpbiB0aGUgb3V0cHV0IHN0cmVhbS4KKyAgICBk
ZWYgcHV0YygqbGluZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtICAgICAg
ICAKKyAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCIgICAgIiArIGxpbmUuam9pbignJyks
IGxhc3RDb21tZW50KSkKKyAgICBlbmQKKyAgICAKKyAgICAjIFB1dHMgYSBDIFN0YXRlbWVudCBp
biB0aGUgb3V0cHV0IHN0cmVhbS4KKyAgICBkZWYgcHV0Y1RyYWNlTGFzdEdsb2JhbExhYmVsCisg
ICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbSAgICAgICAgCisgICAgICAgIEBvdXRw
LnB1dHMoIiAgICBwcmludGYoXCIlc1xcblwiLCBcIiN7QGxhc3RHbG9iYWxMYWJlbH1cIik7Iikg
aWYgQGxhc3RHbG9iYWxMYWJlbAorICAgIGVuZAorICAgIAogICAgIGRlZiBmb3JtYXREdW1wKGR1
bXBTdHIsIGNvbW1lbnQsIGNvbW1lbnRDb2x1bW5zPSRwcmVmZXJyZWRDb21tZW50U3RhcnRDb2x1
bW4pCiAgICAgICAgIGlmIGNvbW1lbnQubGVuZ3RoID4gMAogICAgICAgICAgICAgIiUtI3tjb21t
ZW50Q29sdW1uc31zICVzIiAlIFtkdW1wU3RyLCBjb21tZW50XQpAQCAtMTQ5LDYgKzE2Myw3IEBA
IGNsYXNzIEFzc2VtYmxlcgogICAgIGRlZiBwdXRzTGFiZWwobGFiZWxOYW1lKQogICAgICAgICBy
YWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KICAgICAgICAgQG51bUdsb2JhbExhYmVscyArPSAx
CisgICAgICAgIEBsYXN0R2xvYmFsTGFiZWwgPSBsYWJlbE5hbWUKICAgICAgICAgcHV0c05ld2xp
bmVTcGFjZXJJZkFwcHJvcHJpYXRlKDpnbG9iYWwpCiAgICAgICAgIEBpbnRlcm5hbENvbW1lbnQg
PSAkZW5hYmxlTGFiZWxDb3VudENvbW1lbnRzID8gIkdsb2JhbCBMYWJlbCAje0BudW1HbG9iYWxM
YWJlbHN9IiA6IG5pbAogICAgICAgICBAb3V0cC5wdXRzKGZvcm1hdER1bXAoIk9GRkxJTkVfQVNN
X0dMT0JBTF9MQUJFTCgje2xhYmVsTmFtZX0pIiwgbGFzdENvbW1lbnQpKQpAQCAtMTcxLDYgKzE4
NiwxNiBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICAgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygj
e2xhYmVsTmFtZX0pIFwiIgogICAgIGVuZAogICAgIAorICAgIGRlZiBzZWxmLmNMYWJlbFJlZmVy
ZW5jZShsYWJlbE5hbWUpCisgICAgICAgICMgJHN0ZG91dC5wcmludCAiIG1sYW0gQXNzZW1ibGVy
OjpsYWJlbFJlZmVyZW5jZSAgJyIrbGFiZWwrIicgQCAiICsgX19GSUxFX18gKyI6IisgU3RyaW5n
KF9fTElORV9fKSsiXG5cbiIKKyAgICAgICAgIiN7bGFiZWxOYW1lfSIKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgc2VsZi5jTG9jYWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICMg
JHN0ZG91dC5wcmludCAiIG1sYW0gQXNzZW1ibGVyOjpsb2NhbExhYmVsUmVmZXJlbmNlICciK2xh
YmVsKyInIEAgIiArIF9fRklMRV9fICsiOiIrIFN0cmluZyhfX0xJTkVfXykrIlxuXG4iCisgICAg
ICAgICIje2xhYmVsTmFtZX0iCisgICAgZW5kCisgICAgCiAgICAgZGVmIGNvZGVPcmlnaW4odGV4
dCkKICAgICAgICAgY2FzZSBAY29tbWVudFN0YXRlCiAgICAgICAgIHdoZW4gOm5vbmUKQEAgLTE5
Niw2ICsyMjEsOSBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICBkZWYgYW5ub3RhdGlvbih0ZXh0KQog
ICAgICAgICBAYW5ub3RhdGlvbiA9IHRleHQKICAgICBlbmQKKyAgICBkZWYgc291cmNlSW5zdHJ1
Y3Rpb24odGV4dCkKKyAgICAgICAgQHNvdXJjZUluc3RydWN0aW9uID0gdGV4dAorICAgIGVuZAog
ZW5kCiAKIGFzbUZpbGUgPSBBUkdWLnNoaWZ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDEyICsyNSwxNCBAQCByZXF1aXJlICJjb25maWciCiByZXF1aXJlICJhcm12NyIKIHJlcXVpcmUg
ImFzdCIKIHJlcXVpcmUgIng4NiIKK3JlcXVpcmUgImN4eCIKIAogQkFDS0VORFMgPQogICAgIFsK
ICAgICAgIlg4NiIsCiAgICAgICJYODZfNjQiLAotICAgICAiQVJNdjciCisgICAgICJBUk12NyIs
CisgICAgICJDWFhfSU5URVJQUkVURVIiCiAgICAgXQogCiAjIEtlZXAgdGhlIHNldCBvZiB3b3Jr
aW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0
IGJlCkBAIC00Miw3ICs0NCw4IEBAIFdPUktJTkdfQkFDS0VORFMgPQogICAgIFsKICAgICAgIlg4
NiIsCiAgICAgICJYODZfNjQiLAotICAgICAiQVJNdjciCisgICAgICJBUk12NyIsCisgICAgICJD
WFhfSU5URVJQUkVURVIiCiAgICAgXQogCiBCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQpAQCAtNTAsNiArNTMsNyBAQCBC
QUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBCiBjbGFzcyBOb2RlCiAgICAg
ZGVmIGxvd2VyKG5hbWUpCiAgICAgICAgIGJlZ2luCisgICAgICAgICAgICAkYXNtLnB1dGMgIi8v
IG1sYW0gOjogTm9kZS5sb3dlcigje25hbWV9KSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElO
RV9fKX0iIGlmICR0cmFjZUJhY2tlbmQKICAgICAgICAgICAgICRhY3RpdmVCYWNrZW5kID0gbmFt
ZQogICAgICAgICAgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKICAgICAgICAgcmVzY3VlID0+IGUK
QEAgLTc2LDEyICs4MCwxOCBAQCBjbGFzcyBMYWJlbFJlZmVyZW5jZQogICAgIGRlZiBhc21MYWJl
bAogICAgICAgICBBc3NlbWJsZXIubGFiZWxSZWZlcmVuY2UobmFtZVsxLi4tMV0pCiAgICAgZW5k
CisgICAgZGVmIGNMYWJlbAorICAgICAgICBBc3NlbWJsZXIuY0xhYmVsUmVmZXJlbmNlKG5hbWVb
MS4uLTFdKQorICAgIGVuZAogZW5kCiAKIGNsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKICAgICBk
ZWYgYXNtTGFiZWwKICAgICAgICAgQXNzZW1ibGVyLmxvY2FsTGFiZWxSZWZlcmVuY2UoIl9vZmZs
aW5lYXNtXyIrbmFtZVsxLi4tMV0pCiAgICAgZW5kCisgICAgZGVmIGNMYWJlbAorICAgICAgICBB
c3NlbWJsZXIuY0xvY2FsTGFiZWxSZWZlcmVuY2UoIl9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0p
CisgICAgZW5kCiBlbmQKIAogY2xhc3MgU2tpcApAQCAtOTEsMTYgKzEwMSwyMSBAQCBlbmQKIAog
Y2xhc3MgU2VxdWVuY2UKICAgICBkZWYgbG93ZXIobmFtZSkKKyAgICAgICAgJGFzbS5wdXRjICIv
LyBtbGFtIDo6IFNlcXVlbmNlLmxvd2VyKCN7bmFtZX0pIEAgI3tfX0ZJTEVfX306I3tTdHJpbmco
X19MSU5FX18pfSIgaWYgJHRyYWNlQmFja2VuZAogICAgICAgICAkYWN0aXZlQmFja2VuZCA9IG5h
bWUKICAgICAgICAgaWYgcmVzcG9uZF90bz8gImdldE1vZGlmaWVkTGlzdCN7bmFtZX0iCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIi8vIG1sYW0gOjogU2VxdWVuY2UubG93ZXIoI3tuYW1lfSkgQCAj
e19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VCYWNrZW5kCiAgICAgICAg
ICAgICBuZXdMaXN0ID0gc2VuZCgiZ2V0TW9kaWZpZWRMaXN0I3tuYW1lfSIpCiAgICAgICAgICAg
ICBuZXdMaXN0LmVhY2ggewogICAgICAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICAg
ICAgIyAkc3Rkb3V0LnByaW50ICIgbWxhbSBTZXF1ZW5jZS5sb3dlcignIituYW1lKyInKSBAICIg
KyBfX0ZJTEVfXyArICI6IitTdHJpbmcoX19MSU5FX18pKyJcblxuIgogICAgICAgICAgICAgICAg
IG5vZGUubG93ZXIobmFtZSkKICAgICAgICAgICAgIH0KICAgICAgICAgZWxzaWYgcmVzcG9uZF90
bz8gImxvd2VyI3tuYW1lfSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiLy8gbWxhbSA6OiBTZXF1
ZW5jZS5sb3dlcigje25hbWV9KSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlm
ICR0cmFjZUJhY2tlbmQKICAgICAgICAgICAgIHNlbmQoImxvd2VyI3tuYW1lfSIpCiAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0YyAiLy8gbWxhbSA6OiBTZXF1ZW5jZS5sb3dlcigj
e25hbWV9KSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUJhY2tl
bmQKICAgICAgICAgICAgIEBsaXN0LmVhY2ggewogICAgICAgICAgICAgICAgIHwgbm9kZSB8CiAg
ICAgICAgICAgICAgICAgbm9kZS5sb3dlcihuYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vY29uZmlnLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw5
ICsyMSwxMiBAQAogIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotJHByZWZlcnJlZENvbW1lbnRTdGFydENvbHVtbiA9IDcwCiskcHJlZmVycmVkQ29t
bWVudFN0YXJ0Q29sdW1uID0gNjIKIAogCiskdHJhY2VCYWNrZW5kID0gZmFsc2UKKyR0cmFjZUZ1
bmNzID0gZmFsc2UKKwogIyBUdXJucyBvbiBkdW1waW5nIG9mIHRoZSBjb3VudCBvZiBsYWJlbHMu
CiAjIEZvciBleGFtcGxlLCAgdGhlIG91dHB1dCB3aWxsIGxvb2sgbGlrZSB0aGlzOgogIwpAQCAt
NTQsNCArNTcsNCBAQCAkZW5hYmxlQ29kZU9yaWdpbkNvbW1lbnRzID0gdHJ1ZQogIyAgICAiXHRt
b3ZsIDUyKCVyY3gpLCAlZWN4XG4iICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9u
dW1WYXJzCiAjICAgICAuLi4KICMKLSRlbmFibGVJbnN0ckFubm90YXRpb25zID0gZmFsc2UKKyRl
bmFibGVJbnN0ckFubm90YXRpb25zID0gdHJ1ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vY3h4LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2N4eC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2N4eC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDU1IEBACisjIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJjb25maWciCityZXF1aXJl
ICJhc3QiCityZXF1aXJlICJvcHQiCisKKyNkZWYgYW5ub3RhdGUobWFzbSwgbGluZU5vKQorIyAg
ICBpZiAkZW5hYmxlTWFzbUFubm90YXRpb25zIG9yICRlbmFibGVBc3NlbWJsZXJMaW5lTm9Db21t
ZW50cworIyAgICAgICAgbWFzbUZyYWdtZW50ID0gJGVuYWJsZU1hc21Bbm5vdGF0aW9ucyA/ICIj
e21hc219IiA6ICIiCisjICAgICAgICBsaW5lTm9GcmFnbWVudCA9ICRlbmFibGVBc3NlbWJsZXJM
aW5lTm9Db21tZW50cyA/ICIgQCN7U3RyaW5nKGxpbmVObyl9IiA6ICIiCisjICAgICAgICByZXR1
cm4gIiN7bWFzbUZyYWdtZW50fSN7bGluZU5vRnJhZ21lbnR9IgorIyAgICBlbmQKKyMgICAgbmls
CisjZW5kCisKK2RlZiBjeHhNYXBUeXBlKHR5cGUpCisgICAgY2FzZSB0eXBlCisgICAgd2hlbiAi
aW50IjsgICAgICIudS5pIgorICAgIHdoZW4gInVpbnQiOyAgICAiLnUudSIKKyAgICB3aGVuICJp
bnQ4cHRyIjsgIi51Lmk4cCIKKyAgICB3aGVuICJ2b2lkcHRyIjsgIi51LnZwIgorICAgIHdoZW4g
ImRvdWJsZSI7ICAiLnUuZCIKKyAgICBlbHNlOyAgICAgICAgICAgIi51LiN7dHlwZX0iCisgICAg
ZW5kCitlbmQKKworY2xhc3MgTm9kZQorICAgIGRlZiBjeHhTaW5nbGUKKyAgICAgICAgJGFzbS5w
dXRjICIvLyB0cmFjZTogTm9kZS5jeHhTaW5nbGUoKSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9f
TElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAgICAgICMgbWxhbSBkb3VibGVPcGVyYW5kID0g
Y3h4T3BlcmFuZAorICAgICAgICBkb3VibGVPcGVyYW5kID0gY3h4VmFsdWUgICMgbWxhbSBJcyB0
aGlzIGNvcnJlY3Q/CisgICAgICAgIHJhaXNlICJCb2d1cyByZWdpc3RlciBuYW1lICN7ZG91Ymxl
T3BlcmFuZH0iIHVubGVzcyBkb3VibGVPcGVyYW5kID1+IC9eZC8KKyAgICAgICAgInMiICsgKCR+
LnBvc3RfbWF0Y2gudG9faSAqIDIpLnRvX3MKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTcGVjaWFs
UmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgICAgZGVmIGR1bXAKKyAgICAgICAgQG5hbWUKKyAgICBl
bmQKKyAgICBkZWYgY3h4VmFsdWUodHlwZT0iaW50IikKKyAgICAgICAgJGFzbS5wdXRjICIvLyB0
cmFjZTogU3BlY2lhbFJlZ2lzdGVyLmN4eFZhbHVlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhf
X0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAgICBAbmFtZSArIGN4eE1hcFR5cGUodHlw
ZSkKKyAgICBlbmQKK2VuZAorCitDWFhfSU5URVJQUkVURVJfRVhUUkFfR1BSUyA9IFtTcGVjaWFs
UmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJyMyIpXQorIyBtbGFtIENYWF9JTlRFUlBSRVRFUl9FWFRSQV9GUFJTID0gW1Nw
ZWNpYWxSZWdpc3Rlci5uZXcoInhfZDciKV0KK0NYWF9JTlRFUlBSRVRFUl9FWFRSQV9GUFJTID0g
W10KK0NYWF9JTlRFUlBSRVRFUl9TQ1JBVENIX0ZQUiA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImQ4
IikKKworZGVmIGN4eE1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAgICMgQ3VycmVu
dGx5IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92
L21vdnQgZm9yIHRoZSBjb21wbGV4IG9uZXMuCisgICAgJGFzbS5wdXRjICIgLy8gdHJhY2U6IGN4
eE1vdmVJbW1lZGlhdGUoI3t2YWx1ZX0sICN7cmVnaXN0ZXIuY3h4VmFsdWV9KSBAICN7X19GSUxF
X199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAgaWYgKHZhbHVlICE9
IDApCisgICAgICAgICRhc20uY29tbWVudCAiWyAweCV4IF0iICUgdmFsdWUKKyAgICBlbmQKKyAg
ICAkYXNtLnB1dGMgIiN7cmVnaXN0ZXIuY3h4VmFsdWUoImludCIpfSA9ICN7dmFsdWV9OyIKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIGR1bXAKKyAgICAgICAgY2FzZSBuYW1lCisg
ICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAgICAgInIwIgorICAgICAgICB3
aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgICJyMSIKKyAgICAgICAgd2hlbiAidDIi
LCAiYTIiCisgICAgICAgICAgICAicjIiCisgICAgICAgIHdoZW4gImEzIgorICAgICAgICAgICAg
InIzIgorICAgICAgICB3aGVuICJ0MyIKKyAgICAgICAgICAgICJyNCIKKyAgICAgICAgd2hlbiAi
dDQiCisgICAgICAgICAgICAiclBDIgorICAgICAgICAjIG1sYW0gQkVHSU4KKyAgICAgICAgd2hl
biAidDUiCisgICAgICAgICAgICAiclNjcmF0Y2giCisgICAgICAgIHdoZW4gInQ2IgorICAgICAg
ICAgICAgInJCYXNlUEMiCisgICAgICAgIHdoZW4gImNzcjEiCisgICAgICAgICAgICAicjEzIgor
ICAgICAgICB3aGVuICJjc3IyIgorICAgICAgICAgICAgInIxNCIKKyAgICAgICAgIyBtbGFtIEVO
RAorICAgICAgICB3aGVuICJjZnIiCisgICAgICAgICAgICAickZQIgorICAgICAgICAjIG1sYW0g
d2hlbiAibHIiCisgICAgICAgICMgICAgInJSZXR1cm5QQyIKKyAgICAgICAgIyBtbGFtIHdoZW4g
InNwIgorICAgICAgICAjICAgICJyU1AiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNl
ICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQ1hYX0lOVEVSUFJFVEVSIGF0ICN7Y29kZU9yaWdp
blN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBjeHhWYWx1ZSh0eXBlPSJp
bnQiKQorICAgICAgICAkYXNtLnB1dGMgIi8vIHRyYWNlOiBSZWdpc3RlcklELmN4eFZhbHVlKCkg
QCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAg
ICBkdW1wICsgY3h4TWFwVHlwZSh0eXBlKSAjIG1sYW0gIi51LiN7dHlwZX0iCisgICAgZW5kCitl
bmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgICAgZGVmIGR1bXAKKyAgICAgICAgY2FzZSBuYW1l
CisgICAgICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAgICAgICAgd2hl
biAiZnQxIgorICAgICAgICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisgICAgICAgICAg
ICAiZDIiCisgICAgICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAgICAgICAgd2hl
biAiZnQ0IgorICAgICAgICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAgICAg
ICAiZDUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tu
YW1lfSBmb3IgQ1hYX0lOVEVSUFJFVEVSIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIGRlZiBjeHhWYWx1ZSh0eXBlPSJpbnQiKQorICAgICAgICAkYXNt
LnB1dGMgIi8vIHRyYWNlOiBGUFJlZ2lzdGVySUQuY3h4VmFsdWUoKSBAICN7X19GSUxFX199OiN7
U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAgICAgIGR1bXAgKyBjeHhNYXBU
eXBlKHR5cGUpICMgbWxhbSAiLnUuI3t0eXBlfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1l
ZGlhdGUKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5kCisgICAgZGVm
IGN4eFZhbHVlKHR5cGU9bmlsKQorICAgICAgICAkYXNtLnB1dGMgIi8vIHRyYWNlOiBJbW1lZGlh
dGUuY3h4VmFsdWUoKSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFj
ZUZ1bmNzCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgICAg
ZGVmIGR1bXAKKyAgICAgICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LnZhbHVlfV0iCisgICAg
ZW5kCisgICAgZGVmIGN4eFZhbHVlKHR5cGU9bmlsKQorICAgICAgICBpbnRNZW1SZWYKKyAgICBl
bmQKKyAgICBkZWYgcG9pbnRlckV4cHIKKyAgICAgICAgaWYgYmFzZS5pc19hPyBSZWdpc3RlcklE
IGFuZCBiYXNlLm5hbWUgPT0gInNwIiAKKyAgICAgICAgICAgIG9mZnNldFZhbHVlID0gIiN7b2Zm
c2V0LnZhbHVlfSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFsdWV9ID09IG9mZnNl
dG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSIKKyAgICAg
ICAgZWxzaWYgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgICAgICIje2Jhc2UuY3h4VmFsdWUo
ImludDhwdHIiKX0iCisgICAgICAgIGVsc2lmIG9mZnNldC52YWx1ZSA+IDAKKyAgICAgICAgICAg
ICIje2Jhc2UuY3h4VmFsdWUoImludDhwdHIiKX0gKyAje29mZnNldC52YWx1ZX0iCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICIje2Jhc2UuY3h4VmFsdWUoImludDhwdHIiKX0gLSAjey1vZmZz
ZXQudmFsdWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgaW50TWVtUmVmCisgICAg
ICAgICIqQ0FTVDxpbnRwdHJfdCAqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVm
IGludDhNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDhfdCAqPigje3BvaW50ZXJFeHByfSkiCisg
ICAgZW5kCisgICAgZGVmIGludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnQxNl90ICo+KCN7
cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDhNZW1SZWYKKyAgICAgICAgIipD
QVNUPHVpbnQ4X3QgKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50MTZN
ZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQxNl90ICo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBl
bmQKKyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUgKj4oI3twb2ludGVy
RXhwcn0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBkdW1wCisg
ICAgICAgICJbI3tiYXNlLmR1bXB9LCAje29mZnNldC5kdW1wfSwgI3tpbmRleC5kdW1wfSA8PCAj
e3NjYWxlU2hpZnR9XSIKKyAgICBlbmQKKyAgICBkZWYgY3h4VmFsdWUodHlwZT1uaWwpCisgICAg
ICAgIGludE1lbVJlZgorICAgIGVuZAorICAgIGRlZiBwb2ludGVyRXhwcgorICAgICAgICBpZiBi
YXNlLmlzX2E/IFJlZ2lzdGVySUQgYW5kIGJhc2UubmFtZSA9PSAic3AiCisgICAgICAgICAgICBv
ZmZzZXRWYWx1ZSA9ICIoI3tpbmRleC5jeHhWYWx1ZSgiaW50Iil9IDw8ICN7c2NhbGVTaGlmdH0p
ICsgI3tvZmZzZXQuY3h4VmFsdWV9KSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFs
dWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxE
YXRhKSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFzZS5jeHhWYWx1ZSgiaW50OHB0
ciIpfSArICgje2luZGV4LmN4eFZhbHVlKCJpbnQiKX0gPDwgI3tzY2FsZVNoaWZ0fSkgKyAje29m
ZnNldC5jeHhWYWx1ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBpbnRNZW1SZWYK
KyAgICAgICAgIipDQVNUPGludHB0cl90ICo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAg
ICBkZWYgaW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90ICo+KCN7cG9pbnRlckV4cHJ9
KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDE2X3Qg
Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50OE1lbVJlZgorICAgICAg
ICAiKkNBU1Q8dWludDhfdCAqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIHVp
bnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDE2X3QgKj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorICAgIGRlZiBkYmxNZW1SZWYKKyAgICAgICAgIipDQVNUPGRvdWJsZSAqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAg
ZGVmIGR1bXAKKyAgICAgICAgIiN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgZGVm
IGN4eFZhbHVlCisgICAgICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IEFic29sdXRlQWRkcmVzcy5j
eHhWYWx1ZSgpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVu
Y3MKKyAgICAgICAgZHVtcAorICAgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNo
IG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwg
YmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgY3h4TG93ZXJC
cmFuY2hPcHMobGlzdCkKKyAgICAkYXNtLnB1dGMgIi8vIHRyYWNlOiBjeHhMb3dlckJyYW5jaE9w
cygpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAg
ICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAg
ICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICAjY2FzZSBub2RlLm9wY29k
ZQorICAgICAgICAgICAgI3doZW4gImJtdWxpbyIKKyAgICAgICAgICAgICMgICAgJHN0ZG91dC5w
cmludCAibm9kZVsje25vZGUub3Bjb2RlfV1cbiIKKyAgICAgICAgICAgICMgICAgdG1wMSA9IFRt
cC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgIyAgICB0bXAyID0gVG1w
Lm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAjICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInNtdWxsaSIsIFtub2RlLm9wZXJhbmRz
WzBdLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRzWzFdLCB0bXAxXSkKKyAgICAgICAg
ICAgICMgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAicnNo
aWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4s
IDMxKSwgdG1wMl0pCisgICAgICAgICAgICAjICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgImJpbmVxIiwgW3RtcDEsIHRtcDIsIG5vZGUub3BlcmFuZHNbLTFd
XSkKKyAgICAgICAgICAgICN3aGVuIC9eYm11bGkvCisgICAgICAgICAgICAjICAgICRzdGRvdXQu
cHJpbnQgIm5vZGVbI3tub2RlLm9wY29kZX1dXG4iCisgICAgICAgICAgICAjICAgIGNvbmRpdGlv
biA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICMgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAg
ICAgICAgICAgIyAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJidGkiICsgY29uZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFd
XSkKKyAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAjICAgIG5ld0xpc3QgPDwgbm9kZQor
ICAgICAgICAgICAgI2VuZAorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlICMgbWxhbSA6OiBU
RVNUIGJlY2F1c2Ugd2UgY29tbWVudGVkIG91dCBldmVyeXRoaW5nIGFib3ZlCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAg
bmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2Ygc2hpZnQgb3BzLiBGb3IgZXhhbXBsZToK
KyMKKyMgbHNoaWZ0aSBmb28sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYW5kaSBmb28s
IDMxLCB0bXAKKyMgbHNoaWZ0aSB0bXAsIGJhcgorIworCitkZWYgY3h4U2FuaXRpemVTaGlmdChv
cGVyYW5kLCBsaXN0KQorICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IGN4eFNhbml0aXplU2hpZnQo
KSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAg
cmV0dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1lZGlhdGU/CisgICAgCisgICAgdG1wID0gVG1w
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAiYW5kaSIsIFtvcGVyYW5kLCBJbW1lZGlhdGUubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgMzEpLCB0bXBdKQorICAgIHRtcAorZW5kCisKK2RlZiBjeHhMb3dl
clNoaWZ0T3BzKGxpc3QpCisgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogY3h4TG93ZXJTaGlmdE9w
cygpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAg
ICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAg
ICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9k
ZS5hbm5vdGF0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3
aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAibHNoaWZ0cCIsICJyc2hpZnRw
IiwgInVyc2hpZnRwIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAy
CisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtjeHhTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMF0s
IG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSwgYW5ub3RhdGlvbikKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBjeHhTYW5pdGl6
ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzJdXSwgYW5u
b3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBvcGVy
YW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5v
cGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQor
ICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMu
IEZvciBleGFtcGxlOgorIworIyBsb2FkcCAxMDAwMFtmb29dLCBiYXIKKyMKKyMgd2lsbCBiZWNv
bWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAorIyBhZGRwIGZvbywgdG1wCisjIGxvYWRwIDBbdG1w
XSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgY3h4TG93ZXJNYWxmb3JtZWRBZGRyZXNz
ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IE5vZGUuY3h4TG93
ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJ
TkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAg
ICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5jeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1Jl
Y3Vyc2UobGlzdCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAg
ICBkZWYgY3h4TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgICAgICRh
c20ucHV0YyAiLy8gdHJhY2U6IEFkZHJlc3MuY3h4TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1
cnNlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcwor
IyAgICAgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYK
KyMgICAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisjICAgICAgICAg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0
bXBdKQorIyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJh
ZGRwIiwgW2Jhc2UsIHRtcF0pCisjICAgICAgICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
dG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorIyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2VsZgorIyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgICAgZGVmIGN4eExvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAg
ICAjICRzdGRvdXQucHV0cyAiLy8gbWxhbSBCYXNlSW5kZXguY3h4TG93ZXJNYWxmb3JtZWRBZGRy
ZXNzZXNSZWN1cnNlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IgorICAgICAg
ICAkYXNtLnB1dGMgIi8vIHRyYWNlOiBCYXNlSW5kZXguY3h4TG93ZXJNYWxmb3JtZWRBZGRyZXNz
ZXNSZWN1cnNlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VG
dW5jcworIyAgICAgICAgQG1sYW1UZXN0ID0gMAorIyAgICAgICAgaWYgQG1sYW1UZXN0ID09IDAg
IyBtbGFtIG9yaWcKKyMgICAgICAgICAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorIyAgICAgICAg
ICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisjICAgICAgICAgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1w
XSkKKyMgICAgICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
ImFkZHAiLCBbYmFzZSwgdG1wXSkKKyMgICAgICAgICAgICAgICAgQmFzZUluZGV4Lm5ldyhjb2Rl
T3JpZ2luLCB0bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkK
KyMgICAgICAgICAgICBlbHNlCisjICAgICAgICAgICAgICAgIHNlbGYKKyMgICAgICAgICAgICBl
bmQKKyMgICAgICAgIGVsc2UgIyBtbGFtIFRFU1QKKyAgICAgICAgICAgIHNlbGYKKyMgICAgICAg
IGVuZCAjIG1sYW0gVEVTVAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcwor
ICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAg
JGFzbS5wdXRjICIvLyB0cmFjZTogQWJzb2x1dGVBZGRyZXNzLmN4eExvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzUmVjdXJzZSgpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRy
YWNlRnVuY3MKKyAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAg
ICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFthZGRyZXNzLCB0
bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgMCkpCisgICAgZW5kCitlbmQKKworZGVmIGN4eExvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzKGxpc3QpCisgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogY3h4TG93ZXJNYWxmb3JtZWRB
ZGRyZXNzZXMoKSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1
bmNzCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwK
KyAgICAgICAgbmV3TGlzdCA8PCBub2RlLmN4eExvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJz
ZShuZXdMaXN0KQorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBt
YWxmb3JtZWQgYWRkcmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQgc3RvcmVzLiBGb3IgZXhhbXBs
ZToKKyMKKyMgbG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisjIGJlY29tZXM6CisjCisjIGxl
YXAgW2ZvbywgYmFyLCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBiYXoKKyMKKworY2xhc3MgTm9k
ZQorICAgIGRlZiBjeHhEb3VibGVBZGRyZXNzKGxpc3QpCisgICAgICAgICRhc20ucHV0YyAiLy8g
dHJhY2U6IE5vZGUuY3h4RG91YmxlQWRkcmVzcygpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19M
SU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEJhc2VJbmRleAorICAgIGRlZiBjeHhEb3VibGVBZGRyZXNzKGxpc3QpCisgICAgICAgICRh
c20ucHV0YyAiLy8gdHJhY2U6IEJhc2VJbmRleC5jeHhEb3VibGVBZGRyZXNzKCkgQCAje19fRklM
RV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAgICB0bXAgPSBU
bXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sICJsZWFwIiwgW3NlbGYsIHRtcF0pCisgICAgICAgIEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbmQKK2Vu
ZAorCisjZGVmIGN4eExvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3QpCisjICAgICRh
c20ucHV0YyAiLy8gdHJhY2U6IGN4eExvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKCkgQCAj
e19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworIyAgICBuZXdM
aXN0ID0gW10KKyMgICAgbGlzdC5lYWNoIHsKKyMgICAgICAgIHwgbm9kZSB8CisjICAgICAgICBp
ZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisjICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQor
IyAgICAgICAgICAgIHdoZW4gImxvYWRkIgorIyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBd
LmN4eERvdWJsZUFkZHJlc3MobmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dLCBub2RlLmFubm90
YXRpb24pCisjICAgICAgICAgICAgd2hlbiAic3RvcmVkIgorIyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZWQiLCBbbm9kZS5v
cGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXS5jeHhEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSwg
bm9kZS5hbm5vdGF0aW9uKQorIyAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBub2RlCisjICAgICAgICAgICAgZW5kCisjICAgICAgICBlbHNlCisjICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCisjICAgICAgICBlbmQKKyMgICAgfQorIyAgICBuZXdMaXN0Cisj
ZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxl
OgorIworIyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwg
dG1wCisjIHN0b3JlaSB0bXAsIFtmb29dCisjCisKKyNkZWYgY3h4TG93ZXJNaXNwbGFjZWRJbW1l
ZGlhdGVzKGxpc3QpCisjICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IGN4eExvd2VyTWlzcGxhY2Vk
SW1tZWRpYXRlcygpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNl
RnVuY3MKKyMgICAgbmV3TGlzdCA9IFtdCisjICAgIGxpc3QuZWFjaCB7CisjICAgICAgICB8IG5v
ZGUgfAorIyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorIyAgICAgICAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKKyMgICAgICAgICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorIyAg
ICAgICAgICAgICAgICBvcGVyYW5kcyA9IG5vZGUub3BlcmFuZHMKKyMgICAgICAgICAgICAgICAg
bmV3T3BlcmFuZHMgPSBbXQorIyAgICAgICAgICAgICAgICBvcGVyYW5kcy5lYWNoIHsKKyMgICAg
ICAgICAgICAgICAgICAgIHwgb3BlcmFuZCB8CisjICAgICAgICAgICAgICAgICAgICBpZiBvcGVy
YW5kLmlzX2E/IEltbWVkaWF0ZQorIyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5u
ZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorIyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgIm1vdmUiLCBbb3Bl
cmFuZCwgdG1wXSkKKyMgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGVyYW5kcyA8PCB0bXAK
KyMgICAgICAgICAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAgICAgICAgICAgICAgICBuZXdP
cGVyYW5kcyA8PCBvcGVyYW5kCisjICAgICAgICAgICAgICAgICAgICBlbmQKKyMgICAgICAgICAg
ICAgICAgfQorIyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBuZXdPcGVyYW5kcywgbm9kZS5hbm5vdGF0aW9uKQor
IyAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisjICAg
ICAgICAgICAgZW5kCisjICAgICAgICBlbHNlCisjICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
CisjICAgICAgICBlbmQKKyMgICAgfQorIyAgICBuZXdMaXN0CisjZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3ZlIiBp
bnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMKKyMg
d2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbworIwor
CitjbGFzcyBOb2RlCisgICAgZGVmIGN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2Uo
bGlzdCkKKyAgICAgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogTm9kZS5jeHhMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBp
ZiAkdHJhY2VGdW5jcworICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUg
fAorICAgICAgICAgICAgbm9kZS5jeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxp
c3QpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgICAgZGVmIGN4
eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgJGFzbS5wdXRj
ICIvLyB0cmFjZTogQWRkcmVzcy5jeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKCkg
QCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAg
ICBzZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGN4eExvd2Vy
TWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgJGFzbS5wdXRjICIvLyB0
cmFjZTogQmFzZUluZGV4LmN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UoKSBAICN7
X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAgICAgIHNl
bGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgY3h4TG93
ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICAkYXNtLnB1dGMgIi8v
IHRyYWNlOiBBYnNvbHV0ZUFkZHJlc3MuY3h4TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJz
ZSgpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAg
ICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICAgIGRlZiBjeHhM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgICRhc20ucHV0YyAi
Ly8gdHJhY2U6IEltbWVkaWF0ZS5jeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKCkg
QCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAg
ICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXco
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICAgICAgICB0bXAKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitkZWYg
Y3h4TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgJGFzbS5wdXRjICIvLyB0cmFj
ZTogY3h4TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKCkgQCAje19fRklMRV9ffToje1N0cmluZyhf
X0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFj
aCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24K
KyAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRpb24KKyAgICAgICAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMi
LCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5v
cGVyYW5kc1swXS52YWx1ZSA8IDAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9w
ZXJhbmRzWzBdLnZhbHVlID49IDI1NSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUu
b3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+
IC9hZGQvCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGNvZGUgPSAic3ViIiArIG5vZGUu
b3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3T3Bjb2RlID0gImFkZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXcoLW5vZGUub3BlcmFuZHNb
MF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmN4eExvd2VyTWFsZm9ybWVk
SW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgIHdoZW4gIm11bGkiLCAibXVscCIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KGNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSwg
YW5ub3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0p
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUuY3h4TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZS5jeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNw
bGFjZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMgYWRkaSBmb28sIFtiYXJdCisjCisj
IHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbYmFyXSwgdG1wCisjIGFkZGkgZm9vLCB0bXAKKyMg
c3RvcmVpIHRtcCwgW2Jhcl0KKyMKKyMgQW5vdGhlciBleGFtcGxlOgorIworIyBhZGRpIFtmb29d
LCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRpIFtmb29dLCB0bXAKKyMgYWRkaSB0
bXAsIGJhcgorIworCitkZWYgY3h4QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFu
ZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogY3h4QXNSZWdp
c3RlcigpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MK
KyAgICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRyZXNzPworICAgIAorICAgIHRt
cCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCBpZiBzdWZmaXggPT0gImQiIHRoZW4gOmZw
ciBlbHNlIDpncHIgZW5kKQorICAgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQu
Y29kZU9yaWdpbiwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkKKyAgICBpZiBuZWVk
U3RvcmUKKyAgICAgICAgcG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9y
aWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCisgICAgZW5kCisgICAgdG1w
CitlbmQKKworZGVmIGN4eEFzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywg
c3VmZml4KQorICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IGN4eEFzUmVnaXN0ZXJzKCkgQCAje19f
RklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgIG5ld09wZXJh
bmRzID0gW10KKyAgICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG9wZXJh
bmQsIGluZGV4IHwKKyAgICAgICAgbmV3T3BlcmFuZHMgPDwgY3h4QXNSZWdpc3RlcihwcmVMaXN0
LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkK
KyAgICB9CisgICAgbmV3T3BlcmFuZHMKK2VuZAorCitkZWYgY3h4TG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZXMobGlzdCkKKyAgICAkYXNtLnB1dGMgIi8vIHRyYWNlOiBjeHhMb3dlck1pc3BsYWNlZEFk
ZHJlc3NlcygpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVu
Y3MKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAor
ICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBwb3N0SW5zdHJ1
Y3Rpb25zID0gW10KKyAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRpb24KKyAg
ICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRk
cCIsICJhZGRpcyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJsc2hpZnRwIiwgIm11bGki
LCAibXVscCIsICJuZWdpIiwKKyAgICAgICAgICAgICAgICAibmVncCIsICJub3RpIiwgIm9yaSIs
ICJvcmlzIiwgIm9ycCIsICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInJzaGlmdHAiLCAidXJzaGlm
dHAiLCAic3ViaSIsCisgICAgICAgICAgICAgICAgInN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4
b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sIC9eYnRwLywgL15jaS8sIC9eY3AvLCAvXnRpLwor
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeHhBc1JlZ2lz
dGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiaSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAg
ICAgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJi
ZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAgICAg
ICAgICAidGJvIiwgImNiZXEiLCAiY2JuZXEiLCAiY2JhIiwgImNiYWVxIiwgImNiYiIsICJjYmJl
cSIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5v
cGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3h4QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQor
ICAgICAgICAgICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRi
cyIsICJ0YnMiLCAiY2JndCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCisgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4eEFzUmVnaXN0ZXJzKG5ld0xp
c3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3
aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3h4QXNSZWdpc3RlcnMo
bmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAg
ICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtjeHhBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5v
ZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2UpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBuZXdM
aXN0ICs9IHBvc3RJbnN0cnVjdGlvbnMKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBM
b3dlcmluZyBvZiByZWdpc3RlciByZXVzZSBpbiBjb21wYXJlIGluc3RydWN0aW9ucy4gRm9yIGV4
YW1wbGU6CisjCisjIGNpZXEgdDAsIHQxLCB0MAorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92
IHRtcCwgdDAKKyMgY2llcSB0bXAsIHQxLCB0MAorIworCisjIG1sYW0gVEVTVCB0cnkgcmVtb3Zp
bmcgdGhpczoKKyNkZWYgY3h4TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisjICAgICRhc20ucHV0
YyAiLy8gdHJhY2U6IGN4eExvd2VyUmVnaXN0ZXJSZXVzZSgpIEAgI3tfX0ZJTEVfX306I3tTdHJp
bmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyMgICAgbmV3TGlzdCA9IFtdCisjICAgIGxp
c3QuZWFjaCB7CisjICAgICAgICB8IG5vZGUgfAorIyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0
cnVjdGlvbgorIyAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRpb24KKyMgICAg
ICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisjICAgICAgICAgICAgd2hlbiAiY2llcSIsICJjaW5l
cSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNp
bHQiLCAiY2lsdGVxIiwKKyMgICAgICAgICAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwg
ImNwYWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRl
cSIsCisjICAgICAgICAgICAgICAgICMgbWxhbSBVTlVTRUQgInRpbyIsICJ0aXMiLCAidGl6Iiwg
InRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAidHBzIiwgInRweiIs
ICJ0cG56IiwKKyMgICAgICAgICAgICAgICAgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0YnMiLCAi
dGJ6IiwgInRibnoiLCAidHBzIiwgInRweiIsICJ0cG56IiwKKyMgICAgICAgICAgICAgICAgImNi
ZXEiLCAiY2JuZXEiLCAiY2JhIiwgImNiYWVxIiwgImNiYiIsICJjYmJlcSIsICJjYmd0IiwgImNi
Z3RlcSIsICJjYmx0IiwgImNibHRlcSIKKyMgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5k
cy5zaXplID09IDIKKyMgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0g
bm9kZS5vcGVyYW5kc1sxXQorIyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXco
bm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorIyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5k
c1swXSwgdG1wXSwgYW5ub3RhdGlvbikKKyMgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBu
b2RlLm9wZXJhbmRzWzFdXSkKKyMgICAgICAgICAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyMgICAgICAgICAgICAgICAgICAgIGVuZAor
IyAgICAgICAgICAgICAgICBlbHNlCisjICAgICAgICAgICAgICAgICAgICByYWlzZSAiV3Jvbmcg
bnVtYmVyIG9mIGFyZ3VtZW50cyBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBu
b2RlLm9wZXJhbmRzLnNpemUgPT0gMworIyAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVy
YW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJdCisjICAgICAgICAgICAgICAgICAgICAgICAgdG1w
ID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisjICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtu
b2RlLm9wZXJhbmRzWzBdLCB0bXBdLCBhbm5vdGF0aW9uKQorIyAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNv
ZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1dKQorIyAgICAgICAg
ICAgICAgICAgICAgZWxzaWYgbm9kZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisj
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpn
cHIpCisjICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzFdLCB0bXBdLCBhbm5vdGF0
aW9uKQorIyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXAsIG5v
ZGUub3BlcmFuZHNbMl1dKQorIyAgICAgICAgICAgICAgICAgICAgZWxzZQorIyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorIyAgICAgICAgICAgICAgICAgICAgZW5kCisj
ICAgICAgICAgICAgICAgIGVuZAorIyAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisjICAgICAgICAgICAgZW5kCisjICAgICAgICBlbHNlCisjICAgICAg
ICAgICAgbmV3TGlzdCA8PCBub2RlCisjICAgICAgICBlbmQKKyMgICAgfQorIyAgICBuZXdMaXN0
CisjZW5kCisKKyMKKyMgTGVhIHN1cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYg
Y3h4RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogQWRk
cmVzcy5jeHhFbWl0TGVhKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAk
dHJhY2VGdW5jcworICAgICAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAgICAgICAj
IG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCJhZGRzICN7ZGVzdGluYXRpb24uZHVtcH0sIFwj
I3tvZmZzZXQuZHVtcH0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tkZXN0
aW5hdGlvbi5jeHhWYWx1ZSgiaW50OHB0ciIpfSArPSAje29mZnNldC5jeHhWYWx1ZX07IgorICAg
ICAgICBlbHNlCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCJhZGRz
ICN7ZGVzdGluYXRpb24uZHVtcH0sICN7YmFzZS5kdW1wfSwgXCMje29mZnNldC5kdW1wfSIsIF9f
TElORV9fKQorICAgICAgICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmN4eFZhbHVlKCJp
bnQ4cHRyIil9ID0gI3tiYXNlLmN4eFZhbHVlKCJpbnQ4cHRyIil9ICsgI3tvZmZzZXQuY3h4VmFs
dWV9OyIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAg
ZGVmIGN4eEVtaXRMZWEoZGVzdGluYXRpb24pCisgICAgICAgICRhc20ucHV0YyAiLy8gdHJhY2U6
IEJhc2VJbmRleC5jeHhFbWl0TGVhKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9
IiBpZiAkdHJhY2VGdW5jcworICAgICAgICByYWlzZSAiTWFsZm9ybWVkIEJhc2VJbmRleCwgb2Zm
c2V0IHNob3VsZCBiZSB6ZXJvIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQu
dmFsdWUgPT0gMAorICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCJhZGQudyAj
e2Rlc3RpbmF0aW9uLmR1bXB9LCAje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sIGxzbCBcIyN7
c2NhbGVTaGlmdH0iLCBfX0xJTkVfXykKKyAgICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9u
LmN4eFZhbHVlKCJpbnQ4cHRyIil9ID0gI3tiYXNlLmN4eFZhbHVlKCJpbnQ4cHRyIil9ICsgKCN7
aW5kZXguY3h4VmFsdWV9IDw8ICN7c2NhbGVTaGlmdH0pOyIKKyAgICBlbmQKK2VuZAorCisjIEZJ
WE1FOiB3ZSBjb3VsZCBzdXBwb3J0IEFic29sdXRlQWRkcmVzcyBmb3IgbGVhLCBidXQgd2UgZG9u
J3QuCisKKyMKKyMgQWN0dWFsIGxvd2VyaW5nIGNvZGUgZm9sbG93cy4KKyMKKworY2xhc3MgU2Vx
dWVuY2UKKyAgICBkZWYgZ2V0TW9kaWZpZWRMaXN0Q1hYX0lOVEVSUFJFVEVSCisgICAgICAgICRh
c20ucHV0YyAiLy8gdHJhY2U6IFNlcXVlbmNlLmdldE1vZGlmaWVkTGlzdENYWF9JTlRFUlBSRVRF
UigpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAg
ICAgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAgICAgCisgICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ug
d2lsbCBvbmx5IHNlZSBpbnN0cnVjdGlvbnMgYW5kIGxhYmVscy4KKyAgICAgICAgbXlMaXN0LmVh
Y2ggeworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/
IEluc3RydWN0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBMb2NhbExhYmVsIG9yCisgICAgICAgICAg
ICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVj
dGVkICN7bm9kZS5pbnNwZWN0fSBhdCAje25vZGUuY29kZU9yaWdpbn0iIAorICAgICAgICAgICAg
ZW5kCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG15TGlzdCA9IGN4eExvd2VyQnJhbmNo
T3BzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gY3h4TG93ZXJTaGlmdE9wcyhteUxpc3QpCisg
ICAgICAgIG15TGlzdCA9IGN4eExvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAg
ICAgIyBtbGFtIFVOVVNFRCBteUxpc3QgPSBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJs
ZShteUxpc3QpCisgICAgICAgICMgbWxhbSBVTlVTRUQgbXlMaXN0ID0gY3h4TG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gY3h4TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gY3h4TG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZXMobXlMaXN0KQorICAgICAgICAjIG1sYW0gbXlMaXN0ID0gY3h4TG93ZXJSZWdpc3RlclJl
dXNlKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3Jhcmll
cyhteUxpc3QsIDpncHIsIENYWF9JTlRFUlBSRVRFUl9FWFRSQV9HUFJTKQorICAgICAgICBteUxp
c3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmZwciwgQ1hYX0lOVEVS
UFJFVEVSX0VYVFJBX0ZQUlMpCisgICAgICAgIAorICAgICAgICByZXR1cm4gbXlMaXN0CisgICAg
ZW5kCitlbmQKKworZGVmIGN4eE9wZXJhbmRzKG9wZXJhbmRzKQorICAgICRhc20ucHV0YyAiLy8g
dHJhY2U6IGN4eE9wZXJhbmRzKCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBp
ZiAkdHJhY2VGdW5jcworICAgIG9wZXJhbmRzLm1hcHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCitl
bmQKKworZGVmIGN4eEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcykKKyAgICAkYXNtLnB1dGMgIi8v
IHRyYWNlOiBjeHhGbGlwcGVkT3BlcmFuZHMoKSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9fTElO
RV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAgY3h4T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBv
cGVyYW5kc1swLi4tMl0pCitlbmQKKworZGVmIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgb3BlcmF0
b3IsIG9wZXJhbmRzLCB0eXBlKQorICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IGVtaXRDWFhDb21w
YWN0KCkgQCAje19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcwor
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIje29w
Y29kZX0gI3tjeHhGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgIyBtbGFtICRh
c20uY29tbWVudCBhbm5vdGF0ZSgiI3tvcGNvZGV9ICN7Y3h4RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmN4eFZh
bHVlKHR5cGUpfSA9ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7
b3BlcmFuZHNbMF0uY3h4VmFsdWUodHlwZSl9OyIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgi
I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0uZHVtcH0gI3tvcGVyYW5kc1swXS5kdW1wfTsiLCBfX0xJ
TkVfXykKKyAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmN4eFZhbHVlKHR5cGUpfSA9
ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0u
Y3h4VmFsdWUodHlwZSl9OyIKKyAgICBlbmQKK2VuZAorCitkZWYgZW1pdENYWChvcGNvZGUsIG9w
ZXJhdGlvbiwgb3BlcmFuZHMsIHR5cGUpCisgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogZW1pdENY
WCgpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAg
ICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5v
dGF0ZSgiI3tvcGNvZGV9ICN7Y3h4RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVf
XykKKyAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmN4eFZhbHVlKHR5cGUpfSA9ICN7
b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ICN7b3BlcmF0aW9ufSAje29wZXJhbmRzWzBdLmN4
eFZhbHVlKHR5cGUpfTsiCisgICAgZWxzZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2Rl
fSAje29wZXJhbmRzWzFdLmR1bXB9LCAje29wZXJhbmRzWzFdLmR1bXB9LCAje29wZXJhbmRzWzBd
LmR1bXB9IiwgX19MSU5FX18pCisgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhW
YWx1ZSh0eXBlKX0gPSAje29wZXJhbmRzWzFdLmN4eFZhbHVlKHR5cGUpfSAje29wZXJhdGlvbn0g
I3tvcGVyYW5kc1swXS5jeHhWYWx1ZSh0eXBlKX07IgorICAgIGVuZAorZW5kCisKK2RlZiBlbWl0
Q1hYRG91YmxlQnJhbmNoKG9wZXJhbmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5wdXRjICJpZiAo
I3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91YmxlIil9ICN7Y29uZGl0aW9ufSAje29wZXJhbmRz
WzFdLmN4eFZhbHVlKCJkb3VibGUiKX0pIgorICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3tvcGVy
YW5kc1syXS5jTGFiZWx9OyIKK2VuZAorCitkZWYgZW1pdENYWERvdWJsZUNoZWNrTmFOQnJhbmNo
KG9wZXJhbmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5wdXRjICJpZiAoaXNuYW4oI3tvcGVyYW5k
c1swXS5jeHhWYWx1ZSgiZG91YmxlIil9KSB8fCBpc25hbigje29wZXJhbmRzWzFdLmN4eFZhbHVl
KCJkb3VibGUiKX0pIgorICAgICRhc20ucHV0YyAiICAgIHx8ICgje29wZXJhbmRzWzBdLmN4eFZh
bHVlKCJkb3VibGUiKX0gI3tjb25kaXRpb259ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoImRvdWJs
ZSIpfSkpIgorICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3tvcGVyYW5kc1syXS5jTGFiZWx9OyIK
K2VuZAorCisjZGVmIGVtaXRDWFhUZXN0KG9wZXJhbmRzKQorIyAgICAkYXNtLnB1dGMgIi8vIHRy
YWNlOiBlbWl0Q1hYVGVzdCgpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYg
JHRyYWNlRnVuY3MKKyMgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorIyAgICBjYXNlIG9wZXJhbmRz
LnNpemUKKyMgICAgd2hlbiAyCisjICAgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCAtMSkKKyMgICAgd2hlbiAzCisjICAgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyMgICAg
ZWxzZQorIyAgICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7
b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyMgICAgZW5kCisjICAgIAor
IyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorIyAgICAg
ICAgJGFzbS5wdXRjICJ0c3QgI3t2YWx1ZS5jeHhPcGVyYW5kfSwgI3t2YWx1ZS5jeHhPcGVyYW5k
fSIKKyMgICAgZWxzaWYgbWFzay5pc19hPyBJbW1lZGlhdGUKKyMgICAgICAgICRhc20ucHV0YyAi
dHN0LncgI3t2YWx1ZS5jeHhPcGVyYW5kfSwgI3ttYXNrLmN4eE9wZXJhbmR9IgorIyAgICBlbHNl
CisjICAgICAgICAkYXNtLnB1dGMgInRzdCAje3ZhbHVlLmN4eE9wZXJhbmR9LCAje21hc2suY3h4
T3BlcmFuZH0iCisjICAgIGVuZAorI2VuZAorCisjIGRlZiBlbWl0Q1hYQ29tcGFyZShvcGVyYW5k
cywgY29kZSkKKyMgICAgICRhc20ucHV0YyAiLy8gdHJhY2U6IGVtaXRDWFhDb21wYXJlKCkgQCAj
e19fRklMRV9ffToje1N0cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworIyAgICAgJGFz
bS5wdXRjICJtb3ZzICN7b3BlcmFuZHNbMl0uY3h4T3BlcmFuZH0sIFwjMCIKKyMgICAgICRhc20u
cHV0YyAiY21wICN7b3BlcmFuZHNbMF0uY3h4T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uY3h4T3Bl
cmFuZH0iCisjICAgICAkYXNtLnB1dGMgIml0ICN7Y29kZX0iCisjICAgICAkYXNtLnB1dGMgIm1v
diN7Y29kZX0gI3tvcGVyYW5kc1syXS5jeHhPcGVyYW5kfSwgXCMxIgorIyBlbmQKKworZGVmIGVt
aXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCB0eXBlLCBjb21wYXJhdG9yKQorICAgICRhc20u
cHV0YyAiLy8gdHJhY2U6IGVtaXRDWFhDb21wYXJlKCkgQCAje19fRklMRV9ffToje1N0cmluZyhf
X0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1syXS5j
eHhWYWx1ZSh0eXBlKX0gPSAoI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSh0eXBlKX0gI3tjb21wYXJh
dG9yfSAje29wMiA9IG9wZXJhbmRzWzFdLmN4eFZhbHVlKHR5cGUpfSk7IgorZW5kCisKK2RlZiBl
bWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAk
YXNtLnB1dGMgIi8vIHRyYWNlOiBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaCgpIEAgI3tfX0ZJTEVf
X306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAgICAkYXNtLnB1dGMgImlm
ICgje29wZXJhbmRzWzBdLmN4eFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9ICN7b3BlcmFuZHNb
MV0uY3h4VmFsdWUodHlwZSl9KSIKKyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFuZHNb
Ml0uY0xhYmVsfTsiCitlbmQKKworIyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250YWluIGEgc3Ry
aW5nIHRoYXQgcHJvdmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1ZSBlLmcuICI8
IDAiLgorZGVmIGdlbmVyYXRlQ1hYQ29uZGl0aW9uRXhwcmVzc2lvbihvcGVyYW5kcywgY29uZGl0
aW9uVGVzdCkKKyAgICBvcDEgPSBvcGVyYW5kc1swXS5jeHhWYWx1ZQorCisgICAgIyBUaGUgb3Bl
cmFuZHMgbXVzdCBjb25zaXN0IG9mIDIgb3IgMyB2YWx1ZXMuCisgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgd2hlbiAyICMgSnVzdCB0ZXN0IG9wMSBhZ2FpbnN0IHRoZSBjb25kaXRpb25UZXN0
LgorICAgICAgICBsaHMgPSBvcDEKKyAgICB3aGVuIDMgIyBNYXNrIG9wMSB3aXRoIG9wMiBiZWZv
cmUgdGVzdGluZyBhZ2FpbnN0IHRoZSBjb25kaXRpb25UZXN0LgorICAgICAgICBsaHMgPSAiKCN7
b3AxfSAmICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9KSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNl
ICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgIiN7bGhzfSAje2NvbmRpdGlv
blRlc3R9IgorZW5kCisKKyMgY29uZGl0aW9uVGVzdCBzaG91bGQgY29udGFpbiBhIHN0cmluZyB0
aGF0IHByb3ZpZGVzIGEgY29tcGFyYXRvciBhbmQgYSBSSFMKKyMgdmFsdWUgZS5nLiAiPCAwIi4K
K2RlZiBlbWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCBjb25kaXRpb25UZXN0LCBicmFu
Y2hUYXJnZXQpCisgICAgJGFzbS5wdXRjICIvLyB0cmFjZTogZW1pdENYWFRlc3RBbmRCcmFuY2hJ
ZigpIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNlRnVuY3MKKyAg
ICBjb25kaXRpb25FeHByID0gZ2VuZXJhdGVDWFhDb25kaXRpb25FeHByZXNzaW9uKG9wZXJhbmRz
LCBjb25kaXRpb25UZXN0KQorICAgICRhc20ucHV0YyAiaWYgKCN7Y29uZGl0aW9uRXhwcn0pIgor
ICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3ticmFuY2hUYXJnZXR9OyIKK2VuZAorCitkZWYgZW1p
dENYWFRlc3RTZXQob3BlcmFuZHMsIGNvbmRpdGlvblRlc3QpCisgICAgIyBtbGFtIEZJWE1FCisg
ICAgJGFzbS5wdXRjICIvLyB0cmFjZTogZW1pdENYWFRlc3RTZXQoKSBAICN7X19GSUxFX199OiN7
U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisgICAgIyAkYXNtLnB1dGMgIm1vdnMg
I3tvcGVyYW5kc1stMV0uY3h4T3BlcmFuZH0sIFwjMCIKKyAgICAjIGVtaXRDWFhUZXN0KG9wZXJh
bmRzKQorICAgICMgJGFzbS5wdXRjICJpdCAje2NvZGV9IgorICAgICMgJGFzbS5wdXRjICJtb3Yj
e2NvZGV9ICN7b3BlcmFuZHNbLTFdLmN4eE9wZXJhbmR9LCBcIzEiCisgICAgb3AxID0gb3BlcmFu
ZHNbLTFdLmN4eFZhbHVlCisgICAgY29uZGl0aW9uRXhwciA9IGdlbmVyYXRlQ1hYQ29uZGl0aW9u
RXhwcmVzc2lvbihvcGVyYW5kcywgY29uZGl0aW9uVGVzdCkKKyAgICAkYXNtLnB1dGMgIiN7b3Ax
fSA9ICgje2NvbmRpdGlvbkV4cHJ9KTsiCitlbmQKKworIyBtbGFtIEJFR0lOIHRlc3QKK2RlZiBl
bWl0Q1hYT3BBbmRCcmFuY2gob3Bjb2RlLCBvcGVyYW5kcykKKyAgICBvcGVyYXRpb24gPSBTdHJp
bmcoL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvLm1hdGNoKG9wY29kZSkpCisgICAgY29uZGl0aW9u
ID0gJH4ucG9zdF9tYXRjaAorCisgICAgY2FzZSBvcGVyYXRpb24KKyAgICB3aGVuICJiYWRkaSIs
ICJiYWRkcCIKKyAgICAgICAgb3BlcmF0aW9uID0gIisiCisgICAgd2hlbiAiYnN1YmkiCisgICAg
ICAgIG9wZXJhdGlvbiA9ICItIgorICAgIHdoZW4gImJvcnJpIgorICAgICAgICBvcGVyYXRpb24g
PSAifCIKKyAgICBlbmQKKworICAgIGNhc2UgY29uZGl0aW9uCisgICAgd2hlbiAibyIKKyAgICAg
ICAgcmFpc2UgIkNhbm5vdCBoYW5kbGUgb3ZlcmZsb3cgaW4gdGhpcyBlbWl0dGVyLiIKKyAgICB3
aGVuICJzIgorICAgICAgICBjb25kaXRpb25UZXN0ID0gIjwgMCIKKyAgICB3aGVuICJ6IgorICAg
ICAgICBjb25kaXRpb25UZXN0ID0gIj09IDAiCisgICAgd2hlbiAibnoiCisgICAgICAgIGNvbmRp
dGlvblRlc3QgPSAiIT0gMCIKKyAgICBlbHNlCisgICAgICAgICRzdGRvdXQucHJpbnQgIlVua25v
d24gY29uZGl0aW9uICcje2NvbmRpdGlvbn0nIgorICAgIGVuZAorCisgICAgb3AxID0gb3BlcmFu
ZHNbMF0uY3h4VmFsdWUKKyAgICBvcDIgPSBvcGVyYW5kc1sxXS5jeHhWYWx1ZQorCisgICAgJGFz
bS5wdXRjICIvLyB0cmFjZTogZW1pdENYWE9wQW5kQnJhbmNoKCkgQCAje19fRklMRV9ffToje1N0
cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICRhc20ucHV0YyAieyIKKyAgICAk
YXNtLnB1dGMgIiAgICBpbnRwdHJfdCBvcDEgPSAje29wMX07IgorICAgICRhc20ucHV0YyAiICAg
IGludHB0cl90IG9wMiA9ICN7b3AyfTsiCisgICAgJGFzbS5wdXRjICIgICAgaW50cHRyX3QgdGVt
cCA9IG9wMiAje29wZXJhdGlvbn0gb3AxOyIKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAodGVtcCAj
e2NvbmRpdGlvblRlc3R9KSIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgZ290byAgI3tvcGVyYW5k
c1syXS5jTGFiZWx9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAje29wMn0gPSB0ZW1wOyIKKyAgICAk
YXNtLnB1dGMgIn0iCitlbmQKKworZGVmIGVtaXRDWFhPcEFuZEJyYW5jaElmT3ZlcmZsb3cob3Bj
b2RlLCBvcGVyYW5kcykKKyAgICAjb3BlcmF0aW9uID0gU3RyaW5nKC9eYihhZGRpfHN1Yml8b3Jp
fGFkZHApLy5tYXRjaChvcGNvZGUpKQorICAgICNjb25kaXRpb24gPSAkfi5wb3N0X21hdGNoCisK
KyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICAgIG9w
ZXJhdGlvbiA9ICIrIgorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgICAgb3BlcmF0aW9uID0gIi0i
CisgICAgZWxzZQorICAgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAje29wY29kZX0gYXQg
I3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKworICAgICRhc20ucHV0YyAiLy8gdHJhY2U6
IGVtaXRDWFhPcEFuZEJyYW5jaElmT3ZlcmZsb3coKSBAICN7X19GSUxFX199OiN7U3RyaW5nKF9f
TElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisKKyAgICAkYXNtLnB1dGMgInsiCisgICAgaWYgb3Bl
cmF0aW9uID09ICIrIgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkg
fCBPdmVyZmxvd3MgaWY6IgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAgICAg
ICAgfCBzaWduKGIrYSkgPSAxIChwb3MgKyBwb3MgIT0gbmVnKSIKKyAgICAgICAgJGFzbS5wdXRj
ICIgICAgLy8gMCAgICAgICAxICAgICAgIHwgbmV2ZXIiCisgICAgICAgICRhc20ucHV0YyAiICAg
IC8vIDEgICAgICAgMCAgICAgICB8IG5ldmVyIgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAx
ICAgICAgIDEgICAgICAgfCBzaWduKGIrYSkgPSAwIChuZWcgKyBuZWcgIT0gcG9zKSIKKyAgICAg
ICAgb3ZlcmZsb3dUZXN0ID0gIigoU0lHTl9CSVQoYikgPT0gU0lHTl9CSVQoYSkpICYmIChTSUdO
X0JJVChiK2EpICE9IFNJR05fQklUKGEpKSkiCisgICAgZWxzZSAjIG9wY29kZSA9ICItIgorICAg
ICAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6Igor
ICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAgICAgICAgfCBuZXZlciIKKyAgICAg
ICAgJGFzbS5wdXRjICIgICAgLy8gMCAgICAgICAxICAgICAgIHwgc2lnbihiLWEpID0gMSAocG9z
IC0gbmVnICE9IHBvcykiCisgICAgICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAgMCAgICAg
ICB8IHNpZ24oYi1hKSA9IDAgKG5lZyAtIHBvcyAhPSBwb3MpIgorICAgICAgICAkYXNtLnB1dGMg
IiAgICAvLyAxICAgICAgIDEgICAgICAgfCBuZXZlciIKKyAgICAgICAgb3ZlcmZsb3dUZXN0ID0g
IigoU0lHTl9CSVQoYikgIT0gU0lHTl9CSVQoYSkpICYmIChTSUdOX0JJVChiLWEpID09IFNJR05f
QklUKGEpKSkiCisgICAgZW5kCisgICAgJGFzbS5wdXRjICIgICAgaW50cHRyX3QgYSA9ICN7b3Bl
cmFuZHNbMF0uY3h4VmFsdWV9OyIKKyAgICAkYXNtLnB1dGMgIiAgICBpbnRwdHJfdCBiID0gI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZX07IgorICAgICRhc20ucHV0YyAiICAgIGlmICN7b3ZlcmZsb3dU
ZXN0fSIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgorICAgICRhc20ucHV0YyAiICAgICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9ID0gYiAje29wZXJh
dGlvbn0gYTsiCisgICAgJGFzbS5wdXRjICJ9IgorZW5kCisKK2RlZiBlbWl0Q1hYTXVsQW5kQnJh
bmNoSWZPdmVyZmxvdyhvcGNvZGUsIG9wZXJhbmRzKQorICAgICNvcGVyYXRpb24gPSBTdHJpbmco
L15iKGFkZGl8c3ViaXxvcml8YWRkcCkvLm1hdGNoKG9wY29kZSkpCisgICAgI2NvbmRpdGlvbiA9
ICR+LnBvc3RfbWF0Y2gKKworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYm11bGlvIgorICAg
ICAgICBvcGVyYXRpb24gPSAiKiIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJVbmhhbmRsZWQg
b3Bjb2RlICN7b3Bjb2RlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorCisgICAg
JGFzbS5wdXRjICIvLyB0cmFjZTogZW1pdENYWE11bEFuZEJyYW5jaElmT3ZlcmZsb3coKSBAICN7
X19GSUxFX199OiN7U3RyaW5nKF9fTElORV9fKX0iIGlmICR0cmFjZUZ1bmNzCisKKyAgICAkYXNt
LnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgaW50cHRyX3Qgb3AxID0gI3tvcGVyYW5kc1sw
XS5jeHhWYWx1ZX07IgorICAgICRhc20ucHV0YyAiICAgIGludHB0cl90IG9wMiA9ICN7b3BlcmFu
ZHNbMV0uY3h4VmFsdWV9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyBDaGVhcCBvdmVyZmxvdyBj
aGVjay4gIFdlJ2xsIGxldCBzbG93IHBhdGggaGFuZGxlIHRoZSBoYXJkIGNhc2UgYmVsb3c6Igor
ICAgICRhc20ucHV0YyAiICAgIGlmICgob3AxIHwgb3AyKSA+PiAxNSkiCisgICAgJGFzbS5wdXRj
ICIgICAgICAgIGdvdG8gICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgJGFzbS5wdXRjICIg
ICAgI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gPSBvcDIgI3tvcGVyYXRpb259IG9wMTsiCisgICAg
JGFzbS5wdXRjICJ9IgorZW5kCisKKyMgb3BlcmFuZHM6IGNhbGxUYXJnZXQsIGN1cnJlbnRGcmFt
ZSwgY3VycmVudFBDCitkZWYgZW1pdENYWENhbGxTbG93UGF0aChvcGNvZGUsIG9wZXJhbmRzKQor
ICAgICRhc20ucHV0YyAieyIKKyAgICAkYXNtLnB1dGMgIiAgICBFeGVjU3RhdGUqIGV4ZWMgPSBD
QVNUPEV4ZWNTdGF0ZSo+KCN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInZvaWRwdHIiKX0pOyIKKyAg
ICAkYXNtLnB1dGMgIiAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oI3tv
cGVyYW5kc1syXS5jeHhWYWx1ZSgidm9pZHB0ciIpfSk7IgorICAgICRhc20ucHV0YyAiICAgIFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSAje29wZXJhbmRzWzBdLmNMYWJlbH0oZXhlYywgcGMp
OyIKKyAgICAkYXNtLnB1dGMgIiAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAudS5p
bnN0cnVjdGlvbiwgcjEudS5leGVjU3RhdGUpOyIKKyAgICAkYXNtLnB1dGMgIn0iCitlbmQKKwor
Y2xhc3MgSW5zdHJ1Y3Rpb24KKyAgICAjICRzdGRvdXQucHJpbnQgIlxuXG4gbWxhbSA6OiBJbnN0
cnVjdGlvblxuXG4iCisgICAgZGVmIGxvd2VyQ1hYX0lOVEVSUFJFVEVSCisgICAgICAgICRhc20u
cHV0YyAiLy8gdHJhY2U6IGxvd2VyQ1hYX0lOVEVSUFJFVEVSKCkgQCAje19fRklMRV9ffToje1N0
cmluZyhfX0xJTkVfXyl9IiBpZiAkdHJhY2VGdW5jcworICAgICAgICAkYXNtLmNvZGVPcmlnaW4g
Y29kZU9yaWdpblN0cmluZyBpZiAkZW5hYmxlQ29kZU9yaWdpbkNvbW1lbnRzCisgICAgICAgICRh
c20uc291cmNlSW5zdHJ1Y3Rpb24gIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX07
IiBpZiAkZW5hYmxlU291cmNlSW5zdHJ1Y3Rpb25EdW1wCisgICAgICAgICRhc20uYW5ub3RhdGlv
biBhbm5vdGF0aW9uIGlmICRlbmFibGVJbnN0ckFubm90YXRpb25zCisKKyAgICAgICAgY2FzZSBv
cGNvZGUKKyAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIgorICAgICAgICAgICAg
aWYgb3Bjb2RlID09ICJhZGRpcyIKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAicyIKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAiIgorICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/
IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAw
IGFuZCBzdWZmaXguZW1wdHk/CisgICAgICAgICAgICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sx
XSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICAgICAgICAgIyBtbGFtICRhc20uY29t
bWVudCBhbm5vdGF0ZSgibW92ICN7b3BlcmFuZHNbMl0uZHVtcH0sICN7b3BlcmFuZHNbMV0uZHVt
cH0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVy
YW5kc1syXS5jeHhWYWx1ZX0sID0gI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX07IgorICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoImFkZHMgI3tvcGVyYW5kc1syXS5kdW1wfSwg
I3tvcGVyYW5kc1sxXS5kdW1wfSwgI3tvcGVyYW5kc1swXS5kdW1wfSIsIF9fTElORV9fKQorICAg
ICAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY3h4VmFsdWV9ID0gI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZX0gKyAje29wZXJhbmRzWzBdLmN4eFZhbHVlfTsiCisgICAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9w
ZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgIyBtbGFtICRh
c20ucHV0YyAiYWRkcyAje2N4eEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAg
ICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoImFkZHMgI3tjeHhGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAgICAgICRhc20ucHV0YyAi
I3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICJh
ZGRzICN7Y3h4RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgICAgICAgICAg
ICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCJhZGRzICN7Y3h4RmxpcHBlZE9wZXJh
bmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20u
cHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07
IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICMgbWxhbSBvcmlnICRhc20ucHV0YyAiYWRkI3tzdWZmaXh9ICN7Y3h4Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgICAgICAgICAgICMgbWxhbSAkYXNt
LmNvbW1lbnQgYW5ub3RhdGUoImFkZCN7c3VmZml4fSAje2N4eEZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVy
YW5kc1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIK
KyAgICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgIiYiLCBvcGVyYW5kcywgImludCIp
CisgICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFjdChv
cGNvZGUsICJ8Iiwgb3BlcmFuZHMsICJpbnQiKQorICAgICAgICB3aGVuICJvcmlzIgorICAgICAg
ICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAifCIsIG9wZXJhbmRzLCAiaW50IikKKyAgICAg
ICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2Rl
LCAiXiIsIG9wZXJhbmRzLCAiaW50IikKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIsICJsc2hpZnRw
IgorICAgICAgICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAiPDwiLCBvcGVyYW5kcywgImlu
dCIpCisgICAgICAgIHdoZW4gInJzaGlmdGkiLCAicnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRD
WFhDb21wYWN0KG9wY29kZSwgIj4+Iiwgb3BlcmFuZHMsICJpbnQiKQorICAgICAgICB3aGVuICJ1
cnNoaWZ0aSIsICJ1cnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29kZSwg
Ij4+Iiwgb3BlcmFuZHMsICJ1aW50IikKKyAgICAgICAgd2hlbiAibXVsaSIsICJtdWxwIgorICAg
ICAgICAgICAgZW1pdENYWCgibXVsIiwgIioiLCBvcGVyYW5kcywgImludCIpCisgICAgICAgIHdo
ZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9w
Y29kZSwgIi0iLCBvcGVyYW5kcywgImludCIpCisgICAgICAgIHdoZW4gIm5lZ2kiLCAibmVncCIK
KyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX0gPSAtI3tvcGVy
YW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAgICB3aGVuICJub3RpIgorICAgICAgICAgICAgJGFz
bS5wdXRjICIje29wZXJhbmRzWzBdLmN4eFZhbHVlfSA9ICEje29wZXJhbmRzWzBdLmN4eFZhbHVl
fTsiCisgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJsb2FkcCIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9ID0gI3tvcGVyYW5kc1sw
XS5pbnRNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICAg
ICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5pbnRNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5j
eHhWYWx1ZSgiaW50Iil9OyIKKyAgICAgICAgd2hlbiAibG9hZGIiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInVpbnQiKX0gPSAje29wZXJhbmRzWzBdLnVp
bnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9ID0gI3tvcGVyYW5kc1swXS5pbnQ4TWVt
UmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tv
cGVyYW5kc1sxXS51aW50OE1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJpbnQiKX0i
CisgICAgICAgIHdoZW4gImxvYWRoIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRz
WzFdLmN4eFZhbHVlKCJ1aW50Iil9ID0gI3tvcGVyYW5kc1swXS51aW50MTZNZW1SZWZ9OyIKKyAg
ICAgICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFd
LmN4eFZhbHVlKCJpbnQiKX0gPSAje29wZXJhbmRzWzBdLmludDE2TWVtUmVmfTsiCisgICAgICAg
IHdoZW4gInN0b3JlaCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiKiN7b3BlcmFuZHNbMV0udWlu
dDE2TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoIml2YWwiKX07IgorICAgICAgICB3
aGVuICJsb2FkZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1
ZSgiZG91YmxlIil9ID0gI3tvcGVyYW5kc1swXS5kYmxNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAi
c3RvcmVkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmRibE1lbVJlZn0g
PSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJkb3VibGUiKX07IgorICAgICAgICB3aGVuICJhZGRk
IgorICAgICAgICAgICAgZW1pdENYWCgidmFkZC5mNjQiLCAiKyIsIG9wZXJhbmRzLCAiZG91Ymxl
IikKKyAgICAgICAgd2hlbiAiZGl2ZCIKKyAgICAgICAgICAgIGVtaXRDWFgoInZkaXYuZjY0Iiwg
Ii8iLCBvcGVyYW5kcywgImRvdWJsZSIpCisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAg
ICBlbWl0Q1hYKCJ2c3ViLmY2NCIsICItIiwgb3BlcmFuZHMsICJkb3VibGUiKQorICAgICAgICB3
aGVuICJtdWxkIgorICAgICAgICAgICAgZW1pdENYWCgidm11bC5mNjQiLCAiKiIsIG9wZXJhbmRz
LCAiZG91YmxlIikKKyAgICAgICAgd2hlbiAic3FydGQiCisgICAgICAgICAgICAkYXNtLnB1dGMg
IiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoImRvdWJsZSIpfSA9IHNxcnQoI3tvcGVyYW5kc1sxXS5j
eHhWYWx1ZSgiZG91YmxlIil9KTsiCisgICAgICAgIHdoZW4gImNpMmQiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoImRvdWJsZSIpfSA9ICN7b3BlcmFuZHNb
MF0uY3h4VmFsdWV9OyIKKyAgICAgICAgd2hlbiAiYmRlcSIKKyAgICAgICAgICAgICMgbWxhbSBl
bWl0Q1hYRG91YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICAgICAgICAgICMgbWxhbSAk
YXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0i
LCBfX0xJTkVfXykKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3BlcmFuZHMsICI9
PSIpCisgICAgICAgICN3aGVuICJiZG5lcSIKKyAgICAgICAgIyAgICAkYXNtLnB1dGMgInZjbXBl
LmY2NCAje2N4eE9wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICMgICAgJGFzbS5w
dXRjICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICAgICMgICAgaXNVbm9yZGVyZWQgPSBM
b2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgICAjICAgICRhc20ucHV0YyAiYnZzICN7
TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5jTGFiZWx9IgorICAg
ICAgICAjICAgICRhc20ucHV0YyAiYm5lICN7b3BlcmFuZHNbMl0uY0xhYmVsfSIKKyAgICAgICAg
IyAgICBpc1Vub3JkZXJlZC5sb3dlcigiQ1hYX0lOVEVSUFJFVEVSIikKKyAgICAgICAgd2hlbiAi
YmRndCIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3BlcmFuZHMsICI+IikKKyAg
ICAgICAgd2hlbiAiYmRndGVxIgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUJyYW5jaChvcGVy
YW5kcywgIj49IikKKyAgICAgICAgd2hlbiAiYmRsdCIKKyAgICAgICAgICAgIGVtaXRDWFhEb3Vi
bGVCcmFuY2gob3BlcmFuZHMsICI8IikKKyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAg
ICAgZW1pdENYWERvdWJsZUJyYW5jaChvcGVyYW5kcywgIjw9IikKKyAgICAgICAgd2hlbiAiYmRl
cXVuIgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUNoZWNrTmFOQnJhbmNoKG9wZXJhbmRzLCAi
PT0iKQorICAgICAgICB3aGVuICJiZG5lcXVuIgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUNo
ZWNrTmFOQnJhbmNoKG9wZXJhbmRzLCAiIT0iKQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAg
ICAgICAgICBlbWl0Q1hYRG91YmxlQ2hlY2tOYU5CcmFuY2gob3BlcmFuZHMsICI+IikKKyAgICAg
ICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAgICAgICBlbWl0Q1hYRG91YmxlQ2hlY2tOYU5CcmFu
Y2gob3BlcmFuZHMsICI+PSIpCisgICAgICAgIHdoZW4gImJkbHR1biIKKyAgICAgICAgICAgIGVt
aXRDWFhEb3VibGVDaGVja05hTkJyYW5jaChvcGVyYW5kcywgIjwiKQorICAgICAgICB3aGVuICJi
ZGx0ZXF1biIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVDaGVja05hTkJyYW5jaChvcGVyYW5k
cywgIjw9IikKKyAgICAgICAgd2hlbiAiYnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkg
YmUgYSBnb29kIGlkZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNl
IHRoZSBpbnRlcnByZXRlcgorICAgICAgICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0
LgorICAgICAgICAgICAgcmFpc2UgIkNYWF9JTlRFUlBSRVRFUiBkb2VzIG5vdCBzdXBwb3J0IHRo
aXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgd2hlbiAidGQyaSIKKyAgICAg
ICAgICAgICMgbWxhbSAkYXNtLnB1dGMgInZjdnQuczMyLmY2NCAje0NYWF9JTlRFUlBSRVRFUl9T
Q1JBVENIX0ZQUi5jeHhTaW5nbGV9LCAje29wZXJhbmRzWzBdLmN4eE9wZXJhbmR9IgorICAgICAg
ICAgICAgIyBtbGFtICRhc20ucHV0YyAidm1vdiAje29wZXJhbmRzWzFdLmN4eE9wZXJhbmR9LCAj
e0NYWF9JTlRFUlBSRVRFUl9TQ1JBVENIX0ZQUi5jeHhTaW5nbGV9IgorICAgICAgICAgICAgIyBt
bGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgidmN2dC5zMzIuZjY0ICN7Q1hYX0lOVEVSUFJFVEVS
X1NDUkFUQ0hfRlBSLmN4eFNpbmdsZX0sICN7b3BlcmFuZHNbMF0uZHVtcH07IHZtb3YgI3tvcGVy
YW5kc1sxXS5kdW1wfSwgI3tDWFhfSU5URVJQUkVURVJfU0NSQVRDSF9GUFIuY3h4U2luZ2xlfSIs
IF9fTElORV9fKQorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmN4eFZhbHVl
KCJpbnQiKX0gPSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJkb3VibGUiKX07IgorICAgICAgICB3
aGVuICJiY2QyaSIgICMgb3BlcmFuZHM6IHNyY0RibCBkc3RJbnQgc2xvd1BhdGgKKyAgICAgICAg
ICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGRvdWJsZSBkID0g
I3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91YmxlIil9OyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGQpOyIK
KyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGlmIChhc0ludDMyICE9IGQgfHwgKCFhc0ludDMy
ICYmIHNpZ25iaXQoZCkpKSAvLyB0cnVlIGZvciAtMC4wIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgICAgIGdvdG8gICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiAgICAje29wZXJhbmRzWzFdLmN4eFZhbHVlfSA9IGFzSW50MzI7IiAgICAgICAgICAg
IAorICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorCisgICAgICAgIHdoZW4gIm1vdmR6IgorICAg
ICAgICAgICAgIyBGSVhNRTogZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAg
ICAgICAgICByYWlzZSAiQ1hYX0lOVEVSUFJFVEVSIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNv
ZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAgICAgICAjd2hlbiAicG9wIgorICAgICAgICAjICAg
ICRhc20ucHV0YyAicG9wICN7b3BlcmFuZHNbMF0uY3h4T3BlcmFuZH0iCisgICAgICAgICN3aGVu
ICJwdXNoIgorICAgICAgICAjICAgICRhc20ucHV0YyAicHVzaCAje29wZXJhbmRzWzBdLmN4eE9w
ZXJhbmR9IgorICAgICAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgICAg
ICAgJGFzbS5wdXRjICIgLy8gbWxhbSA6OiBJbnN0cnVjdGlvbi5sb3dlckNYWF9JTlRFUlBSRVRF
Uigje29wY29kZX0pIEAgI3tfX0ZJTEVfX306I3tTdHJpbmcoX19MSU5FX18pfSIgaWYgJHRyYWNl
RnVuY3MKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAg
ICAgICAgICAgIGN4eE1vdmVJbW1lZGlhdGUob3BlcmFuZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFd
KQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgIm1v
diAje2N4eEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgICAgICMgbWxh
bSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIm1vdiAje2N4eEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVy
YW5kc1sxXS5jeHhPcGVyYW5kfSA9ICN7b3BlcmFuZHNbMF0uY3h4T3BlcmFuZH07IgorICAgICAg
ICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgidWludCIpfSA9ICN7
b3BlcmFuZHNbMF0uY3h4VmFsdWUoInVpbnQiKX07IgorICAgICAgICAgICAgZW5kCisgICAgICAg
IHdoZW4gIm5vcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiLy8gbm9wIgorICAgICAgICB3aGVu
ICJiaWVxIiwgImJwZXEiLCAiYmJlcSIKKyAgICAgICAgICAgICMgbWxhbSBpZiBJbW1lZGlhdGUu
bmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICMgbWxhbSAgICAgJGFzbS5w
dXRjICJ0c3QgI3tvcGVyYW5kc1sxXS5jeHhPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5jeHhPcGVy
YW5kfSIKKyAgICAgICAgICAgICMgbWxhbSBlbHNpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0g
b3BlcmFuZHNbMV0KKyAgICAgICAgICAgICMgbWxhbSAgICAgJGFzbS5wdXRjICJ0c3QgI3tvcGVy
YW5kc1swXS5jeHhPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5jeHhPcGVyYW5kfSIKKyAgICAgICAg
ICAgICMgbWxhbSBlbHNlCisgICAgICAgICAgICAjIG1sYW0gICAgICRhc20ucHV0YyAiY21wICN7
Y3h4T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICMgbWxhbSBlbmQKKyAg
ICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgImJlcSAje29wZXJhbmRzWzJdLmNMYWJlbH0iCisg
ICAgICAgICAgICAjIG1sYW0gZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJMTElV
SW50IiwgIj09IikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7
b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAg
IGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAiaW50IiwgIj09IikKKyAgICAgICAg
d2hlbiAiYmluZXEiLCAiYnBuZXEiLCAiYmJuZXEiCisgICAgICAgICAgICAjIG1sYW0gaWYgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAjIG1sYW0gICAg
ICRhc20ucHV0YyAidHN0ICN7b3BlcmFuZHNbMV0uY3h4T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0u
Y3h4T3BlcmFuZH0iCisgICAgICAgICAgICAjIG1sYW0gZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICAgICAjIG1sYW0gICAgICRhc20ucHV0YyAidHN0
ICN7b3BlcmFuZHNbMF0uY3h4T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uY3h4T3BlcmFuZH0iCisg
ICAgICAgICAgICAjIG1sYW0gZWxzZQorICAgICAgICAgICAgIyBtbGFtICAgICAkYXNtLnB1dGMg
ImNtcCAje2N4eE9wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAjIG1sYW0g
ZW5kCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICJibmUgI3tvcGVyYW5kc1syXS5jTGFi
ZWx9IgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRz
LCAiTExJVUludCIsICIhPSIpCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90
YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVyYW5kcyl9IiwgX19MSU5FX18pCisgICAg
ICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgImludCIsICIhPSIpCisg
ICAgICAgIHdoZW4gImJpYSIsICJicGEiLCAiYmJhIgorICAgICAgICAgICAgIyBtbGFtICRhc20u
cHV0YyAiY21wICN7Y3h4T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICMg
bWxhbSAkYXNtLnB1dGMgImJoaSAje29wZXJhbmRzWzJdLmNMYWJlbH0iCisgICAgICAgICAgICAj
IG1sYW0gZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJMTElVSW50IiwgIj4iKQor
ICAgICAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgiI3tvcGNvZGV9ICN7Y3h4
T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAgZW1pdENYWENvbXBh
cmVBbmRCcmFuY2gob3BlcmFuZHMsICJ1aW50IiwgIj4iKQorICAgICAgICB3aGVuICJiaWFlcSIs
ICJicGFlcSIsICJiYmFlcSIKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgImNtcCAje2N4
eE9wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRj
ICJiaHMgI3tvcGVyYW5kc1syXS5jTGFiZWx9IgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhD
b21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAiTExJVUludCIsICI+PSIpCisgICAgICAgICAgICAj
IG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVy
YW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChv
cGVyYW5kcywgInVpbnQiLCAiPj0iKQorICAgICAgICB3aGVuICJiaWIiLCAiYnBiIiwgImJiYiIK
KyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgImNtcCAje2N4eE9wZXJhbmRzKG9wZXJhbmRz
WzAuLjFdKX0iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICJibG8gI3tvcGVyYW5kc1sy
XS5jTGFiZWx9IgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9w
ZXJhbmRzLCAiTExJVUludCIsICI8IikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQg
YW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykK
KyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAidWludCIsICI8
IikKKyAgICAgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiLCAiYmJiZXEiCisgICAgICAgICAgICAj
IG1sYW0gJGFzbS5wdXRjICJjbXAgI3tjeHhPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAg
ICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiYmxzICN7b3BlcmFuZHNbMl0uY0xhYmVsfSIKKyAg
ICAgICAgICAgICMgbWxhbSBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgIkxMSVVJ
bnQiLCAiPD0iKQorICAgICAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgiI3tv
cGNvZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAg
ZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJ1aW50IiwgIjw9IikKKyAgICAgICAg
d2hlbiAiYmlndCIsICJicGd0IiwgImJiZ3QiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRj
ICJjbXAgI3tjeHhPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgIyBtbGFt
ICRhc20ucHV0YyAiYmd0ICN7b3BlcmFuZHNbMl0uY0xhYmVsfSIKKyAgICAgICAgICAgICMgbWxh
bSBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgIkxMSUludCIsICI+IikKKyAgICAg
ICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJh
bmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5k
QnJhbmNoKG9wZXJhbmRzLCAiaW50IiwgIj4iKQorICAgICAgICB3aGVuICJiaWd0ZXEiLCAiYnBn
dGVxIiwgImJiZ3RlcSIKKyAgICAgICAgICAgICMgbWxhbSBvcmlnICRhc20ucHV0YyAiY21wICN7
Y3h4T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICMgbWxhbSBvcmlnICRh
c20ucHV0YyAiYmdlICN7b3BlcmFuZHNbMl0uY0xhYmVsfSIKKyAgICAgICAgICAgICMgbWxhbSBl
bWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgIkxMSUludCIsICI+PSIpCisgICAgICAg
ICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5k
cyhvcGVyYW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZEJy
YW5jaChvcGVyYW5kcywgImludCIsICI+PSIpCisgICAgICAgIHdoZW4gImJpbHQiLCAiYnBsdCIs
ICJiYmx0IgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiY21wICN7Y3h4T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgImJsdCAje29w
ZXJhbmRzWzJdLmNMYWJlbH0iCisgICAgICAgICAgICAjIG1sYW0gZW1pdENYWENvbXBhcmVBbmRC
cmFuY2gob3BlcmFuZHMsICJMTElJbnQiLCAiPCIpCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5j
b21tZW50IGFubm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVyYW5kcyl9IiwgX19M
SU5FX18pCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgImlu
dCIsICI8IikKKyAgICAgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIsICJiYmx0ZXEiCisgICAg
ICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICJjbXAgI3tjeHhPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiYmxlICN7b3BlcmFuZHNbMl0uY0xh
YmVsfSIKKyAgICAgICAgICAgICMgbWxhbSBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5k
cywgIkxMSUludCIsICI8PSIpCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90
YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVyYW5kcyl9IiwgX19MSU5FX18pCisgICAg
ICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgImludCIsICI8PSIpCisg
ICAgICAgIHdoZW4gImJ0aXoiLCAiYnRweiIsICJidGJ6IgorICAgICAgICAgICAgIyBtbGFtIGVt
aXRDWFhUZXN0KG9wZXJhbmRzKQorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiYmVxICN7
b3BlcmFuZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFu
bm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVyYW5kcyl9IiwgX19MSU5FX18pCisg
ICAgICAgICAgICBlbWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCAiPT0gMCIsIG9wZXJh
bmRzWy0xXS5jTGFiZWwpCisgICAgICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56Igor
ICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhUZXN0KG9wZXJhbmRzKQorICAgICAgICAgICAgIyBt
bGFtICRhc20ucHV0YyAiYm5lICN7b3BlcmFuZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICAgICAj
IG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVy
YW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICBlbWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9w
ZXJhbmRzLCAiIT0gMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisgICAgICAgICMgbWxhbSBVTlVT
RUQgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAg
ICMgbWxhbSBlbWl0Q1hYVGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAg
IyBtbGFtICRhc20ucHV0YyAiYnZzICN7b3BlcmFuZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICMg
bWxhbSBVTlVTRUQgICAgIGVtaXRDWFhUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsICJ2cyIpICMg
QnJhbmNoIGlmIG92ZXJmbG93LgorICAgICAgICB3aGVuICJidGlzIiwgImJ0cHMiLCAiYnRicyIK
KyAgICAgICAgICAgICMgbWxhbSBlbWl0Q1hYVGVzdChvcGVyYW5kcykKKyAgICAgICAgICAgICMg
bWxhbSAkYXNtLnB1dGMgImJtaSAje29wZXJhbmRzWy0xXS5jTGFiZWx9IgorICAgICAgICAgICAg
IyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgiI3tvcGNvZGV9ICN7Y3h4T3BlcmFuZHMob3Bl
cmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAgZW1pdENYWFRlc3RBbmRCcmFuY2hJZihv
cGVyYW5kcywgIjwgMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisgICAgICAgIHdoZW4gImptcCIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAgICAgICAgICMgbWxh
bSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoImIgLi4uIiwgX19MSU5FX18pCisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRjICJnb3RvICN7b3BlcmFuZHNbMF0uY0xhYmVsfTsiCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAibW92IHBjLCAje29wZXJhbmRz
WzBdLmN4eE9wZXJhbmR9IgorICAgICAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5u
b3RhdGUoIm1vdiBwYywgI3tvcGVyYW5kc1swXS5kdW1wfSIsIF9fTElORV9fKQorICAgICAgICAg
ICAgICAgICRhc20ucHV0YyAiZ290byAqI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgidm9pZHB0ciIp
fTsiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiY2FsbCIKKyAgICAgICAgICAgIGlm
IG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgImJs
eCAje29wZXJhbmRzWzBdLmNMYWJlbH0iCisgICAgICAgICAgICAgICAgIyBtbGFtICRhc20uY29t
bWVudCBhbm5vdGF0ZSgiYmx4ICN7b3BlcmFuZHNbMF0uY0xhYmVsfSIsIF9fTElORV9fKQorICAg
ICAgICAgICAgICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICB2b2lkICgqZikoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPigje29wZXJhbmRzWzBd
LmNMYWJlbH0pOyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBmKCk7IgorICAgICAg
ICAgICAgICAgICRhc20ucHV0YyAifSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAjIG1sYW0gJGFzbS5wdXRjICJibHggI3tvcGVyYW5kc1swXS5jeHhPcGVyYW5kfSIKKyAgICAg
ICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCJibHggI3tvcGVyYW5kc1sw
XS5kdW1wfSIsIF9fTElORV9fKQorICAgICAgICAgICAgICAgICRhc20ucHV0YyAieyIKKyAgICAg
ICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB2b2lkICgqZikoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCgqKSgpPigje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJ2b2lkcHRyIil9KTsiCisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRjICIgICAgZigpOyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMg
In0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYnJlYWsiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIkNSQVNIKCk7IC8vIE5vdCBoYW5kbGVkIHlldC4iCisgICAgICAgIHdoZW4gInJl
dF9tbGFtIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiYnggbHIiCisgICAgICAgICAg
ICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCJieCBsciIsIF9fTElORV9fKQorICAgICAg
ICAgICAgIyAkYXNtLnB1dGMgImdvdG8gX29mZmxpbmVhc21fcmV0OyIgIyBtbGFtIEZJWE1FCisg
ICAgICAgIHdoZW4gImNpZXEiLCAiY3BlcSIsICJjYmVxIgorICAgICAgICAgICAgIyBtbGFtIGVt
aXRDWFhDb21wYXJlKG9wZXJhbmRzLCAiZXEiKQorICAgICAgICAgICAgIyBtbGFtICRhc20uY29t
bWVudCBhbm5vdGF0ZSgiI3tvcGNvZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElO
RV9fKQorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJ1aW50Iiwg
Ij09IikKKyAgICAgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiLCAiY2JuZXEiCisgICAgICAgICAg
ICAjIG1sYW0gZW1pdENYWENvbXBhcmUob3BlcmFuZHMsICJuZSIpCisgICAgICAgICAgICAjIG1s
YW0gZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJMTElVSW50IiwgIiE9IikKKyAgICAg
ICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJh
bmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5k
U2V0KG9wZXJhbmRzLCAidWludCIsICIhPSIpCisgICAgICAgIHdoZW4gImNpYSIsICJjcGEiLCAi
Y2JhIgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQor
ICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAiTExJVUlu
dCIsICI+IikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bj
b2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgIGVt
aXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAidWludCIsICI+IikKKyAgICAgICAgd2hlbiAi
Y2lhZXEiLCAiY3BhZXEiLCAiY2JhZXEiCisgICAgICAgICAgICAjIG1sYW0gZW1pdENYWENvbXBh
cmUob3BlcmFuZHMsICJocyIpCisgICAgICAgICAgICAjIG1sYW0gZW1pdENYWENvbXBhcmVBbmRT
ZXQob3BlcmFuZHMsICJMTElVSW50IiwgIj49IikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNv
bW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJ
TkVfXykKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAidWludCIs
ICI+PSIpCisgICAgICAgIHdoZW4gImNpYiIsICJjcGIiLCAiY2JiIgorICAgICAgICAgICAgIyBt
bGFtIGVtaXRDWFhDb21wYXJlKG9wZXJhbmRzLCAibG8iKQorICAgICAgICAgICAgIyBtbGFtIGVt
aXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAiTExJVUludCIsICI8IikKKyAgICAgICAgICAg
ICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9w
ZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9w
ZXJhbmRzLCAidWludCIsICI8IikKKyAgICAgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiLCAiY2Ji
ZXEiCisgICAgICAgICAgICAjIG1sYW0gZW1pdENYWENvbXBhcmUob3BlcmFuZHMsICJscyIpCisg
ICAgICAgICAgICAjIG1sYW0gZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJMTElVSW50
IiwgIjwiKQorICAgICAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgiI3tvcGNv
ZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAgZW1p
dENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJ1aW50IiwgIjwiKQorICAgICAgICB3aGVuICJj
aWd0IiwgImNwZ3QiLCAiY2JndCIKKyAgICAgICAgICAgICMgbWxhbSBlbWl0Q1hYQ29tcGFyZShv
cGVyYW5kcywgImd0IikKKyAgICAgICAgICAgICMgbWxhbSBlbWl0Q1hYQ29tcGFyZUFuZFNldChv
cGVyYW5kcywgIkxMSUludCIsICI+IikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQg
YW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykK
KyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAiaW50IiwgIj4iKQor
ICAgICAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIiwgImNiZ3RlcSIKKyAgICAgICAgICAgICMg
bWxhbSBlbWl0Q1hYQ29tcGFyZShvcGVyYW5kcywgImdlIikKKyAgICAgICAgICAgICMgbWxhbSBl
bWl0Q1hYQ29tcGFyZUFuZFNldChvcGVyYW5kcywgIkxMSUludCIsICI+PSIpCisgICAgICAgICAg
ICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5kcyhv
cGVyYW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZFNldChv
cGVyYW5kcywgImludCIsICI+PSIpCisgICAgICAgIHdoZW4gImNpbHQiLCAiY3BsdCIsICJjYmx0
IgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlKG9wZXJhbmRzLCAibHQiKQorICAg
ICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAiTExJSW50Iiwg
IjwiKQorICAgICAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgiI3tvcGNvZGV9
ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAgZW1pdENY
WENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJpbnQiLCAiPCIpCisgICAgICAgIHdoZW4gImNpbHRl
cSIsICJjcGx0ZXEiLCAiY2JsdGVxIgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJl
KG9wZXJhbmRzLCAibGUiKQorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhDb21wYXJlQW5kU2V0
KG9wZXJhbmRzLCAiTExJSW50IiwgIjw9IikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1l
bnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVf
XykKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAiaW50IiwgIjw9
IikKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0aW8iLCAidGJvIiwgInRwbyIKKyAgICAg
ICAgIyBtbGFtIFVOVVNFRCAgICAgZW1pdENYWFRlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisgICAg
ICAgIHdoZW4gInRpcyIsICJ0YnMiLCAidHBzIgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhU
ZXN0U2V0KG9wZXJhbmRzLCAibWkiKQorICAgICAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBh
bm5vdGF0ZSgiI3tvcGNvZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQor
ICAgICAgICAgICAgZW1pdENYWFRlc3RTZXQob3BlcmFuZHMsICI8IDAiKQorICAgICAgICB3aGVu
ICJ0aXoiLCAidGJ6IiwgInRweiIKKyAgICAgICAgICAgICMgbWxhbSBlbWl0Q1hYVGVzdFNldChv
cGVyYW5kcywgImVxIikKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUo
IiN7b3Bjb2RlfSAje2N4eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAg
ICAgIGVtaXRDWFhUZXN0U2V0KG9wZXJhbmRzLCAiPT0gMCIpCisgICAgICAgIHdoZW4gInRpbnoi
LCAidGJueiIsICJ0cG56IgorICAgICAgICAgICAgIyBtbGFtIGVtaXRDWFhUZXN0U2V0KG9wZXJh
bmRzLCAibmUiKQorICAgICAgICAgICAgIyBtbGFtICRhc20uY29tbWVudCBhbm5vdGF0ZSgiI3tv
cGNvZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElORV9fKQorICAgICAgICAgICAg
ZW1pdENYWFRlc3RTZXQob3BlcmFuZHMsICIhPSAwIikKKyAgICAgICAgd2hlbiAiY2RxaSIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiY2RxIgorICAgICAgICB3aGVuICJpZGl2aSIKKyAgICAgICAg
ICAgICRhc20ucHV0YyAiaWRpdmwgI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX0iCisgICAgICAgICMg
bWxhbSBFTkQgCisgICAgICAgIHdoZW4gImZpaTJkIgorICAgICAgICAgICAgIyAkYXNtLnB1dGMg
InZtb3YgI3tvcGVyYW5kc1syXS5jeHhPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5jeHhPcGVyYW5k
fSwgI3tvcGVyYW5kc1sxXS5jeHhPcGVyYW5kfSIKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNv
bW1lbnQgYW5ub3RhdGUoInZtb3YgI3tvcGVyYW5kc1syXS5kdW1wfSwgI3tvcGVyYW5kc1swXS5k
dW1wfSwgI3tvcGVyYW5kc1sxXS5kdW1wfSIsIF9fTElORV9fKQorICAgICAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzJdLmN4eFZhbHVlKCJkb3VibGUiKX0gPSBJbnRzMkRvdWJsZSgje29w
ZXJhbmRzWzBdLmN4eFZhbHVlfSwgI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0pOyIKKyAgICAgICAg
d2hlbiAiZmQyaWkiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICJ2bW92ICN7b3BlcmFu
ZHNbMV0uY3h4T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uY3h4T3BlcmFuZH0sICN7b3BlcmFuZHNb
MF0uY3h4T3BlcmFuZH0iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRl
KCJ2bW92ICN7b3BlcmFuZHNbMV0uZHVtcH0sICN7b3BlcmFuZHNbMl0uZHVtcH0sICN7b3BlcmFu
ZHNbMF0uZHVtcH0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgICRhc20ucHV0YyAiRG91YmxlMklu
dHMoI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91YmxlIil9LCAje29wZXJhbmRzWzFdLmN4eFZh
bHVlfSwgI3tvcGVyYW5kc1syXS5jeHhWYWx1ZX0pOyIKKyAgICAgICAgIyBtbGFtIEJFR0lOCisg
ICAgICAgICN3aGVuICJmcDJkIgorICAgICAgICAjICAgICRhc20ucHV0YyAiSGFoYSBJIGNhbiBi
bG93IHN0dWZmIHVwISIKKyAgICAgICAgI3doZW4gImZkMnAiCisgICAgICAgICMgICAgJGFzbS5w
dXRjICJIYWhhIEkgY2FuIGJsb3cgc3R1ZmYgdXAgVE9PISIKKyAgICAgICAgIyBtbGFtIEVORAor
ICAgICAgICAjIHdoZW4gImJvIgorICAgICAgICAjICAgICAkYXNtLnB1dGMgImJ2cyAje29wZXJh
bmRzWzBdLmNMYWJlbH0iCisgICAgICAgICMgd2hlbiAiYnMiCisgICAgICAgICMgICAgICRhc20u
cHV0YyAiYm1pICN7b3BlcmFuZHNbMF0uY0xhYmVsfSIKKyAgICAgICAgIyB3aGVuICJieiIKKyAg
ICAgICAgIyAgICAgJGFzbS5wdXRjICJiZXEgI3tvcGVyYW5kc1swXS5jTGFiZWx9IgorICAgICAg
ICAjIHdoZW4gImJueiIKKyAgICAgICAgIyAgICAgJGFzbS5wdXRjICJibmUgI3tvcGVyYW5kc1sw
XS5jTGFiZWx9IgorICAgICAgICB3aGVuICJsZWFpIiwgImxlYXAiCisgICAgICAgICAgICBvcGVy
YW5kc1swXS5jeHhFbWl0TGVhKG9wZXJhbmRzWzFdKQorICAgICAgICAjd2hlbiAic211bGxpIgor
ICAgICAgICAjICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHNtdWxsIGlu
ICN7c2VsZi5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb3BlcmFuZHMu
bGVuZ3RoID09IDQKKyAgICAgICAgIyAgICAkYXNtLnB1dGMgInNtdWxsICN7b3BlcmFuZHNbMl0u
Y3h4T3BlcmFuZH0sICN7b3BlcmFuZHNbM10uY3h4T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uY3h4
T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uY3h4T3BlcmFuZH0iCisgICAgICAgIHdoZW4gImJhZGRp
byIsICJic3ViaW8iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCIj
e29wY29kZX0gI3tjeHhPcGVyYW5kcyhvcGVyYW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAg
ICBlbWl0Q1hYT3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wY29kZSwgb3BlcmFuZHMpCisgICAgICAg
IHdoZW4gImJhZGRpcyIsICJiYWRkaXoiLCAiYmFkZGlueiIsCisgICAgICAgICAgICAgImJhZGRw
cyIsICJiYWRkcHoiLCAiYmFkZHBueiIsCisgICAgICAgICAgICAgImJzdWJpcyIsICJic3ViaXoi
LCAiYnN1YmlueiIsCisgICAgICAgICAgICAgImJvcnJpcyIsICJib3JyaXoiLCAiYm9ycmlueiIK
KyAgICAgICAgICAgICMgbWxhbSAkYXNtLmNvbW1lbnQgYW5ub3RhdGUoIiN7b3Bjb2RlfSAje2N4
eE9wZXJhbmRzKG9wZXJhbmRzKX0iLCBfX0xJTkVfXykKKyAgICAgICAgICAgIGVtaXRDWFhPcEFu
ZEJyYW5jaChvcGNvZGUsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJibXVsaW8iCisgICAgICAg
ICAgICAjIG1sYW0gJGFzbS5jb21tZW50IGFubm90YXRlKCIje29wY29kZX0gI3tjeHhPcGVyYW5k
cyhvcGVyYW5kcyl9IiwgX19MSU5FX18pCisgICAgICAgICAgICBlbWl0Q1hYTXVsQW5kQnJhbmNo
SWZPdmVyZmxvdyhvcGNvZGUsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJjeHhDcmFzaCIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiY3Jhc2goKTsiCisgICAgICAgIHdoZW4gImN4eENhbGxKU0Z1
bmN0aW9uIgorICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGNhbGxKU0Z1bmN0aW9uOyIKKyAg
ICAgICAgd2hlbiAiY3h4Q2FsbFNsb3dQYXRoIgorICAgICAgICAgICAgIyBtbGFtICRhc20uY29t
bWVudCBhbm5vdGF0ZSgiI3tvcGNvZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFuZHMpfSIsIF9fTElO
RV9fKQorICAgICAgICAgICAgZW1pdENYWENhbGxTbG93UGF0aChvcGNvZGUsIG9wZXJhbmRzKQor
ICAgICAgICB3aGVuICJjeHhUcmFjZSIKKyAgICAgICAgICAgICRhc20ucHV0Y1RyYWNlTGFzdEds
b2JhbExhYmVsCisgICAgICAgIHdoZW4gIm1sYW1CcmVhayIKKyAgICAgICAgICAgICRhc20ucHV0
YyAibWxhbUJyZWFrKFwibWxhbUJyZWFrXCIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IgorICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsb3dlckRlZmF1bHQKKyAgICAgICAgZW5kCisgICAgZW5kCitl
bmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBA
IE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJib3JpbnoiLAogICAgICAiYnJlYWsiLAogICAg
ICAiY2FsbCIsCi0gICAgICJyZXQiLAorICAgICAicmV0X21sYW0iLAogICAgICAiY2JlcSIsCiAg
ICAgICJjYm5lcSIsCiAgICAgICJjYmEiLApAQCAtMjI3LDcgKzIyNywxNiBAQCBBUk12N19JTlNU
UlVDVElPTlMgPQogICAgICAib3JpcyIKICAgICBdCiAKLUlOU1RSVUNUSU9OUyA9IE1BQ1JPX0lO
U1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNUUlVDVElPTlMKK0NYWF9J
TlNUUlVDVElPTlMgPQorICAgIFsKKyAgICAgIm1sYW1CcmVhayIsICAgICAgICAgICMgbm8gb3Bl
cmFuZHMgLi4uIGZvciBkZWJ1Z2dpbmcgb25seQorICAgICAiY3h4Q3Jhc2giLCAgICAgICAgICAg
IyBubyBvcGVyYW5kcworICAgICAiY3h4Q2FsbEpTRnVuY3Rpb24iLCAgIyBubyBvcGVyYW5kcwor
ICAgICAiY3h4Q2FsbFNsb3dQYXRoIiwgICAgIyBvcGVyYW5kczogY2FsbFRhcmdldCwgY3VycmVu
dEZyYW1lLCBjdXJyZW50UEMKKyAgICAgImN4eFRyYWNlIiwgICAgICAgICAgICMgbm8gb3BlcmFu
ZHMKKyAgICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNU
UlVDVElPTlMgKyBBUk12N19JTlNUUlVDVElPTlMgKyBDWFhfSU5TVFJVQ1RJT05TCiAKIElOU1RS
VUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbign
KXwoJykgKyAnKSlcXFonKQogCkBAIC0yMzYsNiArMjQ1LDYgQEAgZGVmIGlzQnJhbmNoKGluc3Ry
dWN0aW9uKQogZW5kCiAKIGRlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKLSAgICBpbnN0
cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKKyAgICBpbnN0cnVjdGlv
biAhPSAicmV0X21sYW0iIGFuZCBpbnN0cnVjdGlvbiAhPSAiam1wIgogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDEyMzI3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2luZyBjb3B5KQpA
QCAtODM1LDEwICs4MzUsMTAgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiYmJsdGVxIgogICAgICAg
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQotICAgICAgICB3aGVuICJi
dGlvIgotICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQotICAgICAg
ICB3aGVuICJidHBvIgotICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6cHRy
KQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gImJ0aW8iCisgICAgICAgICMgbWxhbSBVTlVT
RUQgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICAgICAgIyBtbGFtIFVO
VVNFRCB3aGVuICJidHBvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqbyIsIDpwdHIpCiAgICAgICAgIHdoZW4gImJ0aXMiCiAgICAgICAgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCiAgICAgICAgIHdoZW4gImJ0cHMiCkBAIC04NTEs
OCArODUxLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpueiIsIDppbnQpCiAgICAgICAgIHdoZW4gImJ0cG56IgogICAgICAgICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOnB0cikKLSAgICAgICAgd2hlbiAiYnRibyIKLSAgICAg
ICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgICAgICMgbWxhbSBV
TlVTRUQgd2hlbiAiYnRibyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqbyIsIDpieXRlKQogICAgICAgICB3aGVuICJidGJzIgogICAgICAgICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiYnRieiIKQEAgLTkw
NSw3ICs5MDUsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgJGFzbS5wdXRzICJp
bnQgJDMiCiAgICAgICAgIHdoZW4gImNhbGwiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImNhbGwg
I3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6cHRyKX0iCi0gICAgICAgIHdoZW4gInJldCIK
KyAgICAgICAgd2hlbiAicmV0X21sYW0iCiAgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKICAg
ICAgICAgd2hlbiAiY2llcSIKICAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGUiLCA6aW50KQpAQCAtOTY3LDI0ICs5NjcsMjQgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmJ5dGUpCiAgICAgICAgIHdo
ZW4gImNwbHRlcSIKICAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwg
OnB0cikKLSAgICAgICAgd2hlbiAidGlvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0byIsIDppbnQpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGlvIgorICAgICAgICAj
IG1sYW0gVU5VU0VEICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQogICAgICAgICB3
aGVuICJ0aXMiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKICAg
ICAgICAgd2hlbiAidGl6IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpp
bnQpCiAgICAgICAgIHdoZW4gInRpbnoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRueiIsIDppbnQpCi0gICAgICAgIHdoZW4gInRwbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldG8iLCA6cHRyKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRwbyIKKyAg
ICAgICAgIyBtbGFtIFVOVVNFRCAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpwdHIpCiAg
ICAgICAgIHdoZW4gInRwcyIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6
cHRyKQogICAgICAgICB3aGVuICJ0cHoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXR6IiwgOnB0cikKICAgICAgICAgd2hlbiAidHBueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldG56IiwgOnB0cikKLSAgICAgICAgd2hlbiAidGJvIgotICAgICAgICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4g
InRibyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIs
IDpieXRlKQogICAgICAgICB3aGVuICJ0YnMiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXRzIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gInRieiIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAxMjMyNzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQCBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pCitKU1ZhbHVl
IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwogICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0
ZlRocmVhZERhdGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwpAQCAtNzIsNyArNzIsNyBA
QCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDCiAgICAgaWYgKCF0aGlz
VmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHRoaXNWYWx1
ZSA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKICAgICBKU09iamVjdCogdGhpc09iaiA9
IHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYyk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlKHByb2dyYW0sIGV4ZWMsIHNjb3BlQ2hhaW4sIHRoaXNP
YmopOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZV9t
bGFtUChwcm9ncmFtLCBleGVjLCBzY29wZUNoYWluLCB0aGlzT2JqKTsKIAogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiAx
MjMyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
U291cmNlQ29kZTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhl
Y1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCks
IEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
ZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCksIEpTVmFsdWUqIGV4
Y2VwdGlvbiA9IDApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDcsNyArMzA3LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21w
aWxlT3B0aQogICAgIEFTU0VSVCghIW1fcHJvZ3JhbUNvZGVCbG9jayk7CiAgICAgSlNPYmplY3Qq
IGVycm9yID0gMDsKICAgICBpZiAobV9wcm9ncmFtQ29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0g
SklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbChl
eGVjLCBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6bmV4dFRpZXJKSVQobV9wcm9ncmFtQ29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgZXJyb3IgPSBjb21waWxlSW50ZXJuYWxfbWxh
bVAoZXhlYywgc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6Om5leHRUaWVySklUKG1fcHJvZ3JhbUNv
ZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKCEhbV9wcm9ncmFtQ29kZUJsb2Nr
KTsKICAgICByZXR1cm4gZXJyb3I7CiB9CkBAIC0zMTksNyArMzE5LDcgQEAgYm9vbCBQcm9ncmFt
RXhlY3V0YWJsZTo6aml0Q29tcGlsZShFeGVjUwogfQogI2VuZGlmCiAKLUpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCitKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbF9tbGFtUChFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsMjIgKzIyMSwy
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNl
OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNy
ZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjYWxs
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29u
c3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmlu
c2ljKQorICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlX21sYW0oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2FsbFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbnN0cnVjdFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYykKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKCFnbG9iYWxEYXRhLmludGVycHJldGVyLT5jbGFzc2lj
RW5hYmxlZCgpKTsKICAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAg
ICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRh
LmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
cik7Ci0gICAgICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0
YSwgSklUQ29kZSgpLCBKSVRDb2RlKCksIGludHJpbnNpYyk7CisgICAgICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+ZmluaXNoQ3JlYXRpb25fbWxhbShnbG9iYWxEYXRhLCBKSVRDb2RlKCksIEpJVENv
ZGUoKSwgaW50cmluc2ljKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+
KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24s
IGNvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY2FsbFRodW5rKSwgSklUQ29kZTo6
SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgaW50cmluc2ljKTsKKyAgICAgICAgICAgICAg
ICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbl9tbGFtKGdsb2JhbERhdGEsIEpJVENvZGU6Okhv
c3RGdW5jdGlvbihjYWxsVGh1bmspLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3RydWN0VGh1
bmspLCBpbnRyaW5zaWMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGV4ZWN1
dGFibGU7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShDWFhfSU5URVJQ
UkVURVIpCiAgICAgICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5j
YW5Vc2VKSVQoKSk7CkBAIC0yNjEsNyArMjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBw
cm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5rLCBKSVRDb2RlIGNvbnN0
cnVjdFRodW5rLCBJbnRyaW5zaWMgaW50cmluc2ljKQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uX21sYW0oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlIGNhbGxUaHVuaywgSklU
Q29kZSBjb25zdHJ1Y3RUaHVuaywgSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKCFnbG9iYWxEYXRhLmludGVycHJldGVyLT5jbGFzc2ljRW5hYmxlZCgp
KTsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwpAQCAtNDQz
LDcgKzQ0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmds
b2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBl
cnJvciA9IDA7CiAgICAgICAgICAgICBpZiAoIW1fcHJvZ3JhbUNvZGVCbG9jaykKLSAgICAgICAg
ICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbChleGVjLCBzY29wZUNoYWluTm9kZSwgSklU
Q29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IGNvbXBpbGVJ
bnRlcm5hbF9tbGFtUChleGVjLCBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6Ym90dG9tVGllckpJ
VCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZXJyb3IgPT0gISFtX3Byb2dyYW1Db2RlQmxvY2sp
OwogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9CkBAIC00ODUsNyArNDg1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1
Y3R1cmVGbGFnczsKICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYpOwogCi0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRUeXBlKTsKKyAgICAgICAgSlNPYmpl
Y3QqIGNvbXBpbGVJbnRlcm5hbF9tbGFtUChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIEpJ
VENvZGU6OkpJVFR5cGUpOwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1f
cHJvZ3JhbUNvZGVCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRh
KHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBib29sIGNhbkNvbnN0cnVjdCA9
IGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZU5vbmU7CiAKLSAgICBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihib3Vu
ZEZ1bmN0aW9uQ2FsbCwgY2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNh
bGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbl9tbGFtMShib3VuZEZ1
bmN0aW9uQ2FsbCwgY2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxI
b3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9u
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCb3VuZEZ1bmN0aW9uPigqZXhlYy0+aGVh
cCgpKSkgSlNCb3VuZEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5i
b3VuZEZ1bmN0aW9uU3RydWN0dXJlKCksIHRhcmdldEZ1bmN0aW9uLCBib3VuZFRoaXMsIGJvdW5k
QXJncyk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZXhlY3V0YWJsZSwg
bGVuZ3RoLCBuYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTAgKzY3LDEwIEBA
IEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUKICNlbHNlCiAgICAgaWYg
KGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyAmJiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklU
KCkpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUNvbnN0cnVjdG9yID09IGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yKTsKLSAgICAgICAgZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEo
KS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7CisgICAgICAgIGV4
ZWN1dGFibGUgPSBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uX21sYW0yKG5hdGl2
ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGV4ZWN1
dGFibGUgPSBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKG5hdGl2ZUZ1bmN0aW9u
LCBuYXRpdmVDb25zdHJ1Y3Rvcik7CisgICAgICAgIGV4ZWN1dGFibGUgPSBleGVjLT5nbG9iYWxE
YXRhKCkuZ2V0SG9zdEZ1bmN0aW9uX21sYW0xKG5hdGl2ZUZ1bmN0aW9uLCBuYXRpdmVDb25zdHJ1
Y3Rvcik7CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4n
dCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBt
aWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2MCwyMSArMzYwLDIxIEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZv
ckkKICAgICB9CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1
bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rv
cikKK05hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uX21sYW0x
KE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsK
LSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRF
UlBSRVRFUikgfHwgRU5BQkxFKENYWF9JTlRFUlBSRVRFUikgLy8gbWxhbQogICAgIGlmICghY2Fu
VXNlSklUKCkpCiAgICAgICAgIHJldHVybiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnRoaXMs
IGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CiAjZW5kaWYKLSAgICByZXR1cm4gaml0U3R1YnMtPmhv
c3RGdW5jdGlvblN0dWIodGhpcywgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKKyAgICByZXR1cm4g
aml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWJfbWxhbTEodGhpcywgZnVuY3Rpb24sIGNvbnN0cnVj
dG9yKTsKIH0KLU5hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9u
KE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljKQorTmF0aXZlRXhl
Y3V0YWJsZSogSlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb25fbWxhbTIoTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgQVNTRVJUKGNhblVzZUpJ
VCgpKTsKLSAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWIodGhpcywgZnVuY3Rp
b24sIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2lj
KGludHJpbnNpYykgOiAwLCBpbnRyaW5zaWMpOworICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1
bmN0aW9uU3R1Yl9tbGFtMih0aGlzLCBmdW5jdGlvbiwgaW50cmluc2ljICE9IE5vSW50cmluc2lj
ID8gdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoaW50cmluc2ljKSA6IDAsIGludHJpbnNpYyk7
CiB9CiAjZWxzZQotTmF0aXZlRXhlY3V0YWJsZSogSlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rp
b24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQor
TmF0aXZlRXhlY3V0YWJsZSogSlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb25fbWxhbTEoTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogewogICAg
IHJldHVybiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1
Y3Rvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw5ICszMDIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5jdGlT
dHViKHRoaXMsIGdlbmVyYXRvcik7CiAgICAgICAgIH0KLSAgICAgICAgTmF0aXZlRXhlY3V0YWJs
ZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMpOworICAgICAgICBO
YXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb25fbWxhbTIoTmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYyk7CiAjZW5kaWYKLSAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0
aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvcik7CisgICAgICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbl9tbGFtMShOYXRpdmVGdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpOwogCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRp
bWVvdXRDaGVja2VyOwogICAgICAgICBUZXJtaW5hdG9yIHRlcm1pbmF0b3I7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIzMjc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICA7
IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgogI2VuZGlmCiAg
ICAgCisjaWYgRU5BQkxFKENYWF9JTlRFUlBSRVRFUikgLy8gbWxhbQorICAgIHVzZUpJVCgpID0g
ZmFsc2U7CisgICAgdXNlREZHSklUKCkgPSBmYWxzZTsKKyNlbmRpZiAvLyBtbGFtCisKICAgICAv
LyBEbyByYW5nZSBjaGVja3Mgd2hlcmUgbmVlZGVkIGFuZCBtYWtlIGNvcnJlY3Rpb25zIHRvIHRo
ZSBvcHRpb25zOgogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCgpID49IHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSk7CiAgICAgQVNTRVJUKHRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNv
b24oKSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIC8qIEluY2x1
ZGUgY29tcGlsZXIgc3BlY2lmaWMgbWFjcm9zICovCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+
CiAKKyNkZWZpbmUgRU5BQkxFX0pJVCAwCisKIC8qID09PT0gUExBVEZPUk0gaGFuZGxlcyBPUywg
b3BlcmF0aW5nIGVudmlyb25tZW50LCBncmFwaGljcyBBUEksIGFuZAogICAgQ1BVLiBUaGlzIG1h
Y3JvIHdpbGwgYmUgcGhhc2VkIG91dCBpbiBmYXZvciBvZiBwbGF0Zm9ybSBhZGFwdGF0aW9uCiAg
ICBtYWNyb3MsIHBvbGljeSBkZWNpc2lvbiBtYWNyb3MsIGFuZCB0b3AtbGV2ZWwgcG9ydCBkZWZp
bml0aW9ucy4gPT09PSAqLwpAQCAtODkzLDYgKzg5NSwxNCBAQAogICAgICYmIChDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikpCiAjZGVmaW5lIEVOQUJMRV9MTElOVCAx
CiAjZW5kaWYKKy8vIG1sYW0gQkVHSU4KKyNpZiAhRU5BQkxFKEpJVCkKKyAgICAjZGVmaW5lIEVO
QUJMRV9DTEFTU0lDX0lOVEVSUFJFVEVSIDAKKyAgICAjZGVmaW5lIEVOQUJMRV9KSVQgMAorICAg
ICNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyAgICAjZGVmaW5lIEVOQUJMRV9ZQVJSX0pJVCAwCisj
ZW5kaWYKKy8vIG1sYW0gRU5EICovCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYg
RU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9u
bHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwpAQCAtOTMyLDEwICs5NDIsMTEgQEAK
ICNlbmRpZgogCiAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50ZXJwcmV0
ZXIgaGFzIGJlZW4gZW5hYmxlZC4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVfQ0xBU1NJQ19JTlRF
UlBSRVRFUikgJiYgIUVOQUJMRShKSVQpCisjaWYgIWRlZmluZWQoRU5BQkxFX0NMQVNTSUNfSU5U
RVJQUkVURVIpICYmICFFTkFCTEUoSklUKSAmJiAhRU5BQkxFKExMSU5UKQogI2RlZmluZSBFTkFC
TEVfQ0xBU1NJQ19JTlRFUlBSRVRFUiAxCiAjZW5kaWYKLSNpZiAhKEVOQUJMRShKSVQpIHx8IEVO
QUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSkKKy8vIG1sYW0gb3JpZyAjaWYgIShFTkFCTEUoSklU
KSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikpCisjaWYgIShFTkFCTEUoSklUKSB8fCBF
TkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKICNlcnJvciBZb3Ug
aGF2ZSB0byBoYXZlIGF0IGxlYXN0IG9uZSBleGVjdXRpb24gbW9kZWwgZW5hYmxlZCB0byBidWls
ZCBKU0MKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5U
aHJlYWRFeGVjU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAkocmV2aXNpb24gMTIzMjc0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhl
Y1N0YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywgY2hhaW4sIHNvdXJj
ZSwgdGhpc1ZhbHVlLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZV9t
bGFtQ29tcGxldGlvbihleGVjLCBjaGFpbiwgc291cmNlLCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7
CiAgICAgfTsKIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwCShyZXZpc2lvbiAxMjMyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNv
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgYm9vbCBfTlBOX0V2
YWx1YXRlKE5QUCBpbnN0YW5jZSwgTlBPYmplYwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKICAgICAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9IGNvbnZlcnROUFN0cmluZ1RvVVRG
MTYocyk7CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNDOjpldmFs
dWF0ZShyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCByb290T2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKHNjcmlwdFN0
cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKKyAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpT
Qzo6ZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24ocm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4o
KSwgbWFrZVNvdXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7CiAKICAgICAgICAg
Y29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmV0dXJuVmFsdWUsIHZhcmlhbnQpOwogICAg
ICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9qbmlfanNvYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9qbmlfanNvYmplY3QubW0JKHJldmlzaW9uIDEyMzI3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0
LDcgQEAgam9iamVjdCBKYXZhSlNPYmplY3Q6OmV2YWwoanN0cmluZyBzY3JpcAogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpOwog
ICAgIAogICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RhcnQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6ZXZhbHVhdGUocm9v
dE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShKYXZhU3RyaW5nKHNjcmlw
dCkuaW1wbCgpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlX21sYW1Db21w
bGV0aW9uKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoSmF2YVN0
cmluZyhzY3JpcHQpLmltcGwoKSkpOwogICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgcmV0dXJuIGNvbnZlcnRW
YWx1ZVRvSk9iamVjdChyZXN1bHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153659</attachid>
            <date>2012-07-21 01:18:39 -0700</date>
            <delta_ts>2012-08-03 12:41:08 -0700</delta_ts>
            <desc>work in progress 2: added support for switch statement style dispatcher in C loop + some clean up.</desc>
            <filename>bug-91052-wop2.patch</filename>
            <type>text/plain</type>
            <size>236787</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDI5IEBACiAjZWxzZQogI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNf
T05fR0NDIDEKICNlbmRpZgorCisvLyBtbGFtIEJFR0lOCisvLyBtbGFtIEJFR0lOIHRlc3QKKy8v
I3VuZGVmIEVOQUJMRV9KSVQKKy8vI2RlZmluZSBFTkFCTEVfSklUIDAKKy8vIG1sYW0gRU5ECisK
Ky8vI3VuZGVmIExMSU5UCisvLyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKworI2lmICFFTkFCTEUo
SklUKQorI2RlZmluZSBFTkFCTEVfTExJTlRfQ19MT09QIDEKKyNkZWZpbmUgRU5BQkxFX0NPTVBV
VEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUiAwIC8vIG1sYW0gRklYTUUgdGhpcyBzaG91bGQg
bm90IGJlIG1hbmRhdG9yeQorCisvLyBNYWtlIHN1cmUgdGhlIERGRyBpcyB0dXJuZWQgb2ZmIGlm
IGJhc2ljIEpJVCBzdXBwb3J0IGlzIG9mZi4KKyN1bmRlZiBFTkFCTEVfREZHX0pJVAorI2RlZmlu
ZSBFTkFCTEVfREZHX0pJVCAwCisKKyNlbHNlIC8vICFFTkFCTEUoSklUKQorI2RlZmluZSBFTkFC
TEVfTExJTlRfQ19MT09QIDAKKyNlbmRpZiAvLyAhRU5BQkxFKEpJVCkKKworLy8jdW5kZWYgRU5B
QkxFX0xMSU5UX0NfTE9PUAorLy8jZGVmaW5lIEVOQUJMRV9MTElOVF9DX0xPT1AgMCAvLyBGb3Jj
ZSBpdCBvbi4KKy8vIG1sYW0gRU5ECisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQ5LDcgKzM0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25SdW4KICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwog
ICAgIHN0b3BXYXRjaC5zdGFydCgpOwotICAgIGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlw
dC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXhjZXB0aW9uKTsKKyAgICBldmFsdWF0
ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSks
IEpTVmFsdWUoKSwgJmV4Y2VwdGlvbik7CiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlm
ICghIWV4Y2VwdGlvbikgewpAQCAtMzcwLDcgKzM3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Mb2EKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIAogICAgIEpTVmFsdWUgZXZhbHVhdGlv
bkV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNl
KHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpz
Y1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25F
eGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTU0Miw3ICs1NDIsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0
cyhHbG9iYWxPYmplY3QqCiAgICAgICAgIGdsb2JhbERhdGEuc3RhcnRTYW1wbGluZygpOwogCiAg
ICAgICAgIEpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1
cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmpl
Y3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5hbWUpLCBKU1Zh
bHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1
ZSA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBn
bG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5h
bWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgc3VjY2VzcyA9
IHN1Y2Nlc3MgJiYgIWV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgICAgIGlmIChkdW1wICYmICFl
dmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1
cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKQEAgLTU4OCw3ICs1ODgsNyBA
QCBzdGF0aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqCiAgICAgICAgIGlmIChs
aW5lWzBdKQogICAgICAgICAgICAgYWRkX2hpc3RvcnkobGluZSk7CiAgICAgICAgIEpTVmFsdWUg
ZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3Bl
Q2hhaW4oKSwganNjU291cmNlKGxpbmUsIGludGVycHJldGVyTmFtZSksIEpTVmFsdWUoKSwgJmV2
YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVh
dGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2UobGluZSwgaW50ZXJwcmV0ZXJOYW1lKSwg
SlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgICAgIGZyZWUobGluZSk7CiAj
ZWxzZQogICAgICAgICBwcmludGYoIiVzIiwgaW50ZXJhY3RpdmVQcm9tcHQpOwpAQCAtNjA1LDcg
KzYwNSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCoKICAgICAg
ICAgbGluZS5hcHBlbmQoJ1wwJyk7CiAKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0
aW9uOwotICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3Vy
Y2UobGluZS5kYXRhKCksIGludGVycHJldGVyTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25F
eGNlcHRpb24pOworICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGVfbWxhbUNv
bXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGVDaGFpbigpLCBqc2NTb3VyY2UobGluZS5kYXRhKCksIGludGVycHJldGVyTmFtZSksIEpT
VmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogI2VuZGlmCiAgICAgICAgIGlmIChldmFs
dWF0aW9uRXhjZXB0aW9uKQogICAgICAgICAgICAgcHJpbnRmKCJFeGNlcHRpb246ICVzXG4iLCBl
dmFsdWF0aW9uRXhjZXB0aW9uLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0NvbnRleHRSZWYKICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVS
TC0+dXN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50
KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKIAogICAgIEpT
VmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZh
bHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2Nv
cGVDaGFpbigpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwor
ICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIHNv
dXJjZSwganNUaGlzT2JqZWN0LCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZh
bHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMzI4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDMyLDYgKzIwMzIsMTAgQEAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZVVubGlua2luZyA9IHRydQogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtp
bmcgPSBmYWxzZTsKICNlbmRpZgorLy8gbWxhbSBCRUdJTgorI2Vsc2UgCitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CisvLyBtbGFtIEVORAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgCiB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
KQpAQCAtMjU3OCw3ICsyNTgyLDggQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2Fs
bHMoKQogCiB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewotI2lmIEVOQUJMRShMTElOVCkK
Ky8vIG1sYW0gI2lmIEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoTExJTlQpICYmICFFTkFCTEUo
TExJTlRfQ19MT09QKQogICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCiAgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUo
KSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CiAgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAKIC8v
IChhcyBvcHBvc2VkIHRvIGFwcCBkZWJ1Z2dpbmcpLCB0aGlzIGZlYXR1cmUgaXMgdG8gYmUgZGlz
YWJsZWQgYnkgZGVmYXVsdCwKIC8vIGFuZCBjYW4gYmUgZW5hYmxlZCBhcyBuZWVkZWQgZm9yIFZN
IGRldmVsb3BtZW50IHVzZSBvbmx5LgogCi0jZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01NRU5U
UyAwCisjZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyAxIC8vIG1sYW0gd2FzIDAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIyOCw5ICsyMjgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlu
a0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21l
dGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwg
Ynl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CisjZW5kaWYgLy8gbWxhbQogCiAgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCisj
aWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZv
ckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fcmFyZURhdGEpCkBAIC0yNTAsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAg
fQorI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJTlQpCiAgICAg
ICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCiAg
ICAgICAgIHsKQEAgLTI1OCw3ICsyNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMo
KTsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNlbmRpZiAvLyBFTkFCTEUo
SklUKQogCiAjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9p
ZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXAp
CkBAIC0zMzQsMTAgKzMzNywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAg
IHVuc2lnbmVkIGFwcGVuZFdhdGNocG9pbnQoY29uc3QgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2lu
dCYgd2F0Y2hwb2ludCkKICAgICAgICAgeworI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAgICBj
cmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT53
YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh3YXRjaHBvaW50KTsKKyAgICAgICAg
ICAgIHJldHVybiAwOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtODEyLDYgKzgyMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEgJiYgISFtX3JhcmVEYXRhLT5tX2NvZGVP
cmlnaW5zLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyNpZiBFTkFCTEUoSklUKSAvLyBt
bGFtCiAgICAgICAgIGJvb2wgY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghaGFzQ29kZU9yaWdpbnMoKSkKQEAgLTgyMyw3ICs4MzIsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBlbnRyeS0+Y29kZU9yaWdpbjsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorI2VuZGlmCisKICAgICAg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFS
QU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKLSNpZiBFTkFCTEUo
TExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAmJiAh
RU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9m
aWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKICAgICAK
ICAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNr
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24g
MTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjEsNyArMjIxLDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBG
T1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9P
UENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIp
IHx8IEVOQUJMRShMTElOVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
Q0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RP
X09QQ09ERVMgMQorI2Vsc2UKKyAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHRoZSBvbmx5IG90
aGVyIHJlYXNvbiB3aHkgd2Ugd2lsbCB3YW50IGNvbXB1dGVkIGdvdG8KKyAgIC8vIG9wY29kZXMg
aXMgaWYgd2UgaGF2ZSB0aGUgTExJTlQgYW5kIHdlJ3JlIG5vdCB1c2luZyB0aGUgQyBMb29wLgor
ICAgLy8gSWYgd2UgYXJlIHVzaW5nIHRoZSBDIExvb3AgYW5kIHdlIHdhbnRlZCBjb21wdXRlZCBn
b3Rvcywgd2Ugd291bGQgaGF2ZQorICAgLy8gZW5hYmxlZCBDT01QVVRFRF9HT1RPX0NMQVNTSUNf
SU5URVJQUkVURVIsIGFuZCB0aGF0IHdvdWxkIGJlIGhhbmRsZWQKKyAgIC8vIGluIHRoZSBjYXNl
IGFib3ZlLgorICAgI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMQorICAgI2Vsc2UKKyAgICNk
ZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9fT1BDT0RFUyAwCisgICAjZW5kaWYKKyNlbmRpZgor
CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiBDT01QSUxFUihSVkNUKSB8
fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDggQEAgUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxl
ZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BB
UkFNKGlkZW50KTsKLSNpZiBFTkFCTEUoTExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlQp
CisjaWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
ICsgYnl0ZWNvZGVJbmRleDsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjMy
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDEwIEBAIHN0YXRpYyBSZXNvbHZlR2xv
YmFsU3RhdHVzIGNvbXB1dGVGb3JMTEkKIHsKICNpZiBFTkFCTEUoTExJTlQpCiAgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsg
Ynl0ZWNvZGVJbmRleDsKLSAgICAKKworI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFt
CiAgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3Jlc29sdmVf
Z2xvYmFsKTsKKyNlbmRpZiAvLyBtbGFtCiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBpbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICBpZiAoIXN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQ
Qy5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9BYnN0cmFjdFBDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIEFic3RyYWN0UEM6OkFic3RyYWN0UEMoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERhdGEpOwor
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsgLy8gbWxhbQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgaWYgKGdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAzLDcgKzEwMyw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgQ2FsbEZyYW1l
JiBvcGVyYXRvcj0oY29uc3QgUmVnaXN0ZXImIHIpIHsgKnN0YXRpY19jYXN0PFJlZ2lzdGVyKj4o
dGhpcykgPSByOyByZXR1cm4gKnRoaXM7IH0KIAogICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5jYWxs
RnJhbWUoKTsgfQotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQorI2lm
IEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5QQygpIGNvbnN0IHsgcmV0dXJuIFJldHVybkFkZHJlc3NQdHIodGhpc1tSZWdpc3RlckZp
bGU6OlJldHVyblBDXS52UEMoKSk7IH0KICAgICAgICAgYm9vbCBoYXNSZXR1cm5QQygpIGNvbnN0
IHsgcmV0dXJuICEhdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogICAgICAg
ICB2b2lkIGNsZWFyUmV0dXJuUEMoKSB7IHJlZ2lzdGVycygpW1JlZ2lzdGVyRmlsZTo6UmV0dXJu
UENdID0gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigwKTsgfQpAQCAtMTQ4LDcgKzE0OSw3IEBA
IG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5k
aWYKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQogICAgICAgICBJbnN0
cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJl
dHVyblBDXS52UEMoKTsgfQogI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU0LDcgKzU1NCw4IEBAIEludGVycHJl
dGVyOjpJbnRlcnByZXRlcigpCiAKIEludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lm
IEVOQUJMRShMTElOVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAgICAgaWYgKG1fY2xhc3NpY0VuYWJsZWQpCiAgICAg
ICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CiAjZW5kaWYKQEAgLTU3MCwyMCArNTcxLDQ1IEBA
IHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEKICNlcnJvciAiQnVpbGRp
bmcgYm90aCBMTEludCBhbmQgdGhlIENsYXNzaWMgSW50ZXJwcmV0ZXIgaXMgbm90IHN1cHBvcnRl
ZCBiZWNhdXNlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZS4iCiAjZW5kaWYKIAorLy8gbWxhbSBvcmln
IAorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisvLyAjaWYgRU5BQkxFKExMSU5U
KQogI2lmIEVOQUJMRShMTElOVCkKKworICAgICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
IGxsaW50Q0xvb3BFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDAsIGxsaW50RGF0YSk7
CisgICAgI2VuZGlmCiAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKICAgICAgICAgbV9v
cGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
aSkpOwogICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKKworLyovIG1sYW0gQkVHSU4KKyNl
bGlmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgbGxpbnRDTG9vcEV4ZWN1dGUoSW5pdGlhbGl6
ZUFuZFJldHVybiwgMCwgMCwgbGxpbnREYXRhKTsKKyAgICBtX29wY29kZVRhYmxlID0gbGxpbnRE
YXRhLT5vcGNvZGVNYXAoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsg
KytpKQorICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRp
Y19jYXN0PE9wY29kZUlEPihpKSk7CisKKyAgICBtX2NsYXNzaWNFbmFibGVkID0gZmFsc2U7IC8v
IG1sYW0KKy8vIG1sYW0gRU5EICovCisKICNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNT
SUNfSU5URVJQUkVURVIpCiAgICAgaWYgKGNhblVzZUpJVCkgewogICAgICAgICAvLyBJZiB0aGUg
SklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4K
LSAgICAgICAgCisKKyAgICAgICAgLy8gbWxhbSA6OiBUaGUgZm9sbG93aW5nIGNvZGUgaXMgb2Jz
b2xldGUgYmVjYXVzZSB3ZSBzaG91bGQgbmV2ZXIgZW5jb3VudGVyIHRoaXMKKyAgICAgICAgLy8g
Y2FzZS4gIEluIHByaXZhdGVFeGVjdXRlKCksIHRoZXJlIGlzIGFuIGFzc2VydGlvbiB0aGF0IGVu
c3VyZXMgdGhhdCB3ZSBuZXZlcgorICAgICAgICAvLyBtaXggdGhlIEpJVCB3aXRoIHRoZSBjbGFz
c2ljIGNvbXBpbGVyLgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsg
KytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0g
PSBvcGNvZGU7CiAgICAgICAgIH0KICAgICAgICAgbV9jbGFzc2ljRW5hYmxlZCA9IGZhbHNlOwor
ICAgICAgICAvLyBtbGFtIDo6IE5PVEU6IEJhc2VkIG9uIEpTR2xvYmFsRGF0YSdzIGVuYWJsZUFz
c2VtYmxlcigpLCBpdCBsb29rcyBsaWtlIHRoZSBjbGFzc2ljCisgICAgICAgIC8vIGludGVycHJl
dGVyIGlzIHN0aWxsIGluIHVzZSB3aGVuIC0tdXNlSklUPWZhbHNlLiAgV2lsbCBoYXZlIHRvIGZp
eCB0aGlzIHNvIHRoYXQKKyAgICAgICAgLy8gTExJTlQgY2FuIHN0YW5kIGFsb25lLgorCiAgICAg
fSBlbHNlIHsKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwg
MCk7CiAgICAgICAgIApAQCAtNTkyLDEzICs2MTgsMTggQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShMTEludDo6RGF0YQogICAgICAgICAKICAgICAgICAgbV9jbGFzc2ljRW5hYmxlZCA9
IHRydWU7CiAgICAgfQorI2VuZGlmIC8vIG1sYW0gbmV3CisKICNlbHNlCiAjaWYgRU5BQkxFKENM
QVNTSUNfSU5URVJQUkVURVIpCiAgICAgbV9jbGFzc2ljRW5hYmxlZCA9IHRydWU7CiAjZWxzZQog
ICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShD
T01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisvLyBtbGFtIG9yaWcgI2VuZGlmIC8v
ICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSAmJiAhRU5BQkxFKExM
SU5UKQorCisjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKICNlbmRpZgpAQCAtNzA5
LDcgKzc0MCw4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAog
Ym9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmICFF
TkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2NsYXNzaWNFbmFibGVkKQogICAgICAgICByZXR1cm4g
b3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKQEAgLTExMTAsNyArMTE0Miw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKLUpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dy
YW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNP
YmplY3QqIHRoaXNPYmopCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKFByb2dy
YW1FeGVjdXRhYmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4sIEpTT2JqZWN0KiB0aGlzT2JqKQogewogICAgIEFTU0VSVChpc1ZhbGlk
VGhpc09iamVjdCh0aGlzT2JqLCBjYWxsRnJhbWUpKTsKICAgICBBU1NFUlQoIXNjb3BlQ2hhaW4t
Pmdsb2JhbERhdGEtPmV4Y2VwdGlvbik7CkBAIC0xMTIxLDYgKzExNTMsOSBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgaWYgKG1fcmVlbnRyeURlcHRoID49
IE1heFNtYWxsVGhyZWFkUmVlbnRyeURlcHRoICYmIG1fcmVlbnRyeURlcHRoID49IGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKKyAgICAvLyBGaXJz
dCBjaGVjayBpZiB0aGUgInByb2dyYW0iIGlzIGFjdHVhbGx5IGp1c3QgYSBKU09OIG9iamVjdC4g
SWYgc28sCisgICAgLy8gd2UnbGwgaGFuZGxlIHRoZSBKU09OIG9iamVjdCBoZXJlLiBFbHNlLCB3
ZSdsbCBoYW5kbGUgcmVhbCBKUyBjb2RlCisgICAgLy8gYmVsb3cgYXQgZmFpbGVkSlNPTlAuCiAg
ICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKCpzY29wZUNoYWlu
LT5nbG9iYWxEYXRhLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIFZlY3Rv
cjxKU09OUERhdGE+IEpTT05QRGF0YTsKICAgICBib29sIHBhcnNlUmVzdWx0OwpAQCAtMTIyMSwx
NiArMTI1NiwyMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogZmFpbGVkSlNPTlA6CisgICAgLy8gSWYgd2Ug
Z2V0IGhlcmUsIHRoZW4gd2UgaGF2ZSBhbHJlYWR5IHByb3ZlbiB0aGF0IHRoZSBzY3JpcHQgaXMg
bm90IGEgSlNPTgorICAgIC8vIG9iamVjdC4KKworICAgIC8vIENvbXBpbGUgc291cmNlIHRvIGJ5
dGVjb2RlIGlmIG5lY2Vzc2FyeToKICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5jb21w
aWxlKGNhbGxGcmFtZSwgc2NvcGVDaGFpbik7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybih0aHJvd0Vycm9yKGNhbGxGcmFtZSwgZXJyb3IpKTsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9ICZwcm9ncmFtLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogCisgICAg
Ly8gUmVzZXJ2ZSBzdGFjayBzcGFjZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIFJlZ2lzdGVy
KiBvbGRFbmQgPSBtX3JlZ2lzdGVyRmlsZS5lbmQoKTsKICAgICBSZWdpc3RlciogbmV3RW5kID0g
b2xkRW5kICsgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgIGlm
ICghbV9yZWdpc3RlckZpbGUuZ3JvdyhuZXdFbmQpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAorICAgIC8vIFB1c2gg
dGhlIGNhbGwgZnJhbWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAgICBDYWxsRnJhbWUqIG5ld0Nh
bGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG9sZEVuZCArIGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGVDaGFpbiwgQ2Fs
bEZyYW1lOjpub0NhbGxlcigpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgMCk7CkBAIC0x
MjQwLDE3ICsxMjgxLDIyIEBAIGZhaWxlZEpTT05QOgogICAgIGlmIChQcm9maWxlciogcHJvZmls
ZXIgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAg
cHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3JhbS0+c291cmNlVVJMKCksIHBy
b2dyYW0tPmxpbmVObygpKTsKIAorICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1
ZSByZXN1bHQ7CiAgICAgewogICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJl
Y29yZChtX3NhbXBsZXIuZ2V0KCkpOwogCiAgICAgICAgIG1fcmVlbnRyeURlcHRoKys7ICAKKyNp
ZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAoIWNs
YXNzaWNFbmFibGVkKCkpCiAgICAgICAgICAgICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRK
SVRDb2RlKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgc2NvcGVDaGFp
bi0+Z2xvYmFsRGF0YSk7CiAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiAgICAgICAgICAgICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lz
dGVyRmlsZSwgbmV3Q2FsbEZyYW1lKTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAgICAgIHJlc3VsdCA9IGxsaW50Q0xvb3BFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxl
LCBuZXdDYWxsRnJhbWUpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKICAgICAg
ICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICB9CkBAIC0xMzE3LDEyICsxMzYzLDE3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgICAgIFNhbXBsaW5n
VG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAKICAgICAgICAg
ICAgIG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICAgICAgaWYgKCFjbGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBj
YWxsRGF0YVNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpOwogICAgICAgICAgICAgZWxzZQotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBwcml2YXRl
RXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lKTsKKyNlbHNlIC8v
IEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICByZXN1bHQgPSBsbGludENMb29wRXhl
Y3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lKTsKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlRfQ19MT09QKQorCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAg
ICAgICB9CiAKQEAgLTE0MTEsMTIgKzE0NjIsMTYgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpl
eGVjdXRlQ29uc3RydWN0KAogICAgICAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNh
bGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKIAogICAgICAgICAgICAgbV9yZWVudHJ5RGVwdGgr
KzsgIAorI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
ICAgICBpZiAoIWNsYXNzaWNFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29u
c3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25z
dHJ1Y3QoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjb25zdHJ1Y3RE
YXRhU2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBlbHNlCi0jZW5kaWYKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVj
dXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2Vsc2UgLy8gRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxsaW50Q0xvb3BFeGVjdXRl
KE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2VuZGlmIC8vIEVOQUJM
RShMTElOVF9DX0xPT1ApCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgICAgICB9
CiAKQEAgLTE1MTQsMTggKzE1NjksMjcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShD
YWxsRnJhbWVDbAogICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZCht
X3NhbXBsZXIuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAot
I2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQorI2lmICFFTkFCTEUoTExJ
TlRfQ19MT09QKQorICAgICAgICAvLyogbWxhbSBWRVJJRllpbmcgdGhhdCBMTElOVCBkb2Vzbid0
IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQog
ICAgICAgICBpZiAoY2xvc3VyZS5uZXdDYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQo
KSkKICNlbmRpZgotICAgICAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIGNs
b3N1cmUubmV3Q2FsbEZyYW1lLCBjbG9zdXJlLmdsb2JhbERhdGEpOworICAgICAgICAvLyovCisg
ICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFt
ZSwgY2xvc3VyZS5nbG9iYWxEYXRhKTsKKyAgICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQg
TExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikKICAgICAgICAgZWxzZQogI2VuZGlmCi0jZW5kaWYKKyAgICAgICAgLy8qLwor
I2Vsc2UgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgcmVzdWx0ID0gbGxpbnRDTG9v
cEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lKTsK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyogbWxhbSBWRVJJRllp
bmcgdGhhdCBMTElOVCBkb2Vzbid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgogI2lmIEVOQUJMRShD
TEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUo
Tm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lKTsKICNlbmRpZgor
ICAgICAgICAvLyovCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgfQogCkBAIC0xNjE5
LDE4ICsxNjgzLDI3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEK
IAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOwogICAgICAgICAKLSNpZiBFTkFCTEUoSklUKQor
Ly8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAg
ICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQgTExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1
dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgaWYgKGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogI2VuZGlmCi0gICAgICAgICAgICByZXN1
bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5l
d0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7CisgICAgICAgIC8vKi8KKyAgICAg
ICAgcmVzdWx0ID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJG
aWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpOworICAgICAgICAvLyog
bWxhbSBWRVJJRllpbmcgdGhhdCBMTElOVCBkb2Vzbid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgog
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICBlbHNlCiAjZW5kaWYKLSNl
bmRpZgorICAgICAgICAvLyovCisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAg
ICByZXN1bHQgPSBsbGludENMb29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3
Q2FsbEZyYW1lKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyog
bWxhbSBWRVJJRllpbmcgdGhhdCBMTElOVCBkb2Vzbid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgog
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJp
dmF0ZUV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CiAjZW5k
aWYKKyAgICAgICAgLy8qLwogICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgIH0KIApAQCAt
MTkwNiwxMiArMTk3OSwxNSBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dW5jYWNo
ZUdlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKIAorI2lmICFFTkFC
TEUoTExJTlRfQ19MT09QKQorCiBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShF
eGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBvdXIgYWRk
cmVzcyB0YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQogICAgIC8vIGhlcmUgYmVjYXVz
ZSBvdXIgbGFiZWxzIGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9uLgogICAg
IGlmIChVTkxJS0VMWShmbGFnID09IEluaXRpYWxpemVBbmRSZXR1cm4pKSB7Ci0gICAgICAgICNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorICAgICAgICAvLyBt
bGFtICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorICAgICAg
ICAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICAgICAgICAgICNkZWZpbmUg
TElTVF9PUENPREVfTEFCRUwoaWQsIGxlbmd0aCkgJiZpZCwKICAgICAgICAgICAgICAgICBzdGF0
aWMgT3Bjb2RlIGxhYmVsc1tdID0geyBGT1JfRUFDSF9PUENPREVfSUQoTElTVF9PUENPREVfTEFC
RUwpIH07CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlf
TEVOR1RIKGxhYmVscyk7ICsraSkKQEAgLTE5OTEsOSArMjA2Nyw5IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAgICAgICAgIFVQREFURV9CWVRFQ09ERV9P
RkZTRVQoKTsKICNlbHNlCiAgICAgI2RlZmluZSBERUZJTkVfT1BDT0RFKG9wY29kZSkgb3Bjb2Rl
OiBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoT1BD
T0RFX1NUQVRTKQogICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKLSNlbHNlCisjZWxzZSAvLyAhRU5B
QkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAjZGVmaW5lIE5FWFRf
SU5TVFJVQ1RJT04oKSBTQU1QTEUoY29kZUJsb2NrLCB2UEMpOyBnb3RvIGludGVycHJldGVyTG9v
cFN0YXJ0CiAjaWYgRU5BQkxFKE9QQ09ERV9TVEFUUykKICAgICAjZGVmaW5lIERFRklORV9PUENP
REUob3Bjb2RlKSBcCkBAIC0yMDA2LDcgKzIwODIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjCiAgICAgd2hpbGUgKDEpIHsgLy8gaXRlcmF0b3IgbG9vcCBiZWdp
bnMKICAgICBpbnRlcnByZXRlckxvb3BTdGFydDo7CiAgICAgc3dpdGNoICh2UEMtPnUub3Bjb2Rl
KQotI2VuZGlmCisjZW5kaWYgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQ
UkVURVIpCiAgICAgewogICAgIERFRklORV9PUENPREUob3BfbmV3X29iamVjdCkgewogICAgICAg
ICAvKiBuZXdfb2JqZWN0IGRzdChyKQpAQCAtNTMxNyw2ICs1MzkzLDkgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICNlbmRpZiAvLyBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKIH0KIAorI2Vu
ZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnJl
dHJpZXZlQXJndW1lbnRzRnJvbVZNQ29kZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlv
biogZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgQ2FsbEZyYW1lKiBmdW5jdGlvbkNhbGxGcmFtZSA9
IGZpbmRGdW5jdGlvbkNhbGxGcmFtZUZyb21WTUNvZGUoY2FsbEZyYW1lLCBmdW5jdGlvbik7CkBA
IC01Mzg1LDcgKzU0NjQsNyBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIo
Q2FsCiAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2spCiAgICAgICAgIHJldHVybjsKICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCA9IDA7Ci0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIp
CisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9DX0xPT1Ap
IC8vIG1sYW0KICAgICBpZiAoIWNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkp
CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9u
IDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFT
U0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRh
YmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0yMDQsNiArMjA1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBv
cGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKKyNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogI2lmIEVOQUJMRShMTElOVCkKICAgICAg
ICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAgIHJldHVybiBtX29w
Y29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CkBAIC0yMTMsNiArMjE1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKIAogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2Rl
SURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbmRpZiAvLyBtbGFtIG5ldwogI2Vsc2UKICAgICAgICAg
ICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKQEAgLTIyNSw3ICsyMjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKLSAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgU2NvcGVDaGFpbk5vZGUq
LCBKU09iamVjdCogdGhpc09iaik7CisgICAgICAgIEpTVmFsdWUgZXhlY3V0ZV9tbGFtUChQcm9n
cmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFNjb3BlQ2hhaW5Ob2RlKiwgSlNPYmplY3QqIHRo
aXNPYmopOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0
KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUs
IGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2Fs
bEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1
Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2NvcGVDaGFpbk5vZGUq
KTsKQEAgLTI4MCw3ICsyODMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGlj
IENhbGxGcmFtZSogZmluZEZ1bmN0aW9uQ2FsbEZyYW1lRnJvbVZNQ29kZShDYWxsRnJhbWUqLCBK
U0Z1bmN0aW9uKik7CiAKKyAgICAvKiBtbGFtIFZFUklGWWluZyB0aGF0IExMSU5UIGRvZXNuJ3Qg
dXNlIHByaXZhdGVFeGVjdXRlKCk6CiAgICAgICAgIEpTVmFsdWUgcHJpdmF0ZUV4ZWN1dGUoRXhl
Y3V0aW9uRmxhZywgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZyYW1lKik7CisgICAgKi8KKyNpZiBFTkFC
TEUoTExJTlRfQ19MT09QKQorICAgICAgICBKU1ZhbHVlIGxsaW50Q0xvb3BFeGVjdXRlKEV4ZWN1
dGlvbkZsYWcsIFJlZ2lzdGVyRmlsZSosIENhbGxGcmFtZSosIExMSW50OjpEYXRhKiBkYXRhID0g
MCk7CisjZW5kaWYKIAogICAgICAgICB2b2lkIGR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKik7CiAg
ICAgICAgIApAQCAtMjk0LDYgKzMwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJl
Z2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCisjaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fT1BDT0RFUykgLy8gbWxhbQogI2lmIEVOQUJMRShMTElOVCkKICAgICAgICAgT3Bjb2Rl
KiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5n
CiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBN
YXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKQEAgLTMwMSw2ICszMTAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2Rl
SURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBI
YXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUg
PT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBib29s
IG1faW5pdGlhbGl6ZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MzEsMTcgKzM0MzEsMTcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIEpJVFRodW5rczo6Y3RpU3R1YgogICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+
c2Vjb25kOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0
dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWJfbWxhbTEoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7CiAgICAgaWYgKE5h
dGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAt
PmdldChmdW5jdGlvbikpCiAgICAgICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogCi0gICAg
TmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBm
dW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNp
Yyk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZV9tbGFtKCpnbG9iYWxEYXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxs
KGdsb2JhbERhdGEsIGZ1bmN0aW9uKSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY29uc3RydWN0
b3IsIE5vSW50cmluc2ljKTsKICAgICB3ZWFrQWRkKCptX2hvc3RGdW5jdGlvblN0dWJNYXAsIGZ1
bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlKSk7CiAg
ICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRo
dW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRy
aW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWJfbWxh
bTIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1
bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIGlmIChO
YXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gbV9ob3N0RnVuY3Rpb25TdHViTWFw
LT5nZXQoZnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKQEAgLTM0
NTUsNyArMzQ1NSw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW8K
ICAgICB9IGVsc2UKICAgICAgICAgY29kZSA9IEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoZ2xv
YmFsRGF0YSwgZnVuY3Rpb24pOwogCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0
YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rp
b24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5h
dGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNp
Yyk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZV9tbGFtKCpnbG9iYWxEYXRhLCBjb2RlLCBmdW5jdGlvbiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0
KCkpLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKICAgICB3ZWFr
QWRkKCptX2hvc3RGdW5jdGlvblN0dWJNYXAsIGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVj
dXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMjMy
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMCw3ICszMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGN0aVZpcnR1YWxDb25zdHJ1Y3QoKSB7IHJldHVybiBtX3RyYW1wb2xpbmVT
dHJ1Y3R1cmUuY3RpVmlydHVhbENvbnN0cnVjdDsgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY3RpTmF0aXZlQ2FsbCgpCiAgICAgICAgIHsKLSNpZiBFTkFCTEUoTExJTlQpCisvLyBt
bGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKExMSU5U
X0NfTE9PUCkKICAgICAgICAgICAgIGlmICghbV9leGVjdXRhYmxlTWVtb3J5KQogICAgICAgICAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihs
bGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKTsKICNlbmRpZgpAQCAtMzE4LDcgKzMxOSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjdGlOYXRpdmVDb25zdHJ1Y3QoKQogICAgICAgICB7Ci0jaWYgRU5BQkxFKExMSU5UKQorLy8g
bWxhbSAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIo
bGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lKTsKICNlbmRpZgpAQCAtMzI3LDggKzMy
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
dGlTdHViKEpTR2xvYmFsRGF0YSosIFRodW5rR2VuZXJhdG9yKTsKIAotICAgICAgICBOYXRpdmVF
eGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSosIE5hdGl2ZUZ1bmN0aW9u
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvcik7Ci0gICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2Vu
ZXJhdG9yLCBJbnRyaW5zaWMpOworICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rp
b25TdHViX21sYW0xKEpTR2xvYmFsRGF0YSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3Rvcik7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWJfbWxhbTIoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJ
bnRyaW5zaWMpOwogCiAgICAgICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBA
IC00NjgsNyArNDcwLDE0IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQqIEpJVF9TVFVCIGN0aV92
bV90aHJvdyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lO
VEVSTkFMOwogfSAvLyBleHRlcm4gIkMiCiAKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2Vsc2Ug
Ly8gIUVOQUJMRShKSVQpCisKKy8vIE5lZWRlZCBmb3IgdGhlIExMSW50IEMrKyBJbnRlcnByZXRl
ciBiYWNrZW5kOgorc3RydWN0IEpJVFN0YWNrRnJhbWUgeworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YTsKK307CisKKyNlbmRpZiAvLyAhRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJ
KHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOSBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCisK
ICAgICBjbGFzcyBKU0ludGVyZmFjZUpJVCA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
cHVibGljOgogICAgICAgICAvLyBOT1RFUzoKQEAgLTMzMSw2ICszMzQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi19
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQorCit9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEpTSW50ZXJmYWNlSklUX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEw
IEBACiAjZGVmaW5lIExMSW50Q29tbW9uX2gKIAogLy8gUHJpbnQgZXZlcnkgaW5zdHJ1Y3Rpb24g
ZXhlY3V0ZWQuCi0jZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJ
TlRfRVhFQ1VUSU9OX1RSQUNJTkcgMQogCiAvLyBQcmludCBzb21lIGluZm9ybWF0aW9uIGZvciBz
b21lIG9mIHRoZSBtb3JlIHN1YnRsZSBzbG93IHBhdGhzLgotI2RlZmluZSBMTElOVF9TTE9XX1BB
VEhfVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HIDEKIAogLy8gRGlz
YWJsZSBpbmxpbmUgYWxsb2NhdGlvbiBpbiB0aGUgaW50ZXJwcmV0ZXIuIFRoaXMgaXMgZ3JlYXQg
aWYgeW91J3JlIGNoYW5naW5nCiAvLyBob3cgdGhlIEdDIGFsbG9jYXRlcy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxMjMyODkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNp
bmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIgLy8gbWxhbQogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJPcGNvZGUuaCIKIApAQCAtNDAsMTEgKzQxLDEzIEBAIERhdGE6OkRhdGEoKQog
ICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxl
bmd0aCArIDFdKQogICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQog
eworI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4
T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQogICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tp
XS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lKTsKICNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBt
X29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUp
OwogICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOwogI3VuZGVmIE9QQ09ERV9F
TlRSWQorI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogfQogCiAjaWYgQ09NUElMRVIo
Q0xBTkcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludHMuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKKyNpZiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkgLy8gbWxhbQorCiB2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29kZSYg
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQogewogICAgIGlmICgh
Z2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewpAQCAtODMsNiArODUsOCBAQCB2b2lkIGdldFByb2dy
YW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgCiAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFs
RGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CiB9CiAKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8g
bWxhbQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIAogI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsMTUgQEAg
dm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKgogI2lmIExMSU5UX1NMT1df
UEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKEpJ
VCkgLy8gbWxhbQogICAgIGdlbmVyaWNUaHJvdygKICAgICAgICAgZ2xvYmFsRGF0YSwgZXhlYywg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAogICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNv
ZGVPZmZzZXQoZXhlYywgcGMpKTsKKyNlbHNlCisgICAgLy8gbWxhbSBGSVhNRQorICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKKyAgICBVTlVTRURfUEFSQU0ocGMpOworI2VuZGlmIC8vIEVOQUJMRShK
SVQpIC8vIG1sYW0KIH0KIAogSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjKQpAQCAtNjEsOCArNjcsMTQgQEAgSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3coRXhlY1N0YXRlKiBleAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAg
ICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKICNlbmRpZgorI2lmIEVOQUJMRShK
SVQpIC8vIG1sYW0gRklYTUUKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKTsKLSAgICAKKyNlbHNlCisgICAgLy8gbWxhbSBGSVhNRQorICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKKyAgICBVTlVTRURfUEFSQU0ocGMpOworI2VuZGlmIC8vIEVOQUJMRShKSVQp
IC8vbWxhbSBGSVhNRQorCiAgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRp
b25JbnN0cnVjdGlvbnMoKTsKIH0KIApAQCAtNzMsOSArODUsMTkgQEAgdm9pZCogY2FsbFRvVGhy
b3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cgogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAg
ICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9i
YWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSklU
KSAvLyBtbGFtIEZJWE1FCiAgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSk7CisjZWxzZQorICAgIC8vIG1sYW0gRklYTUUKKyAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CisgICAgVU5VU0VEX1BBUkFNKHBjKTsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKSAvL21sYW0g
RklYTUUKICAgICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIHJldHVybiBOVUxMOyAv
LyBtbGFtIEZJWE1FCisjZWxzZQogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsMTkgKzMxLDI2IEBACiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgQ1BVKFg4NikKKworI2lmIEVOQUJMRShMTElO
VF9DX0xPT1ApCisjZGVmaW5lIE9GRkxJTkVfQVNNX0NfTE9PUCAxCisjZWxzZQorI2RlZmluZSBP
RkZMSU5FX0FTTV9DX0xPT1AgMAorI2VuZGlmCisKKyNpZiBDUFUoWDg2KSAmJiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKICNlbHNlCiAjZGVmaW5lIE9G
RkxJTkVfQVNNX1g4NiAwCiAjZW5kaWYKIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQVShB
Uk1fVEhVTUIyKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNkZWZpbmUgT0ZGTElORV9BU01f
QVJNdjcgMQogI2Vsc2UKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAogI2VuZGlmCiAKLSNp
ZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQog
I2RlZmluZSBPRkZMSU5FX0FTTV9YODZfNjQgMQogI2Vsc2UKICNkZWZpbmUgT0ZGTElORV9BU01f
WDg2XzY0IDAKQEAgLTkxLDYgKzk4LDggQEAKICNkZWZpbmUgT0ZGTElORV9BU01fVkFMVUVfUFJP
RklMRVIgMAogI2VuZGlmCiAKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogLy8gVGhlc2Ug
YXJlIGZvciBidWlsZGluZyBhbiBpbnRlcnByZXRlciBmcm9tIGdlbmVyYXRlZCBhc3NlbWJseSBj
b2RlOgogI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJTiAgIGFzbSAoCiAjZGVmaW5lIE9GRkxJTkVf
QVNNX0VORCAgICAgKTsKQEAgLTEwOCw3ICsxMTcsMTkgQEAKICAgICBISURFX1NZTUJPTChsYWJl
bCkgIlxuIiAgICAgICAgICAgICAgICAgICAgIFwKICAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAi
OlxuIgogI2VuZGlmCisjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcGNvZGUpIE9G
RkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsbGludF8jI29wY29kZSkKIAogI2RlZmluZSBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChsYWJlbCkgICBMT0NBTF9MQUJFTF9TVFJJTkcobGFiZWwpICI6XG4i
CiAKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisKKy8vIFRoZXNlIGFyZSBmb3IgYnVp
bGRpbmcgYSBDIExvb3AgaW50ZXJwcmV0ZXI6CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JFR0lOCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0VORAorI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwo
b3Bjb2RlKSBERUZJTkVfT1BDT0RFKG9wY29kZSkKKyNkZWZpbmUgT0ZGTElORV9BU01fR0xPQkFM
X0xBQkVMKGxhYmVsKSAgbGFiZWw6CisjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKGxh
YmVsKSAgIGxhYmVsOgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogI2VuZGlm
IC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMTIz
Mjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDggQEAgcHVibGljOgogCiBjb25zdCB1
bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCiB7Ci0jaWYgRU5BQkxFKEpJ
VCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExM
SU5UKQogLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVf
b2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0
YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29t
YmluYXRpb24gb2YKIC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRl
IGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCisjaW5jbHVkZSAiUHJvZmlsZXIuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIApAQCAtNzIsNyArNzMsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKICNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIo
cGNbaW5kZXhdLnUub3BlcmFuZCkpCiAKICNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwg
c2Vjb25kKSBkbyB7ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChmaXJzdCwg
c2Vjb25kKTsgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChyZWludGVycHJl
dF9jYXN0PEluc3RydWN0aW9uKj4oZmlyc3QpLCBzZWNvbmQpOyBcCiAgICAgfSB3aGlsZSAoZmFs
c2UpCiAKICNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVj
KQpAQCAtMjY0LDYgKzI2NSw3IEBAIGlubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4
ZWMpCiAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHRyeSB0byBPU1IuCiBpbmxpbmUgYm9v
bCBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgRXhlY1N0
YXRlKiBleGVjKQogeworI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KICAgICBjb2RlQmxvY2stPnVw
ZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgCiAgICAgaWYgKCFjb2RlQmxvY2stPmNoZWNrSWZK
SVRUaHJlc2hvbGRSZWFjaGVkKCkpIHsKQEAgLTI5Niw4ICsyOTgsMTQgQEAgaW5saW5lIGJvb2wg
aml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoQwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZmFsc2U7CisjZWxzZSAvLyAhRU5BQkxFKEpJVCkKKyAgICBVTlVT
RURfUEFSQU0oY29kZUJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmIC8vICFFTkFCTEUoSklUKQogfQogCisjaWYgRU5BQkxFKEpJVCkgLy8g
bWxhbQogZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Owogc3RhdGljIFNs
b3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5k
KQogewpAQCAtMzkwLDYgKzM5OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiAg
ICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAgICAgTExJTlRfRU5EX0lN
UEwoKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoSklUKSAvLyBtbGFtCiAKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCiB7CkBAIC04OTYsMTAgKzkwNSwxOCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRQorI2Vsc2UKICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2dldF9ieV9pZCk7Cisj
ZW5kaWYKICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRQorI2Vsc2UKICAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk1MSw3
ICs5NjgsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQg
YmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKICAgICAgICAgICAgICAgICAgICAg
Ly8gYmVsb3cgbWF5IEdDLgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICAg
ICAgICAgIC8vIG1sYW0gRklYTUUKKyNlbHNlCiAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyNlbmRp
ZgogCiAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJh
c2VDZWxsKTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC05NzAsMjUgKzk5MSw0MSBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVy
YW5kKSB7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgICAgICAgICAgLy8g
bWxhbSBGSVhNRQorI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKKyAgICAgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRQorI2Vsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWxfb3V0X29mX2xpbmUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQorICAgICAgICAgICAgICAgICAgICAvLyBtbGFtIEZJWE1FCisjZWxzZQogICAg
ICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZCk7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6
ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAg
ICAgICAgICAgLy8gbWxhbSBGSVhNRQorI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMzczLDcgKzE0MTAs
MTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsK
ICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyNpZiBFTkFCTEUoSklUKSAv
LyBtbGFtIEZJWE1FCiAgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisjZWxzZQorICAgICAgICA7IC8vIG1sYW0g
RklYTUUKKyNlbmRpZiAvLyBtbGFtIEZJWE1FCiAgICAgZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9u
RXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQp
OwpAQCAtMTM4MSwxMCArMTQyMiwxMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVw
Q2FsbChFeGVjCiAgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxl
ckZyYW1lKCksIHBjLCBlcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwogICAgICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtIEZJWE1FCiAgICAgICAgIGlmIChleGVjQ2Fs
bGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCiAgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdl
bmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyNlbmRpZiAvLyBtbGFt
IEZJWE1FCiAgICAgfQogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8pIHsKQEAgLTE0NjYsNyAr
MTUwOSw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwKICAgICBl
eGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKICAgICBleGVjQ2FsbGVlLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxl
ZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworI2lmICFFTkFCTEUoTExJTlRf
Q19MT09QKSAvLyBtbGFtIEZJWE1FCiAgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lz
ZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisjZW5k
aWYKICAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlYy0+c2V0Q3VycmVu
dFZQQyhwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTIz
Mjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDI2ICs0MywzMiBAQCBuYW1lc3BhY2UgTExJbnQgewogLy8gJ2V4
dGVybiAiQyInKSBuZWVkcyB0byBiZSBQT0Q7IGhlbmNlIHB1dHRpbmcgYW55IGNvbnN0cnVjdG9y
cyBpbnRvIGl0IGNvdWxkIGNhdXNlIGVpdGhlciBjb21waWxlcgogLy8gd2FybmluZ3MsIG9yIHdv
cnNlLCBhIGNoYW5nZSBpbiB0aGUgQUJJIHVzZWQgdG8gcmV0dXJuIHRoZXNlIHR5cGVzLgogc3Ry
dWN0IFNsb3dQYXRoUmV0dXJuVHlwZSB7Ci0gICAgdm9pZCogYTsKLSAgICB2b2lkKiBiOworICAg
IEluc3RydWN0aW9uKiBhOworICAgIEV4ZWNTdGF0ZSogYjsKIH07CiAKLWlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIHZvaWQqIGIpCitpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdChJbnN0cnVjdGlvbiogYSwgRXhlY1N0YXRlKiBiKQog
ewogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQ7CiAgICAgcmVzdWx0LmEgPSBhOwogICAg
IHJlc3VsdC5iID0gYjsKICAgICByZXR1cm4gcmVzdWx0OwogfQorCitpbmxpbmUgdm9pZCBkZWNv
ZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgSW5zdHJ1Y3Rpb24qJiBhLCBFeGVj
U3RhdGUqJiBiKQoreworICAgIGEgPSByZXN1bHQuYTsKKyAgICBiID0gcmVzdWx0LmI7Cit9CiAj
ZWxzZQogdHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0dXJuVHlwZTsKIAotaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwgdm9pZCogYikKK2lubGluZSBTbG93
UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KEluc3RydWN0aW9uKiBhLCBFeGVjU3RhdGUqIGIp
CiB7CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdm9pZCogYTsK
LSAgICAgICAgICAgIHZvaWQqIGI7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogYTsKKyAgICAg
ICAgICAgIEV4ZWNTdGF0ZSogYjsKICAgICAgICAgfSBwYWlyOwogICAgICAgICBpbnQ2NF90IGk7
CiAgICAgfSB1OwpAQCAtNzAsNiArNzYsMjAgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBl
bmNvZGVSZXN1bHQodgogICAgIHUucGFpci5iID0gYjsKICAgICByZXR1cm4gdS5pOwogfQorCitp
bmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgSW5zdHJ1
Y3Rpb24qJiBhLCBFeGVjU3RhdGUqJiBiKQoreworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBhOworICAgICAgICAgICAgRXhlY1N0YXRlKiBi
OworICAgICAgICB9IHBhaXI7CisgICAgICAgIGludDY0X3QgaTsKKyAgICB9IHU7CisgICAgdS5p
ID0gcmVzdWx0OworICAgIGEgPSB1LnBhaXIuYTsKKyAgICBiID0gdS5wYWlyLmI7Cit9CiAjZW5k
aWYKIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChF
eGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNp
b24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKIAorI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQogewog
ICAgIEpTSW50ZXJmYWNlSklUIGppdDsKQEAgLTc4LDYgKzgwLDggQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHByb2dyYW1FbnRyeVRodW5rRwogICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJvZ3JhbSIpOwogfQog
CisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAogCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20J
KHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04MywxNSArODMsMjMgQEAg
Y29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCiAKIAogIyBVdGlsaXRpZXMKK21hY3Jv
IGp1bXBUb1BDKCkKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgY3h4TmV4dE9wY29kZQorICAgIGVs
c2UKKyAgICAgICAgam1wIFtQQ10gICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNU
UlVDVElPTjsKKyAgICBlbmQKK2VuZAorCiBtYWNybyBkaXNwYXRjaChhZHZhbmNlKQotICAgIGFk
ZHAgYWR2YW5jZSAqIDQsIFBDCi0gICAgam1wIFtQQ10KKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQ
QyAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOworICAgIGp1bXBU
b1BDKCkKIGVuZAogCiBtYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQocGNPZmZzZXQpCiAg
ICAgbHNoaWZ0aSAyLCBwY09mZnNldAogICAgIGFkZHAgcGNPZmZzZXQsIFBDCi0gICAgam1wIFtQ
Q10KKyAgICBqdW1wVG9QQygpCiBlbmQKIAogbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQp
CkBAIC0xMDAsMjEgKzEwOCwyNCBAQCBtYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKIGVu
ZAogCiBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCi0gICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdLCBQQwotICAgIGptcCBbUENdCisgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdLCBQQyAgICAvLyBwYyA9IGNmci5Bcmd1bWVudENvdW50LlRhZzsg
Ly8gUmVsb2FkIGEgcHJldmlvdXNseSBzdGFzaGVkIHJldHVyblBDLgorICAgIGp1bXBUb1BDKCkK
IGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCiAgICAgaWYgQVJNdjcK
LSAgICAgICAgbW92ZSBhcmcxLCB0MAotICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1v
dmUgYXJnMSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcxID0gLi4uOworICAg
ICAgICBtb3ZlIGFyZzIsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMiA9IC4u
LjsKKyAgICAgICAgY2FsbCBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNh
bGwgQyBmdW5jdGlvbjsKICAgICBlbHNpZiBYODYKLSAgICAgICAgcG9rZSBhcmcxLCAwCi0gICAg
ICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzEsIDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYXJnMSA9IC4uLjsKKyAgICAgICAgcG9rZSBhcmcyLCAxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFyZzIgPSAuLi47CisgICAgICAgIGNhbGwgZnVuY3Rpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb247CisgICAgZWxzaWYgQ19M
T09QCisgICAgICAgIGN4eENhbGxTbG93UGF0aCBmdW5jdGlvbiwgYXJnMSwgYXJnMiAgICAvLyBj
YWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgZWxzZQogICAgICAgICBlcnJvcgogICAg
IGVuZAotICAgIGNhbGwgZnVuY3Rpb24KIGVuZAogCiAjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmcz
IGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgpAQCAtMTI5LDYgKzE0MCwx
MSBAQCBtYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsCiAgICAgICAgIHBv
a2UgYXJnMiwgMQogICAgICAgICBwb2tlIGFyZzMsIDIKICAgICAgICAgcG9rZSBhcmc0LCAzCisg
ICAgZWxzaWYgQ19MT09QCisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcy
LCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKICAgICBl
bHNlCiAgICAgICAgIGVycm9yCiAgICAgZW5kCkBAIC0xMzcsOCArMTUzLDggQEAgZW5kCiAKIG1h
Y3JvIGNhbGxTbG93UGF0aChzbG93UGF0aCkKICAgICBjQ2FsbDIoc2xvd1BhdGgsIGNmciwgUEMp
Ci0gICAgbW92ZSB0MCwgUEMKLSAgICBtb3ZlIHQxLCBjZnIKKyAgICBtb3ZlIHQwLCBQQyAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CisgICAgbW92ZSB0MSwg
Y2ZyICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KIGVuZAogCiAj
IERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGlu
IHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQpAQCAtMTg2LDE3ICsyMDIsMTcgQEAg
ZW5kCiAjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVy
cy4gSW5kZXggaXMgbm90CiAjIGNoYW5nZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KGluZGV4LCB0YWcsIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCB0YWcKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCi0g
ICAgam1wIC5kb25lCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwgLmNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0
YW50OworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+
ID0gY2ZyW2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKKyAgICBqbXAg
LmRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKIC5jb25zdGFu
dDoKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAotICAgIGxvYWRwIENvZGVCbG9j
azo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5
bG9hZAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRS
ZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQgICAgICAgICAg
ICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdp
c3RlcnMudmVjdG9yQnVmZmVyOwogICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBp
ZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgotICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2Fk
LCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFn
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRwIFBh
eWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZl
cjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwogLmRvbmU6CiBlbmQKIApAQCAtMjE1LDM1ICsyMzEs
MzkgQEAgZW5kCiAKICMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVy
LiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKLSAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LCAuY29uc3RhbnQKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHRhZwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQK
LSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybzogbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
aW5kZXgsIHRhZywgcGF5bG9hZCkgeworICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsIC5jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBn
b3RvIC5jb25zdGFudDsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2Fk
OworICAgIGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBnb3RvIC5kb25l
OwogLmNvbnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKLSAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwg
dGFnCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9j
azxhMT4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJl
Z2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lz
dGVycy52ZWN0b3JCdWZmZXI7CiAgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlm
IHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LAogICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCi0gICAgbHNoaWZ0aSAzLCBpbmRleAotICAgIGFk
ZHAgaW5kZXgsIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAotICAg
IGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKyAgICBsc2hpZnRpIDMsIGluZGV4ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOworICAgIGFkZHAg
aW5kZXgsIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9y
QnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10s
IHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKKyAgICBs
b2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50
PGExPi5UYWc7CiAuZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZy4KIGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBh
eWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpIHsKKyAgICBiaWd0ZXEg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5Q
YXlsb2FkOworICAgIGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBnb3Rv
IC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCi0g
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIGNvZGVCbG9jazxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxv
YWRdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9
IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAg
ICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2
YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwg
MyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8
PCAzLgotICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCi0gICAgbG9h
ZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICB0YWdDaGVj
ayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVyPHBh
eWxvYWQ+W2luZGV4XS5UYWcpOworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5k
ZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBwYXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwog
LmRvbmU6CisgICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b20uCiBlbmQKIAogIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCBy
ZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKQEAgLTI1MiwxMCArMjcyLDE0IEBA
IGVuZAogIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxv
d2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQogIyB0YWcuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgLy8gbWFj
cm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXls
b2FkLCBzbG93KSB7CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
CiAgICAgICAgIGluZGV4LAotICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxU
YWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKLSAgICAgICAgcGF5bG9hZCkKKyAgICAgICAgbWFj
cm8gKGFjdHVhbFRhZykKKyAgICAgICAgICAgIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcs
IHNsb3cgIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKKyAg
ICAgICAgZW5kLAorICAgICAgICBwYXlsb2FkKSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbSguLi4pOworICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkLgogZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQpAQCAtMjcxLDggKzI5NSwxMCBAQCBlbmQKIAogbWFj
cm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKICAgICBpZiBWQUxVRV9QUk9G
SUxFUgotICAgICAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09m
ZnNldFtwcm9maWxlXQotICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1
Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCisgICAgLy8gbWFjcm8gdmFsdWVQcm9maWxl
KHRhZywgcGF5bG9hZCwgcHJvZmlsZSBpLmUuIG9yYWNsZUNhY2hlSWQpIHsKKyAgICAgICAgc3Rv
cmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0gICAg
ICAgICAgICAvLyAgIFZhbHVlUHJvZmlsZTo6YnVja2V0c1tvcmFjbGVDYWNoZUlkXS5UYWcgPSB0
YWc8YTA+OworICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMg
KyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdICAgIC8vICAgVmFsdWVQcm9maWxlOjpidWNrZXRzW29y
YWNsZUNhY2hlSWRdLlBheWxvYWQgPSBwYXlsb2FkPGExPjsKKyAgICAvLyB9IEVORCB2YWx1ZVBy
b2ZpbGUuCiAgICAgZW5kCiBlbmQKIApAQCAtMjk5LDYzMSArMzI1LDk0NiBAQCBlbmQKIAogIyBJ
bnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisvLyBmdW5j
dGlvbjogZm9yIGVhY2ggaWQgaW4gbG9jYWxzIHsgY2ZyW2lkXSA9IHVuZGVmaW5lZDsgfQorLy8K
Ky8vICAgSW5pdGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4gSWYgdGhlIGNv
ZGUgYmxvY2sgcmVxdWlyZXMKKy8vICAgYW4gYWN0aXZhdGlvbiwgZW50ZXJfd2l0aF9hY3RpdmF0
aW9uIGlzIHVzZWQgaW5zdGVhZC4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRo
ZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfZW50ZXI6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAgICAgICAg
ICAvLyB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNvZGVCbG9jawotICAgIGxvYWRpIENvZGVCbG9jazo6
bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251
bVZhcnMKLSAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKLSAgICBtb3ZlIFVuZGVmaW5lZFRhZywg
dDAKLSAgICBtb3ZlIDAsIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAg
ICAgICAgIC8vIGNvZGVCbG9jazx0Mj4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRpIENvZGVC
bG9jazo6bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyBudW1WYXJzPHQyPiA9IGNvZGVCbG9jazx0
Mj4ubV9udW1WYXJzOworICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZSAgICAgICAgICAgICAgICAg
ICAvLyBpZiAobnVtVmFyczx0Mj4gPT0gMCkgZ290byAuZG9uZTsKKyAgICBtb3ZlIFVuZGVmaW5l
ZFRhZywgdDAgICAgICAgICAgICAgICAgICAgLy8ganNVbmRlZmluZWQ8dDA+ID0gVW5kZWZpbmVk
VGFnOworICAgIG1vdmUgMCwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB6ZXJv
PHQxPiA9IDA7CiAub3BFbnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0MgotICAgIHN0b3JlaSB0MCwg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCi0gICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorICAgIHN1YmkgMSwgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIG51bVZhcnM8dDI+LS07CisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5UYWcg
PSBqc1VuZGVmaW5lZDx0MD47CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5QYXlsb2FkID0gemVybzx0MT47CisgICAgYnRp
bnogdDIsIC5vcEVudGVyTG9vcCAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQyPiAh
PSAwKSBnb3RvIC5sb29wOwogLm9wRW50ZXJEb25lOgotICAgIGRpc3BhdGNoKDEpCisgICAgZGlz
cGF0Y2goMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FjdGl2YXRpb24gZHN0UmVnSWQKKy8vIGZ1bmN0
aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IEFjdGl2YXRpb24oKSBpZiBub3QgYWxyZWFkeSBwcmVz
ZW50OworLy8KKy8vICAgSWYgdGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxmcmFt
ZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQgd3Jp
dGVzIGl0IGJhY2sgdG8gZHN0LgorCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAgICBs
b2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFjdGl2YXRpb25SZWc8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0
aXZhdGlvbkRvbmUgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVnPHQwPl0uVGFnICE9IEVtcHR5VmFs
dWVUYWcpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3Jl
YXRlX2FjdGl2YXRpb24pICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVh
dGVfYWN0aXZhdGlvbjsKIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgotICAgIGRpc3BhdGNoKDIp
CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6
IGluaXRfbGF6eV9yZWcgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gSlNW
YWx1ZSgpOworLy8KKy8vICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8vICAg
VGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2Nr
LgogCiBfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgNFtQQ10sIHQwCi0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQotICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlz
cGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07
CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0PHQwPl0uVGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAg
ICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmcltkc3Q8dDA+XS5QYXlsb2FkID0gMDsKKyAgICBkaXNwYXRjaCgy
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogY3JlYXRlX2FyZ3VtZW50
cyBkc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBuZXcgQXJndW1lbnRzKCkg
aWYgbm90IGFscmVhZHkgcHJlc2VudDsKKy8vCisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVudHMn
IG9iamVjdCBhbmQgcGxhY2VzIGl0IGluIGJvdGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNhbGwg
ZnJhbWUgc2xvdCBhbmQgdGhlIGxvY2FsICdhcmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBpZiBp
dCBoYXMgbm90IGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4KIAogX2xsaW50X29wX2NyZWF0ZV9h
cmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJn
dW1lbnRzRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hcmd1
bWVudHMpCisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QXJndW1lbnRzRG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XS5UYWcgIT0gRW1wdHlWYWx1ZVRhZykg
Z290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJn
dW1lbnRzKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1
bWVudHM7CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlz
cGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG9wX2NyZWF0
ZV90aGlzIHRoaXNSZWdJZAorLy8gZnVuY3Rpb246IGNmclt0aGlzUmVnSWRdID0gbmV3IE9iamVj
dChjdXJyZW50IFByb3RvPyk7CisvLyBtbGFtIEZJWE1FOiBIb3cgZG9lcyB0aGUgY2FjaGVkSW5o
ZXJpdG9yIGdldCBwb3B1bGF0ZWQ/CisvLyAgICAgICBDbGFzc2ljIHNwZWNpZmllcyBhIDJuZCBv
cGVyYW5kIHByb3RvKHIpLCBidXQgb3VyIGRpc3BhdGNoIGJlbG93IGlnbm9yZXMgaXQuCisvLwor
Ly8gICBBbGxvY2F0ZSBhbiBvYmplY3QgYXMgJ3RoaXMnLCBmb3IgdXNlIGluIGNvbnN0cnVjdGlv
bi4KKy8vICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5n
IG9mIGEgY29kZSBibG9jay4KKwogX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlz
U2xvdworICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnIuQ2FsbGVlOworICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MiAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaW5oZXJpdG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOworICAg
IGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKGluaGVyaXRvciA9PSAwKSBnb3RvIC5zbG93OworICAgIC8vIGFs
bG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFs
RGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgaW5oZXJpdG9yPHQyPiwgdDAsIHQxLCB0Mywg
Lm9wQ3JlYXRlVGhpc1Nsb3cpOwogICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2Jq
ZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywg
dDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQotICAgIGxvYWRpIDRbUENdLCB0MQot
ICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRb
UENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpc0lEPHQxPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgc3RvcmVpIENlbGxU
YWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbdGhpc0lEPHQxPl0uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmclt0
aGlzSUQ8dDE+XS5QYXlsb2FkID0gdGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfdGhpczsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogY29udmVydF90aGlzIHRoaXNSZWdJZCBv
cmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogY2ZyW3RoaXNSZWdJZF0gPSBDb252ZXJ0VG9UaGlz
KGNmclt0aGlzUmVnSWRdKTsKKy8vCisvLyAgIFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3RoaXMn
IHJlZ2lzdGVyLCBjb252ZXJ0cyBpdCB0byBhCisvLyAgIHZhbHVlIHRoYXQgaXMgc3VpdGFibGUg
Zm9yIHVzZSBhcyB0aGUgJ3RoaXMnIHZhbHVlLCBhbmQKKy8vICAgc3RvcmVzIGl0IGluIHRoZSAn
dGhpcycgcmVnaXN0ZXIuIFRoaXMgb3Bjb2RlIGlzIGVtaXR0ZWQKKy8vICAgdG8gYXZvaWQgZG9p
bmcgdGhlIGNvbnZlcnNpb24gaW4gdGhlIGNhbGxlciB1bm5lY2Vzc2FyaWx5LgorLy8KKy8vICAg
VGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29k
ZQorLy8gICBibG9jay4KKwogX2xsaW50X29wX2NvbnZlcnRfdGhpczoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAot
ICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2Jq
ZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgdmFs
dWVQcm9maWxlKENlbGxUYWcsIHQwLCB0MSkKLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDRb
UENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpc0lEPHQwPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgICAgICAgICAv
LyBpZiAoY2ZyW3RoaXNJRDx0MD5dLlRhZyAhPSBDZWxsVGFnKSBnb3RvIC5zbG93OworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnJbdGhpc0lEPHQwPl0uUGF5bG9hZDsKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHN0cnVjdHVyZTx0MD4gPSB0aGlzPHQwPi5zdHJ1Y3R1cmU7CisgICAgYmJiIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAu
b3BDb252ZXJ0VGhpc1Nsb3cgICAgLy8gaWYgKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlwZSA8
IE9iamVjdFR5cGUpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJZDx0MT4g
PSBvcGVyYW5kc1tvcmFjbGVDYWNoZUlkXTsKKyAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywgdDAs
IHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlUHJvZmls
ZShDZWxsVGFnLCBzdHJ1Y3R1cmU8dDA+LCBvcmFjbGVJZDx0MT4pOworICAgIGRpc3BhdGNoKDMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BDb252ZXJ0VGhpc1Nsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKQotICAgIGRpc3BhdGNoKDMpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jb252ZXJ0X3RoaXM7CisgICAgZGlzcGF0
Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5ld19vYmplY3Qg
ZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IE9iamVjdCgpOworLy8K
Ky8vICAgQ29uc3RydWN0cyBhIG5ldyBlbXB0eSBPYmplY3QgaW5zdGFuY2UgdXNpbmcgdGhlIG9y
aWdpbmFsCisvLyAgIGNvbnN0cnVjdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVy
IGRzdC4KKwogX2xsaW50X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3Ry
dWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MCAgICAgICAgICAgICAgICAg
Ly8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAgIGxv
YWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEgICAgLy8g
ZW1wdHlTdHJ1Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5lbXB0eU9iamVjdFN0cnVjdHVy
ZTsKKyAgICAvLyBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0lu
ZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIGVtcHR5U3RydWN0dXJl
PHQxPiwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdyk7CiAgICAgYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFs
T2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKLSAgICBs
b2FkaSA0W1BDXSwgdDEKLSAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
Ci0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2go
MikKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0MT5dLlRhZyA9IENlbGxUYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0gYWxs
b2NhdGVkT2JqZWN0PHQwPjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmV3T2Jq
ZWN0U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KQot
ICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X29i
amVjdCkgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXdfb2JqZWN0OworICAgIGRp
c3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBtb3YgZHN0UmVnSWQgc3JjUmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY1JlZ0lkXTsKKy8vCisvLyAg
IENvcGllcyByZWdpc3RlciBzcmMgdG8gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbW92Ogog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BD
XSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNb
c3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgLy8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHZhbHVlPHQyLCB0Mz4pOworICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQwPl0uVGFnID0gc3JjVGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5d
LlBheWxvYWQgPSBzcmNQYXlsb2FkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwog
CisvLyBieXRlY29kZTogbm90IGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2Rz
dHJlZ0lkXSA9ICFjZnJbc3JjcmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qg
b2YgcmVnaXN0ZXIgc3JjIChjb252ZXJ0ZWQgdG8KKy8vICAgYm9vbGVhbiksIGFuZCBwdXRzIHRo
ZSByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3Bfbm90OgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCi0gICAgYmluZXEgdDIsIEJvb2xlYW5U
YWcsIC5vcE5vdFNsb3cKLSAgICB4b3JpIDEsIHQzCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAg
ICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAg
IGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDAsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzcmNJZDx0MD4gPT4gdGFnPHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIGJpbmVxIHQy
LCBCb29sZWFuVGFnLCAub3BOb3RTbG93ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRh
Zzx0Mj4gIT0gQm9vbGVhblRhZykgZ290byAuc2xvdzsKKyAgICB4b3JpIDEsIHQzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDM+ID0gIXBh
eWxvYWQ8dDM+OworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdHhzSWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDM+OworICAgIGRpc3BhdGNoKDMpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOwogCiAub3BOb3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25vdCkKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25vdCkgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfbm90OworICAgIGRp
c3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBlcSBkc3RSZWdJZCBzcmMxUmVn
SWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lk
XSA9PSBjZnJbc3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBz
cmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBlcXVhbCwKKy8vICAgYXMgd2l0aCB0aGUgRUNNQVNj
cmlwdCAnPT0nIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGFzIGEgYm9vbGVh
biBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9lcToKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZGkgMTJbUENdLCB0MgotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MCwgdDIsIHQwKQotICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93Ci0gICAgYmllcSB0Miwg
Q2VsbFRhZywgLm9wRXFTbG93Ci0gICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdwotICAg
IGxvYWRpIDRbUENdLCB0MgotICAgIGNpZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFu
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRz
W3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAg
IC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PiB0YWcyPHQzPiwgcGF5bG9h
ZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAgICAg
ICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT4g
dGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4p
IGdvdG8gLnNsb3c7CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gPT0gQ2VsbFRhZykgZ290byAuc2xvdzsK
KyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7Cisg
ICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgY2llcSB0MCwgdDEsIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDA+ID0g
KHBheWxvYWQyPHQxPiA9PSBwYXlsb2FkMTx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFn
ID0gQm9vbGVhblRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0g
ICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBwYXlsb2FkMTx0
MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcEVxU2xvdzoKLSAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9lcSkKLSAgICBkaXNwYXRjaCg0KQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2VxKSAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBz
bG93X3BhdGhfZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6
IGVxX251bGwgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0cmVnSWRdID0g
KGNmcltzcmNSZWdJZF0gPT0gbnVsbCk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3Rl
ciBzcmMgaXMgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9y
LCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAKIF9s
bGludF9vcF9lcV9udWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwg
dDAKLSAgICBsb2FkaSA0W1BDXSwgdDMKLSAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKLSAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRl
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCi0gICAgdGJueiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIHQxCi0gICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorICAgIGxvYWRpIDhbUENd
LCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+
ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVn
SWRdOworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYXNzZXJ0Tm90Q29uc3RhbnQoc3JjSWQ8dDA+KTsKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MT4g
PSBjZnJbc3JjSWQ8dDA+XS5UYWc7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAgICAgICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQwPiA9IGNmcltzcmNJZDx0MD5d
LlBheWxvYWQ7CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZSAgICAg
ICAgICAgICAgICAgICAvLyBpZiAodGFnPHQxPiAhPSBDZWxsVGFnKSBnb3RvIC5pbW1lZGlhdGU7
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzdHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0MD4uc3RydWN0dXJlOworICAgIHRibnog
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCB0MSAvLyByZXN1bHQ8dDE+ID0gKChzdHJ1Y3R1cmU8dDE+LnR5cGVJbmZv
LmZsYWcgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSAhPSAwKTsKKyAgICBqbXAgLm9wRXFOdWxs
Tm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gLm5vdElt
bWVkaWF0ZTsKIC5vcEVxTnVsbEltbWVkaWF0ZToKLSAgICBjaWVxIHQxLCBOdWxsVGFnLCB0Mgot
ICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKLSAgICBvcmkgdDIsIHQxCisgICAgY2llcSB0
MSwgTnVsbFRhZywgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc051
bGw8dDI+ID0gKHRhZzx0MT4gPT0gTnVsbHRhZyk7CisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFn
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAo
dGFnPHQxPiA9PSBVbmRlZmluZWRUYWcpOworICAgIG9yaSB0MiwgdDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IGlzTnVsbDx0Mj4g
fCBpc1VuZGVmaW5lZDx0MT47CiAub3BFcU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5U
YWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0
MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG5lcSBkc3RS
ZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChj
ZnJbc3JjMVJlZ0lkXSAhPSBjZnJbc3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mgd2hldGhl
ciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBub3QKKy8vICAgZXF1YWwsIGFz
IHdpdGggdGhlIEVDTUFTY3JpcHQgJyE9JyBvcGVyYXRvciwgYW5kIHB1dHMgdGhlCisvLyAgIHJl
c3VsdCBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfbmVxOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10s
IHQwCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCi0gICAgYmluZXEgdDIsIHQzLCAub3BOZXFT
bG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdwotICAgIGJpYiB0MiwgTG93ZXN0
VGFnLCAub3BOZXFTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgY2luZXEgdDAsIHQxLCB0
MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxv
YWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3Bl
cmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
ICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQy
PiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKKyAgICBiaW5l
cSB0MiwgdDMsIC5vcE5lcVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
ICh0YWcxPHQyPiAhPSB0YWcyPHQzPikgZ290byAuc2xvdzsKKyAgICBiaWVxIHQyLCBDZWxsVGFn
LCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiA9
PSBDZWxsdGFnKSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA8IExv
d2VzdFRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lk
XTsKKyAgICBjaW5lcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJlc3VsdDx0MD4gPSAocGF5bG9hZDE8dDA+ICE9IHBheWxvYWQyPHQxPik7Cisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAg
ICAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQy
Pl0uUGF5bG9hZCA9IHJlc3VsdDx0MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5v
cE5lcVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKQotICAgIGRp
c3BhdGNoKDQpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKSAgICAgICAg
ICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXE7CisgICAgZGlzcGF0Y2goNCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiAgICAgCiAKKy8vIGJ5dGVjb2RlOiBuZXFfbnVsbCBkc3RSZWdJZCBzcmNSZWdJZAor
Ly8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyY1JlZ0lkXSAhPSBudWxsKTsKKy8v
CisvLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYyBpcyBub3QgbnVsbCwgYXMgd2l0aCB0
aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFz
IGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uZXFfbnVsbDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQz
Ci0gICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCi0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYmlu
ZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEKLSAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQotICAgIGptcCAub3BO
ZXFOdWxsTm90SW1tZWRpYXRlCisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07
CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBkc3RJZDx0Mz4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnROb3RD
b25zdGFudChzcmNJZDx0MD4pOworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQxPiA9IGNmcltzcmNJZDx0MD5dLlRhZzsK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MCAgICAgICAgICAgICAgICAg
ICAgIC8vIHBheWxvYWQ8dDA+ID0gY2ZyW3NyY0lkPHQwPl0uUGF5bG9hZDsKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgIC8vIGlmICh0
YWc8dDE+ICE9IENlbGxUYWcpIGdvdG8gLmltbWVkaWF0ZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4g
PSBwYXlsb2FkPHQwPi5zdHJ1Y3R1cmU7CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEgLy8gcmVz
dWx0PHQxPiA9ICgoc3RydWN0dXJlPHQxPi50eXBlSW5mby5mbGFncyAmIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpID09IDApOworICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byAubm90SW1tZWRpYXRlOwogLm9wTmVxTnVsbElt
bWVkaWF0ZToKLSAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKLSAgICBjaW5lcSB0MSwgVW5kZWZp
bmVkVGFnLCB0MQotICAgIGFuZGkgdDIsIHQxCisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc05vdE51bGw8dDI+ID0gKHRhZzx0
MT4gIT0gTnVsbFRhZyk7CisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpc05vdFVuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiAhPSBV
bmRlZmluZWRUYWcpOworICAgIGFuZGkgdDIsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IChpc05vdE51bGw8dDI+ICYgaXNOb3RV
bmRlZmluZWQ8dDE+KTsKIC5vcE5lcU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcg
PSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47
CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAogbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlP
cGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BD
XSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0MiwgdDMsIC5zbG93
Ci0gICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgYmluZXEgdDIsIENlbGxUYWcsIC5u
b3RTdHJpbmcKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwotICAg
IGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmlu
Z1R5cGUsIC5zbG93CisgICAgbG9hZGkgMTJbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAg
ICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHNyYzFJZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQzLCB0MSkgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXls
b2FkMTx0MD4pOworICAgIGJpbmVxIHQyLCB0MywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IHRhZzI8dDM+KSBnb3RvIC5zbG93Owor
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWYgKHRhZzE8dDI+IDwgTG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQy
LCBDZWxsVGFnLCAubm90U3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRh
ZzE8dDI+ICE9IENlbGxUYWcpIGdvdG8gLm5vdFN0cmluZzsKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTE8dDI+
ID0gcGF5bG9hZDE8dDA+LnN0cnVjdHVyZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDMgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTI8dDM+ID0gcGF5bG9h
ZDI8dDE+LnN0cnVjdHVyZTsKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZyAgLy8gaWYgKHN0cnVjdHVy
ZTE8dDI+LnR5cGVJbmZvLnR5cGUgIT0gU3RyaW5nVHlwZSkgZ290byAubm90U3RyaW5nOworICAg
IGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmlu
Z1R5cGUsIC5zbG93ICAgICAgICAvLyBpZiAoc3RydWN0dXJlMjx0Mz4udHlwZUluZm8udHlwZSA9
PSBTdHJpbmdUeXBlKSBnb3RvIC5zbG93OwogLm5vdFN0cmluZzoKLSAgICBsb2FkaSA0W1BDXSwg
dDIKLSAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQotICAgIHN0b3JlaSBCb29sZWFu
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNb
ZHN0UmVnSWRdOworICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IHBheWxvYWQxPHQwPiBDT01QQVJBVE9SIHBh
eWxvYWQyPHQxPjsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaCg0KSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKIAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3Bh
dGNoKDQpCisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsIHNsb3dQYXRoPGExPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKIGVuZAogCisvLyBieXRlY29kZTogc3RyaWN0ZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJS
ZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyYzFSZWdkXSA9PT0gY2Zy
W3NyYzJSZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQg
cmVnaXN0ZXIgc3JjMiBhcmUgc3RyaWN0bHkKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFT
Y3JpcHQgJz09PScgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZQorLy8gICByZXN1bHQgYXMgYSBib29s
ZWFuIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAvLyBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2ll
cSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9zdHJp
Y3RlcT4pOworICAgIC8vIENPTVBBUkFUT1IgPSAiPT0iCiAgICAgc3RyaWN0RXEobWFjcm8gKGxl
ZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9z
bG93X3BhdGhfc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IG5zdHJpY3RlcSBkc3RSZWdJZCBz
cmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3Jj
MVJlZ0lkXSAhPT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVn
aXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgbm90CisvLyAgIHN0cmljdGx5IGVxdWFs
LCBhcyB3aXRoIHRoZSBFQ01BU2NyaXB0ICchPT0nIG9wZXJhdG9yLCBhbmQKKy8vICAgcHV0cyB0
aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uc3Ry
aWN0ZXE6CiAgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIC8vIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8
X2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXE+KTsKKyAgICAvLyBDT01QQVJBVE9SID0gIiE9Igog
ICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdo
dCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNv
ZGU6IHByZV9pbmMgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbc3JjRHN0cmVnSWRdID0g
KytjZnJbc3JjRHN0cmVnSWRdOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRv
IG51bWJlciwgYWRkcyBvbmUsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgYmFjayBpbiByZWdp
c3RlciBzcmNEc3QuCisKIF9sbGludF9vcF9wcmVfaW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIElu
dDMyVGFnLCAub3BQcmVJbmNTbG93Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDEKLSAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKLSAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENd
LCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ0lk
PHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93ICAgICAgICAvLyBpZiAoY2ZyW3JlZ0lkPHQw
Pl0uVGFnICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MT4gPSBj
ZnJbcmVnSWQ8dDA+XS5QYXlsb2FkOworICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgrK3Jlc3VsdDx0MT4gb3Zlcmxv
d3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZCA9IHJlc3Vs
dDx0MT47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQcmVJbmNTbG93Ogot
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCi0gICAgZGlzcGF0Y2go
MikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKSAgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9wcmVfaW5jOworICAgIGRpc3BhdGNoKDIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogcHJlX2RlYyBzcmNEc3RSZWdJZAorLy8gZnVu
Y3Rpb246IGNmcltzcmNEc3RSZWdJZF0gPSAtLWNmcltzcmNEc3RSZWdJZF07CisvLworLy8gICBD
b252ZXJ0cyByZWdpc3RlciBzcmNEc3QgdG8gbnVtYmVyLCBzdWJ0cmFjdHMgb25lLCBhbmQgcHV0
cyB0aGUgcmVzdWx0CisvLyAgIGJhY2sgaW4gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3Bf
cHJlX2RlYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwotICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0gICAgYnN1YmlvIDEsIHQxLCAu
b3BQcmVEZWNTbG93Ci0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJ
ZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVj
U2xvdyAgICAgICAgLy8gaWYgKGNmcltyZWdJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAu
c2xvdzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyByZXN1bHQ8dDE+ID0gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZDsKKyAg
ICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoLS1yZXN1bHQ8dDE+IG92ZXJsb3dzKSBnb3RvIC5zbG93OworICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltyZWdJZDx0MD5dLlBheWxvYWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKIAogLm9wUHJlRGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9wcmVfZGVjKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHJlX2RlYykgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3Bh
dGhfcHJlX2RlYzsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNv
ZGU6IHBvc3RfaW5jIGRzdFJlZ0lkIHNyY0RzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJl
Z0lkXSA9IGNmcltzcmNEc3RSZWdJZF0rKzsKKy8vCisvLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNy
Y0RzdCB0byBudW1iZXIuIFRoZSBudW1iZXIgaXRzZWxmIGlzCisvLyAgIHdyaXR0ZW4gdG8gcmVn
aXN0ZXIgZHN0LCBhbmQgdGhlIG51bWJlciBwbHVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sg
dG8gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcG9zdF9pbmM6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93Ci0gICAg
YmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKLSAgICBtb3ZlIHQyLCB0MwotICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdElu
Y1Nsb3cKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0Rz
dFJlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cgICAg
ICAgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAg
ICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBvbGRQYXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0Miwg
dDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3
UGF5bG9hZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJ
bmNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKytuZXdQYXlsb2Fk
PHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFn
ID0gSW50MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxv
YWQ8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQz
PjsKIC5vcFBvc3RJbmNEb25lOgotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogCiAub3BQb3N0SW5jU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9wb3N0X2luYykKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3Bvc3RfaW5jKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19w
YXRoX3Bvc3RfaW5jOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRl
Y29kZTogcG9zdF9kZWMgZHN0UmVnSWQgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0
UmVnSWRdID0gY2ZyW3NyY0RzdFJlZ0lkXS0tOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIg
c3JjRHN0IHRvIG51bWJlci4gVGhlIG51bWJlciBpdHNlbGYgaXMKKy8vICAgd3JpdHRlbiB0byBy
ZWdpc3RlciBkc3QsIGFuZCB0aGUgbnVtYmVyIG1pbnVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJh
Y2sgdG8gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcG9zdF9kZWM6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93Ci0g
ICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDIKLSAgICBtb3ZlIHQyLCB0MwotICAgIGJzdWJpbyAxLCB0MywgLm9wUG9z
dERlY1Nsb3cKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3Ny
Y0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07Cisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cg
ICAgICAgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsK
KyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0
MiwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBv
c3REZWNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1uZXdQYXls
b2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0u
VGFnID0gSW50MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBh
eWxvYWQ8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmcltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2Fk
PHQzPjsKIC5vcFBvc3REZWNEb25lOgotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0RGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wb3N0X2RlYykKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVjKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xv
d19wYXRoX3Bvc3RfZGVjOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBi
eXRlY29kZTogdG9fanNudW1iZXIgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJb
ZHN0UmVnSWRdID0gTnVtYmVyKGNmcltkc3RSZWdJZF0pOworLy8KKy8vICAgQ29udmVydHMgcmVn
aXN0ZXIgc3JjIHRvIG51bWJlciwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3Rl
ciBkc3QuCisKIF9sbGludF9vcF90b19qc251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQotICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVt
YmVySXNJbnQKLSAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cK
KyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQ
Q10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDAsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc3JjSWQ8dDA+ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQzPik7CisgICAgYmllcSB0Miwg
SW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludCAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KHRhZzx0Mj4gPT0gSW50MzJUYWcpIGdvdG8gLmlzSW50OworICAgIGJpYWVxIHQyLCBFbXB0eVZh
bHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdyAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWdu
ZWQpdGFnPHQyPiA+PSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5zbG93OwogLm9wVG9Kc251bWJlcklz
SW50OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
ZnJbZHN0SWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlBh
eWxvYWQgPSBwYXlsb2FkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5v
cFRvSnNudW1iZXJTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX2pz
bnVtYmVyKQotICAgIGRpc3BhdGNoKDMpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfdG9fanNudW1iZXIpICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfdG9fanNu
dW1iZXI7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBu
ZWdhdGUgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gLWNm
cltzcmNSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmMgdG8gbnVtYmVyLCBu
ZWdhdGVzIGl0LCBhbmQgcHV0cyB0aGUKKy8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KKwog
X2xsaW50X29wX25lZ2F0ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10s
IHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwg
dDEsIHQyKQotICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50Ci0gICAg
YnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwotICAgIG5lZ2kgdDIKLSAgICBzdG9y
ZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+
ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQzPiA9IG9wZXJhbmRzW2Rz
dFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQwPiA9PT4g
dGFnPHQxPiwgcGF5bG9hZDx0Mj4pOworICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRl
U3JjTm90SW50ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IEludDMyVGFn
KSBnb3RvIC5zcmNOb3RJbnQ7CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xv
dyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKChwYXlsb2FkPHQyPiAmIDB4N2ZmZmZm
ZmYpID09IDApIGdvdG8gLnNsb3c7IC8vIGlmIChpcyAwIG9yIElOVF9NSU4pIC4uLgorICAgIG5l
Z2kgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBheWxvYWQ8dDI+ID0gLXBheWxvYWQ8dDI+OworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5d
LlRhZyA9IEludDMyVGFnOworICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwYXls
b2FkPHQyPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BOZWdhdGVTcmNOb3RJ
bnQ6Ci0gICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKLSAgICB4b3JpIDB4ODAw
MDAwMDAsIHQxCi0gICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGJp
YSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlmICgodW5zaWduZWQpdGFnPHQxPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAv
LyBXZSBoYXZlIGFuIHVuYm94ZWQgZG91YmxlLCBqdXN0IGludmVydCBpdHMgc2lnbiBiaXQ6Cisg
ICAgeG9yaSAweDgwMDAwMDAwLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaGlnaFdvcmQ8dGFnPHQxPj4uc2lnbkJpdCA9ICFoaWdoV29yZDx0YWc8dDE+Pi5z
aWduQml0OworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IHRhZzx0MT47CisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDI+OworICAgIGRpc3BhdGNoKDMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKIAogLm9wTmVnYXRlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9uZWdhdGUpCi0gICAgZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9uZWdhdGUpICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3df
cGF0aF9uZWdhdGU7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGJp
bmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRp
b24sIHNsb3dQYXRoKQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAK
LSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFO
b3RJbnQKLSAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKLSAgICBsb2FkaSA0W1BD
XSwgdDIKLSAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQy
KQotICAgIGRpc3BhdGNoKDUpCisgICAgLy8gbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRl
Z2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKKyAgICBs
b2FkaSAxMltQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwg
dDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8
dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNyYzJJZDx0Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0MT4pOworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApICAgICAgICAgICAgICAgICAgICAgIC8vIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2Fk
MTx0MD4pOworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSBJbnQzMlRhZykgZ290byAub3AxTm90
SW50OworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJbnQzMlRhZykgZ290byAub3AyTm90SW50
OworICAgIC8vIG9wMSBhbmQgb3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24s
IGFuZCBlbmQuCisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpICAgICAgICAg
ICAgIC8vIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBw
YXlsb2FkMTx0MD4sIC5zbG93LCB0Mik7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
CiAub3AxTm90SW50OgotICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBp
bnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KLSAgICBiaWEgdDIsIExv
d2VzdFRhZywgLnNsb3cKLSAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJs
ZQotICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKLSAgICBjaTJkIHQxLCBmdDEKLSAgICBq
bXAgLm9wMU5vdEludFJlYWR5CisgICAgLy8gRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEg
dDIsIExvd2VzdFRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAoKHVuc2lnbmVkKXRhZzE8dDI+ID4gTG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIC8v
IG9wMSBpcyBpbnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyA/Pz86IGNoZWNrIG9wMi4KKyAgICBi
aWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZSAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAoKHVuc2lnbmVkKXRhZzI8dDM+IDwgTG93ZXN0VGFnKSBnb3RvIC5vcDFOb3RJbnRP
cDJEb3VibGU7CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKCF0YWcyPHQzPiAhPSBJbnQzMlRhZykgZ290byAuc2xv
dzsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50MzI6IGNvbnZl
cnQgb3AyIHRvIGRvdWJsZS4KKyAgICBjaTJkIHQxLCBmdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2Fk
Mjx0MT4pOworICAgIGptcCAub3AxTm90SW50UmVhZHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gLm9wMU5vdEludFJlYWR5OwogLm9wMU5vdEludE9wMkRv
dWJsZToKLSAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIC8vIG9wMSBpcyBpbnQtZW5jb2RlZC1k
b3VibGUsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6IGNvbnZlcnQgb3AyIHRvIGRvdWJsZS4K
KyAgICBmaWkyZCB0MSwgdDMsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsK
IC5vcDFOb3RJbnRSZWFkeToKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBmaWkyZCB0MCwgdDIs
IGZ0MAotICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBzdG9yZWQgZnQwLCBbY2Zy
LCB0MSwgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIC8vIG9wMSBpcyBpbnQtZW5jb2RlZC1kb3Vi
bGUsIG9wMiBpcyBkb3VibGU6CisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVn
SWRdOworICAgIGZpaTJkIHQwLCB0MiwgZnQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG9wMURibDxmdDA+ID0gRG91YmxlKHBheWxvYWQxPHQwPiwgdGFnMTx0
Mj4pOworICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHJlc3VsdERibDxmdDA+ID0gZG91YmxlT3BlcmF0aW9uKG9wMkRibDxm
dDE+LCBvcDFEYmw8ZnQwPik7CisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uRG91YmxlID0gcmVz
dWx0RGJsPGZ0MD47CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3AyTm90SW50
OgotICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBv
cGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgotICAgIGxvYWRpIDRbUENdLCB0MgotICAgIGJpYSB0
MywgTG93ZXN0VGFnLCAuc2xvdwotICAgIGNpMmQgdDAsIGZ0MAotICAgIGZpaTJkIHQxLCB0Mywg
ZnQxCi0gICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQotICAgIHN0b3JlZCBmdDAsIFtjZnIs
IHQyLCA4XQotICAgIGRpc3BhdGNoKDUpCisgICAgLy8gRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0
ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxv
YWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBiaWEgdDMsIExvd2VzdFRh
ZywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHVuc2ln
bmVkKXRhZzI8dDM+ID4gTG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIC8vIG9wMSBpcyBpbnQz
Miwgb3AyIGlzIGludC1lbmNvZGVkLWRvdWJsZToKKyAgICBjaTJkIHQwLCBmdDAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERv
dWJsZShwYXlsb2FkMTx0MD4pOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGZpaTJkIHQx
LCB0MywgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9w
MkRibDxmdDE+ID0gRG91YmxlKHBheWxvYWQyPHQxPiwgdGFnMjx0Mz4pOworICAgIGRvdWJsZU9w
ZXJhdGlvbihmdDEsIGZ0MCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJl
c3VsdERibDxmdDA+ID0gZG91YmxlT3BlcmF0aW9uKG9wMkRibDxmdDE+LCBvcDFEYmw8ZnQwPik7
CisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uRG91YmxlID0gcmVzdWx0RGJsPGZ0MD47CisgICAg
ZGlzcGF0Y2goNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAuc2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoc2xv
d1BhdGgpCi0gICAgZGlzcGF0Y2goNSkKKyAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3cgcGF0aDsKKyAgICBk
aXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisgICAgLy8gfSBFTkQgbWFjcm8gYmluYXJ5T3BDdXN0
b21TdG9yZS4gCiBlbmQKIAogbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91Ymxl
T3BlcmF0aW9uLCBzbG93UGF0aCkKKyAgICAvLyBtYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0
aW9uLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKSB7CiAgICAgYmluYXJ5T3BDdXN0b21TdG9y
ZSgKICAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCi0g
ICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQotICAgICAgICAg
ICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAg
IHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAg
Ly8gbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKKyAgICAgICAg
ICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpICAgICAgICAgICAgICAgICAv
LyAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpOworICAgICAgICAgICAgc3Rv
cmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0gICAgICAgICAgIC8vICAgY2Zy
W2luZGV4XS5UYWcgPSBpbnQzMlRhZzsKKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAgICAvLyAgIGNmcltpbmRleF0uUGF5bG9hZCA9
IHJpZ2h0OworICAgICAgICAgICAgLy8gfSBFTkQgbWFjcm8uCiAgICAgICAgIGVuZCwKLSAgICAg
ICAgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBz
bG93UGF0aCkgLy8gICBiaW5hcnlPcEN1c3RvbVN0b3JlKCk7CisgICAgLy8gfSBFTkQgbWFjcm8g
YmluYXJ5T3AuCiBlbmQKIAorLy8gYnl0ZWNvZGU6IGFkZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3Jj
MlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMyUmVnSWRdICsgY2Zy
W3NyYzFSZWdJZF07CisvLworLy8gICBBZGRzIHJlZ2lzdGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNy
YzIsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LiAoSlMgYWRkIG1h
eSBiZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBvcgorLy8gICBudW1lcmljIGFkZCwgZGVwZW5kaW5n
IG9uIHRoZSB0eXBlcyBvZiB0aGUgb3BlcmFuZHMuKQorCiBfbGxpbnRfb3BfYWRkOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaW5hcnlPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRo
X2FkZCkKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgYmFk
ZGlvIGxlZnQsIHJpZ2h0LCBzbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYg
KChyaWdodCArPSBsZWZ0KSBvdmVyZmxvd3MpIGdvdG8gc2xvdzsKKyAgICAgICAgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAgICAgICAgICBhZGRkIGxlZnQsIHJpZ2h0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByaWdodCA9IGxlZnQgKyByaWdo
dDsKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2FkZCkgLy8gYmluYXJ5
T3AoImJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyIsICJhZGRkIGxlZnQsIHJpZ2h0IiwgX2xsaW50
X3Nsb3dfcGF0aF9hZGQpIHsKKyAgICAvLyB9IC8vIEVORCBiaW5hcnlPcCgpCisKIAorLy8gYnl0
ZWNvZGU6IG11bCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2Zy
W2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVnSWRdICogY2ZyW3NyYzJSZWdJZF0KKy8vCisvLyAgIE11
bHRpcGxpZXMgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvCisv
LyAgIG51bWJlcnMpLCBhbmQgcHV0cyB0aGUgcHJvZHVjdCBpbiByZWdpc3RlciBkc3QuCiAKIF9s
bGludF9vcF9tdWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQot
ICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2Ug
Y2FuIHJldXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4K
LSAgICAgICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJtdWxpbyBsZWZ0
LCBzY3JhdGNoLCBzbG93Ci0gICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQotICAgICAg
ICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93
CisgICAgICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkgeworICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0
ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3Jh
dGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY3JhdGNoID0gcmlnaHQ7CisgICAg
ICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAoKHNjcmF0Y2ggKj0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgICAg
ICBidGlueiBzY3JhdGNoLCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
c2NyYXRjaCAhPSAwKSBnb3RvIC5kb25lOworICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGxlZnQgPCAwKSBnb3RvIC5zbG93
OworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkgZ290byAuc2xvdzsKICAgICAgICAgLmRvbmU6Ci0gICAg
ICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAg
ICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAg
ICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgIC8v
IGNmcltpbmRleF0uVGFnID0gSW50MzJUYWc7CisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSAgICAvLyBjZnJbaW5kZXhdLlBheWxvYWQgPSBz
Y3JhdGNoOworICAgICAgICAgICAgLy8gfSBFTkQgbWFjcm8uCiAgICAgICAgIGVuZCwKLSAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9tdWwpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkKKyAgICAgICAg
ICAgIG11bGQgbGVmdCwgcmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJp
Z2h0ID0gbGVmdCAqIHJpZ2h0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3Bh
dGhfbXVsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW5hcnlPcEN1c3RvbVN0
b3JlKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9tdWwpOworCiAKKy8vIGJ5dGVjb2RlOiBzdWIgZHN0
UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBj
ZnJbc3JjMVJlZ0lkXSAtIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgU3VidHJhY3RzIHJlZ2lz
dGVyIHNyYzIgKGNvbnZlcnRlZCB0byBudW1iZXIpIGZyb20gcmVnaXN0ZXIKKy8vICAgc3JjMSAo
Y29udmVydGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZSBkaWZmZXJlbmNlIGluCisvLyAgIHJl
Z2lzdGVyIGRzdC4KIAogX2xsaW50X29wX3N1YjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
YmluYXJ5T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQs
IHJpZ2h0LCBzbG93IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQs
IHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xv
dyAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKChyaWdodCAtPSBsZWZ0KSBvdmVyZmxv
d3MpIGdvdG8gc2xvdzsKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
CisgICAgICAgICAgICBzdWJkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIHJpZ2h0ID0gcmlnaHQgLSBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9s
bGludF9zbG93X3BhdGhfc3ViKSAvLyBiaW5hcnlPcCguLi4sIF9sbGludF9zbG93X3BhdGhfc3Vi
KSB7CisgICAgLy8gfSAvLyBFTkQgYmluYXJ5T3AoKQogCiAKKy8vIGJ5dGVjb2RlOiBkaXYgZHN0
UmVnSWQgZGl2aWRlbmRSZWdJZCBkaXZpc29yUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gY2ZyW2RpdmlkZW5kUmVnSWRdIC8gY2ZyW2Rpdmlzb3JSZWdJZF07CisvLworLy8gICBE
aXZpZGVzIHJlZ2lzdGVyIGRpdmlkZW5kIChjb252ZXJ0ZWQgdG8gbnVtYmVyKSBieSB0aGUKKy8v
ICAgcmVnaXN0ZXIgZGl2aXNvciAoY29udmVydGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZQor
Ly8gICBxdW90aWVudCBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9kaXY6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChp
bnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgY2kyZCBsZWZ0
LCBmdDAKLSAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQotICAgICAgICAgICAgZGl2ZCBmdDAs
IGZ0MQotICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAotICAgICAgICAgICAg
c3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0
b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgam1w
IC5kb25lCisgICAgICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93
LCBpbmRleCkgeworICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbGVmdERibDxmdDA+ID0gRG91YmxlKGxlZnQpOworICAgICAgICAg
ICAgY2kyZCByaWdodCwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmln
aHREYmw8ZnQxPiA9IERvdWJsZShyaWdodCk7CisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQxPiA9IHJpZ2h0
RGJsPGZ0MD4gLyBsZWZ0RGJsPGZ0MT47CisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAu
bm90SW50ICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8cmlnaHQ+ID0gSW50KHJlc3Vs
dERibDxmdDE+KSBpZiAoKGRvdWJsZSkoaW50KXJlc3VsdERibCA9IHJlc3VsdERibCkgZWxzZSBn
b3RvIC5ub3RJbnQ7CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSAgICAgICAvLyBjZnJbaW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAg
ICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgLy8gY2Zy
W2luZGV4XS5QYXlsb2FkID0gcmlnaHQ7CisgICAgICAgICAgICBqbXAgLmRvbmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIC5kb25lOwogICAgICAgICAubm90
SW50OgotICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAg
ICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0gICAgICAgICAgICAgICAgICAgICAvLyBjZnJb
aW5kZXhdLkRvdWJsZSA9IHJlc3VsdERibDxmdDE+OwogICAgICAgICAuZG9uZToKKyAgICAgICAg
ICAgIC8vIEVORCBtYWNyby4KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpCisgICAgICAgICAgICBkaXZkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByaWdodCA9IHJpZ2h0IC8gbGVmdDsKICAgICAgICAgZW5kLAotICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX2RpdikKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9kaXYpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeU9wQ3VzdG9tU3RvcmUoLi4uLCBfbGxpbnRfc2xv
d19wYXRoX2Rpdik7CiAKIAogbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5j
ZSkKLSAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQwLCB0MiwgdDApCi0gICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwotICAgIGJpbmVx
IHQyLCBJbnQzMlRhZywgLnNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBvcGVyYXRpb24o
dDEsIHQwLCAuc2xvdykKLSAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKGFkdmFu
Y2UpCisgICAgLy8gbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkgewor
ICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklk
PHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgIC8vIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAvLyBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8
dDA+KQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgLy8g
aWYgKHRhZzI8dDM+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFn
KSBnb3RvIC5zbG93OworICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIG9wZXJhdGlvbih0
MSwgdDAsIC5zbG93KSAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlv
bihwYXlsb2FkMjx0MT4sIHBheWxvYWQxPHQwPiwgLnNsb3cpOworICAgIHN0b3JlaSB0MywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gdGFn
Mjx0Mz47CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAv
LyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaChhZHZh
bmNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAog
LnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKGFkdmFuY2Up
CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
IHNsb3dQYXRoOworICAgIGRpc3BhdGNoKGFkdmFuY2UpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworICAgIC8vIEVORCBtYWNybyBtYWNybyBiaXRPcC4K
IGVuZAogCisKKy8vIGJ5dGVjb2RlOiBsc2hpZnQgZHN0UmVnSWQgdmFsUmVnSWQgc2hpZnRSZWdJ
ZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBJbnQzMihjZnJbdmFsUmVnSWRdKSA8PCBj
ZnJbc2hpZnRSZWdJZF0pOworLy8KKy8vICAgUGVyZm9ybXMgbGVmdCBzaGlmdCBvZiByZWdpc3Rl
ciB2YWwgKGNvbnZlcnRlZCB0byBpbnQzMikgYnkKKy8vICAgcmVnaXN0ZXIgc2hpZnQgKGNvbnZl
cnRlZCB0byB1aW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRz
dC4KKwogX2xsaW50X29wX2xzaGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3Ao
Ci0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGxzaGlm
dGkgbGVmdCwgcmlnaHQgICAgICAgICAvLyByaWdodCA9IChyaWdodCA8PCBsZWZ0KTsKKyAgICAg
ICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwKLSAgICAgICAgNCkKKyAg
ICAgICAgNCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwgNCkgeworICAg
IC8vIH0gLy8gRU5EIGJpdE9wKCkKIAogCisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZh
bFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbFJl
Z0lkXSA+PiBjZnJbc2hpZnRSZWdJZF07CisvLworLy8gICBQZXJmb3JtcyBhcml0aG1ldGljIHJp
Z2h0IHNoaWZ0IG9mIHJlZ2lzdGVyIHZhbCAoY29udmVydGVkCisvLyAgIHRvIGludDMyKSBieSBy
ZWdpc3RlciBzaGlmdCAoY29udmVydGVkIHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSBy
ZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBy
c2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KQorICAgICAgICAgICAgcnNoaWZ0aSBsZWZ0LCByaWdodCAgICAgICAgIC8vIHJpZ2h0ID0gKHJp
Z2h0ID4+IGxlZnQpOworICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNo
aWZ0LAotICAgICAgICA0KQorICAgICAgICA0KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3Bh
dGhfcnNoaWZ0LCA0KSB7CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQogCisvLyBieXRlY29kZTog
cnNoaWZ0IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOgorLy8KKy8v
ICAgUGVyZm9ybXMgbG9naWNhbCByaWdodCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRl
ZAorLy8gICB0byB1aW50MzIpIGJ5IHJlZ2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8KKy8vICAg
dWludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9v
cF91cnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KQotICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQK
LSAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgICAgIHVyc2hpZnRpIGxl
ZnQsIHJpZ2h0ICAgICAgICAvLyByaWdodCA9ICgodW5zaWduZWQpcmlnaHQgPj4gbGVmdCk7Cisg
ICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93ICAgICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkg
Z290byBzbG93OwogICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlm
dCwKLSAgICAgICAgNCkKKyAgICAgICAgNCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRo
X3Vyc2hpZnQsIDQpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCiAKIAorLy8gYnl0ZWNvZGU6
IGJpdGFuZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2Rz
dFJlZ0lkXSA9IGNmcltzcmMxUmVnSWRdICYgY2ZyW3NyYzJSZWdJZF07CisvLworLy8gICBDb21w
dXRlcyBiaXR3aXNlIEFORCBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisv
LyAgIGFuZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUg
cmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2JpdGFuZDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykKKyAgICAgICAgICAgIGFuZGkgbGVmdCwgcmlnaHQgICAgICAgICAgICAvLyByaWdodCA9
IChyaWdodCAmIGxlZnQpOworICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhf
Yml0YW5kLAotICAgICAgICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93
X3BhdGhfYml0YW5kLCA1KSB7CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQorCiAKKy8vIGJ5dGVj
b2RlOiBiaXR4b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSBeIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAg
Q29tcHV0ZXMgYml0d2lzZSBYT1Igb2YgcmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMy
KQorLy8gICBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMg
dGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9iaXR4b3I6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpCisgICAgICAgICAgICB4b3JpIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmln
aHQgPSAocmlnaHQgXiBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19w
YXRoX2JpdHhvciwKLSAgICAgICAgNSkKKyAgICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRf
c2xvd19wYXRoX2JpdHhvciwgNSkgeworICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKIAogCisvLyBi
eXRlY29kZTogYml0b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJRAorLy8gZnVuY3Rpb246
IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSB8IGNmcltzcmMyUmVnSWRdOworLy8KKy8v
ICAgQ29tcHV0ZXMgYml0d2lzZSBPUiBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50
MzIpCisvLyAgIGFuZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0
cyB0aGUKKy8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2JpdG9yOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpCisgICAgICAgICAgICBvcmkgbGVmdCwgcmlnaHQgICAgICAgICAgICAgLy8gcmln
aHQgPSAocmlnaHQgfCBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19w
YXRoX2JpdG9yLAotICAgICAgICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9z
bG93X3BhdGhfYml0b3IsIDUpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0
ZWNvZGU6IGNoZWNrX2hhc19pbnN0YW5jZSBjb25zdHJ1Y3RvclJlZ0lkCisvLyBmdW5jdGlvbjog
YXNzZXJ0KHR5cGVvZiBjZnJbY29uc3RydWN0b3JSZWdJZF0uSGFzSW5zdGFuY2UgPT0gImZ1bmN0
aW9uIik7CisvLworLy8gICBDaGVjayAnY29uc3RydWN0b3InIGlzIGFuIG9iamVjdCB3aXRoIHRo
ZSBpbnRlcm5hbCBwcm9wZXJ0eQorLy8gICBbSGFzSW5zdGFuY2VdIChpLmUuIGlzIGEgZnVuY3Rp
b24gLi4uICpzaGFrZXMgaGVhZCBzYWRseSBhdAorLy8gICBKU0MgQVBJKikuIFJhaXNlcyBhbiBl
eGNlcHRpb24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90CisvLyAgIGEgdmFsaWQgcGFy
YW1ldGVyIGZvciBpbnN0YW5jZW9mLgogCiBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VT
bG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Ci0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3RvcklkPHQxPiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9y
UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0
MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKGNvbnN0cnVjdG9ySWQ8dDE+LCBDZWxsVGFnLCBvYmo8dDA+LCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdyk7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4u
c3RydWN0dXJlOworICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
ICAvLyBpZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UpIGdvdG8gLnNsb3c7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2U7CisgICAgZGlz
cGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBpbnN0
YW5jZW9mIGRzdFJlZ0lkIHZhbHVlUmVnSWQgY29uc3RydWN0b3JSZWdJZCBjb25zdHJ1Y3RvclBy
b3RvUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbHVlUmVnSWRdIGlu
c3RhbmNlb2YgY2ZyW2NvbnN0cnVjdG9yUmVnaWRdOworLy8KKy8vICAgVGVzdHMgd2hldGhlciBy
ZWdpc3RlciB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiByZWdpc3RlcgorLy8gICBjb25zdHJ1Y3Rv
ciwgYW5kIHB1dHMgdGhlIGJvb2xlYW4gcmVzdWx0IGluIHJlZ2lzdGVyCisvLyAgIGRzdC4gUmVn
aXN0ZXIgY29uc3RydWN0b3JQcm90byBtdXN0IGNvbnRhaW4gdGhlICJwcm90b3R5cGUiCisvLyAg
IHByb3BlcnR5IChub3QgdGhlIGFjdHVhbCBwcm90b3R5cGUpIG9mIHRoZSBvYmplY3QgaW4KKy8v
ICAgcmVnaXN0ZXIgY29uc3RydWN0b3IuIFRoaXMgbG9va3VwIGlzIHNlcGFyYXRlZCBzbyB0aGF0
CisvLyAgIHBvbHltb3JwaGljIGlubGluZSBjYWNoaW5nIGNhbiBhcHBseS4KKy8vCisvLyAgIFJh
aXNlcyBhbiBleGNlcHRpb24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90IGFuCisvLyAg
IG9iamVjdC4KIAogX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFu
Y2UgYmVoYXZpb3IuCisgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRl
ZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
ZGVwcmVjYXRlZC4KLSAgICBsb2FkaSAxMltQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xv
dwotICAgIAotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAgbG9hZGkgMTZbUENdLCB0
MAotICAgIGxvYWRpIDRbUENdLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRp
IDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgCi0gICAgIyBSZWdpc3RlciBzdGF0ZTogdDEg
PSBwcm90b3R5cGUsIHQyID0gdmFsdWUKLSAgICBtb3ZlIDEsIHQwCisgICAgbG9hZGkgMTJbUENd
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3Rv
clJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwg
dDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChjb25zdHJ1Y3RvcklkPHQxPiwgb2JqPHQwPik7Cisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4u
c3RydWN0dXJlOworICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xv
dyAvLyBpZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSBnb3RvIC5zbG93OworCisgICAgLy8gQWN0dWFsbHkgZG8gdGhlIHdvcmsu
CisgICAgbG9hZGkgMTZbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JQcm90b0lkPHQw
PiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9yUHJvdG9SZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNs
b3cpICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNv
bnN0cnVjdG9yUHJvdG9JZDx0MD4sIENlbGxUYWcsIHByb3RvT2JqPHQxPiwgLnNsb3cpOworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0Mj4gPSBwcm90b09iajx0
MT4uc3RydWN0dXJlOworICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cgICAgIC8vIGlmICgodW5z
aWduZWQpc3RydWN0dXJlPHQyPi50eXBlSW5mby50eXBlIDwgT2JqZWN0VHlwZSkgZ290byAuc2xv
dzsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZUlkPHQwPiA9IG9wZXJh
bmRzW3ZhbHVlUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpICAgICAgICAgICAgICAgICAgIC8vIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHZhbHVlSWQ8dDA+LCBDZWxsVGFnLCBvYmo8dDI+LCAu
c2xvdyk7CisKKyAgICAvLyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFs
dWUKKyAgICBtb3ZlIDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm90b1dhc0ZvdW5kPHQwPiA9
IHRydWU7CiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDIKLSAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFt0Ml0sIHQyCi0gICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRpbnog
dDIsIC5vcEluc3RhbmNlb2ZMb29wCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0s
IHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBzdHJ1Y3R1cmU8dDI+ID0gb2JqPHQyPi5zdHJ1Y3R1cmU7CisgICAgbG9hZGkgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICBvYmo8dDI+ID0gc3RydWN0dXJlPHQyPi5wcm90b3R5cGUuUGF5bG9h
ZDsKKyAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChvYmo8dDI+ID09IHBy
b3RvT2JqKSBnb3RvIC5kb25lOworICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
IChvYmo8dDI+ICE9IG51bGwpIGdvdG8gLmxvb3A7CiAKLSAgICBtb3ZlIDAsIHQwCisgICAgbW92
ZSAwLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSBmYWxzZTsKIC5v
cEluc3RhbmNlb2ZEb25lOgotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNw
YXRjaCg1KQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5d
LlRhZyA9IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Zy
W2RzdElkPHQzPl0uUGF5bG9hZCA9IHByb3RvV2FzRm91bmQ7CisgICAgZGlzcGF0Y2goNSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BJbnN0YW5jZW9mU2xvdzoK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3Bh
dGNoKDUpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhf
aW5zdGFuY2VvZjsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGlzX3VuZGVmaW5lZCBkc3RSZWdJZCBzcmNSZWdJ
ZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltzcmNSZWdJZF0gPT0g
InVuZGVmaW5lZCIpOworLy8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmlu
ZyBmb3Igc3JjIGFjY29yZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAidW5k
ZWZpbmVkIiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9s
bGludF9vcF9pc191bmRlZmluZWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhb
UENdLCB0MQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDEsIHQyLCB0MykKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsCi0gICAgY2llcSB0Miwg
VW5kZWZpbmVkVGFnLCB0MwotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxv
YWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQw
PiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MiwgdDMpICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9
PT4gdGFnPHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0gICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlRhZyA9IEJvb2xlYW5UYWc7
CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsICAgICAgICAgICAgLy8g
aWYgKHRhZzx0Mj4gPT0gQ2VsbFRhZykgZ290byAuY2VsbDsKKyAgICBjaWVxIHQyLCBVbmRlZmlu
ZWRUYWcsIHQzICAgICAgICAgICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0Mz4gPSAodGFn
PHQyPiA9PSBVbmRlZmluZWRUYWcpOworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dID0gaXNVbmRlZmluZWQ8dDM+Owor
ICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEKLSAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKLSAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSAgICAgICAgICAgICAgIC8vIHN0cnVjdHVy
ZTx0MT4gPSBwYXlsb2FkPHQzPi5zdHJ1Y3R1cmU7CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQx
ICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAoKHN0cnVjdHVyZTx0MT4udHlwZUluZm8uZmxhZ3MgJiBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSAhPSAwKTsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVk
PHQxPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGlzX2Jvb2xlYW4gZHN0
UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJb
c3JjUmVnSWRdID09ICJib29sZWFuIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhl
IHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1
bGVzIGlzICJib29sZWFuIiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBk
c3QuCiAKIF9sbGludF9vcF9pc19ib29sZWFuOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBs
b2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlVGFnKHQxLCB0MCkKLSAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MAotICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRz
W3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVRhZyhzcmNJZDx0MT4gPT0+IHRhZzx0MD4pOworICAgIGNpZXEgdDAsIEJvb2xlYW5U
YWcsIHQwICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzQm9vbGVhbjx0MD4gPSAodGFnPHQw
PiA9PSBCb29sZWFuVGFnKTsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0Mj5dLlBheWxvYWQgPSBpc0Jvb2xlYW48dDA+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisv
LyBieXRlY29kZTogaXNfbnVtYmVyIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2Zy
W2RzdFJlZ0lkXSA9ICh0eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAibnVtYmVyIik7CisvLworLy8g
ICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRv
CisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlzICJudW1iZXIiLCBhbmQgcHV0cyB0aGUgcmVz
dWx0CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2lzX251bWJlcjoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQy
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApCi0gICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGFkZGkgMSwgdDAKLSAgICBjaWIgdDAs
IExvd2VzdFRhZyArIDEsIHQxCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCi0gICAgZGlzcGF0Y2goMykKLQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAg
ICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJ
ZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRh
Zyh0MSwgdDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNS
ZWdJZDx0MT4gPT0+IHRhZzx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0gICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7Cisg
ICAgYWRkaSAxLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFn
PHQwPiArPSAxOworICAgIGNpYiB0MCwgTG93ZXN0VGFnICsgMSwgdDEgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlzTnVtYmVyPHQxPiA9ICgodW5zaWduZWQpdGFnPHQwPiA8IExvd2VzdFRhZyAr
IDEpOworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAg
IC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc051bWJlcjx0MT47CisgICAgZGlzcGF0Y2go
MykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOworCisKKy8vIGJ5dGVjb2RlOiBpc19zdHJpbmcgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJzdHJpbmci
KTsKKy8vCisvLyAgIERldGVybWluZXMgd2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBh
Y2NvcmRpbmcgdG8KKy8vICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInN0cmluZyIsIGFuZCBw
dXRzIHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfc3Ry
aW5nOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2Fk
aSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCi0gICAg
c3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGJpbmVxIHQwLCBD
ZWxsVGFnLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QzXSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBv
cGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5k
c1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNy
Y0lkPHQxPiA9PT4gdGFnPHQwPiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Zy
W2RzdElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9w
SXNTdHJpbmdOb3RDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8
dDA+ICE9IENlbGxUYWcpIGdvdG8gLm5vdENlbGw7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1
cmU8dDA+ID0gcGF5bG9hZDx0Mz4uc3RydWN0dXJlOworICAgIGNiZXEgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxICAgLy8gaXNTdHJp
bmc8dDE+ID0gKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc1N0cmluZzx0MT47Cisg
ICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BJc1N0cmluZ05vdENlbGw6
Ci0gICAgc3RvcmVwIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgz
KQorICAgIHN0b3JlcCAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IGZhbHNlOworICAg
IGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRT
dG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgLy8gbWFjcm86IGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0
YWcsIHBheWxvYWQpIHsKICAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZz
ZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgb2sgZW5kKQotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKLSAg
ICBsb2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0
b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCAt
IDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZz
ZXQsIDhdLCBwYXlsb2FkCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtv
YmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gc3RvcmFnZTxvYmplY3RBbmRTdG9yYWdlPiA9IG9iamVjdDxvYmplY3RBbmRTdG9yYWdl
Pi5vdXRPZkxpbmVTdG9yYWdlOworICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcgICAg
ICAgICAgIC8vIHRhZyA9IHN0b3JhZ2U8b2JqZWN0QW5kU3RvcmFnZT5bb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKHByb3BlcnR5T2Zmc2V0KV0uVGFnOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
LSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zm
c2V0LCA4XSwgcGF5bG9hZCAgIC8vIHBheWxvYWQgPSBzdG9yYWdlPG9iamVjdEFuZFN0b3JhZ2U+
W29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShwcm9wZXJ0eU9mZnNldCldLlBheWxvYWQ7CisgICAg
Ly8gfSBFTkQgbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwK
IGVuZAogCiBtYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0
LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCkBAIC05MzgsMzIgKzEyNzksNDQgQEAg
bWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZQogZW5kCiAKIG1hY3JvIHJl
c29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKLSAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgot
ICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCi0gICAgIyA4W1BDXSAgIFBy
b3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCi0gICAgIyAxMltQQ10g
IFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRv
ci4KLSAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRv
IDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAot
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQotICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKLSAg
ICBsb2FkaSAxNltQQ10sIHQxCi0gICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3du
Tm90RmluYWwodDEsIHQwLCB0MiwgdDMpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KLSAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCi0gICAgdmFsdWVQ
cm9maWxlKHQyLCB0MywgdDApCi1lbmQKKyAgICAvLyBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUs
IHNsb3cpIHsKKyAgICAvLyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAvLyA0W1BDXSAg
IERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAvLyA4W1BDXSAgIFByb3BlcnR5IGlkZW50
aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgLy8gMTJbUENdICBTdHJ1Y3R1cmUg
cG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgLy8g
MTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRl
Y29kZSBnZW5lcmF0b3IuCisgICAgLy8gLi4uCisgICAgLy8gb3JhY2xlQ2FjaGVJZFtQQ10gIE9m
ZnNldCBpbnRvIHRoZSBWYWx1ZVByb2ZpbGU6OmJ1Y2tldHMgdGhhdCB3aWxsIHN0b3JlIHRoZSBv
cmFjbGUgdmFsdWUgZm9yIHRoaXMgYnl0ZWNvZGUuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQwPiA9
IGNmci5Db2RlQmxvY2s7CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0s
IHQwICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0
MD4uZ2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBnbG9iYWxPYmplY3Q8
dDA+LnN0cnVjdHVyZTsKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3RydWN0dXJlPHQxPiAhPSBzdHJ1Y3R1cmVB
cmc8cGNbMTJdPikgZ290byAuc2xvdzsKKyAgICBsb2FkaSAxNltQQ10sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDE+ID0gb2Zmc2V0QXJn
W3BjWzE2XV0pOworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFs
KHQxLCB0MCwgdDIsIHQzKSAgIC8vIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5v
dEZpbmFsKG9mZnNldDx0MT4sIGdsb2JhbE9iamVjdDx0MD4gPT0+IHRhZzx0Mj4sIHBheWxvYWQ8
dDM+KTsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBwY1s0XTsKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8
dDA+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlBheWxvYWQgPSBw
YXlsb2FkPHQzPjsKKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJZDx0MD4gPSBwY1tvcmFjbGVDYWNoZUlkXTsK
KyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB2YWx1ZVByb2ZpbGUodGFnPHQyPiwgcGF5bG9hZDx0Mz4sIG9yYWNsZUlkPHQw
Pik7CisgICAgLy8gfSBFTkQgbWFjcm8gcmVzb2x2ZUdsb2JhbC4KK2VuZAorCisvLyBieXRlY29k
ZTogZHN0UmVnSWQgZ2xvYmFsT2JqZWN0KGMpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBv
ZmZzZXQobikgb3JhY2xlQ2FjaGVJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBnbG9i
YWxPYmplY3Rbb2Zmc2V0XTsKKy8vCisvLyAgIFBlcmZvcm1zIGEgZHluYW1pYyBwcm9wZXJ0eSBs
b29rdXAgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwgb24gdGhlIHByb3ZpZGVkCisvLyAgIGdsb2Jh
bCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUgbWF0Y2hlcyB0aGUgU3RydWN0dXJlIG9mIHRoZSBnbG9i
YWwgdGhlbiBwZXJmb3JtCisvLyAgIGEgZmFzdCBsb29rdXAgdXNpbmcgdGhlIGNhc2Ugb2Zmc2V0
LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIGEgZnVsbCByZXNvbHZlIGFuZAorLy8gICBjYWNoZSB0
aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zmc2V0CiAKIF9sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xv
YmFsU2xvdykKLSAgICBkaXNwYXRjaCg2KQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2
ZUdsb2JhbFNsb3cpICAvLyByZXNvbHZlR2xvYmFsKDYsIC5zbG93KTsKKyAgICBkaXNwYXRjaCg2
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAu
b3BSZXNvbHZlR2xvYmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9y
ZXNvbHZlX2dsb2JhbCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsKSAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZ2xv
YmFsOworICAgIGRpc3BhdGNoKDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiAjIEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAs
IHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVj
a3Mgb24gdGhlCkBAIC05NzEsNTQgKzEzMjQsNjkgQEAgX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFs
OgogIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBm
b3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKICMgdXNlIHQzLCBzbyB5b3UgY2Fu
IGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KIG1hY3JvIGdldFNjb3BlKGRlQnJ1aWppbklu
ZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKLSAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MAotICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAv
LyBtYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spIHsKKyAg
ICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MCAgICAgICAgICAgICAg
ICAgICAvLyBzY29wZU9iajx0MD4gPSBjZnIuU2NvcGVDaGFpbi5QYXlsb2FkOworICAgIGxvYWRp
IGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGRlQnJ1aWppbkluZGV4PHQyPiA9IFtkZUJydWlqaW5JbmRleE9wZXJhbmRdOwogICAgIAotICAg
IGJ0aXogdDIsIC5kb25lCisgICAgYnRpeiB0MiwgLmRvbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4PHQyPiA9PSAwKSBn
b3RvIC5kb25lOwogICAgIAotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQotICAgIGJpbmVx
IENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKLSAgICBidGJ6
IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
b2RlQmxvY2s8dDE+ID0gY2ZyLkNvZGVCbG9jazsKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29k
ZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wICAgICAgICAvLyBpZiAoY29kZUJsb2NrPHQx
Pi5jb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUpIGdvdG8gLmxvb3A7CisgICAgYnRieiBDb2RlQmxv
Y2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wICAgICAgICAgICAgLy8gaWYgKCFj
b2RlQmxvY2s8dDE+Lm5lZWRzRnVsbFNjb3BlQ2hhaW4pIGdvdG8gLmxvb3A7CiAgICAgCi0gICAg
bG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxICAgICAgICAgICAgICAgLy8g
YWN0aXZhdGlvblJlZzx0MT4gPSBjb2RlQmxvY2s8dDE+LmFjdGl2YXRpb25SZWdpc3RlcjsKIAot
ICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCi0gICAgYmll
cSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KLSAg
ICBzY29wZUNoZWNrKHQwLCB0MSkKLSAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0s
IHQwCisgICAgLy8gTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisg
ICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRp
b24gICAgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVnPHQxPl0uVGFnID09IEVtcHR5VmFsdWVUYWcp
IGdvdG8gLm5vQWN0aXZhdGlvbjsKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZUNoZWNrKHNjb3BlT2JqPHQwPiwg
YWN0aXZhdGlvblJlZzx0MT4pOworICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwg
dDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlT2JqPHQwPiA9IHNjb3BlT2JqPHQw
Pi5uZXh0OwogLm5vQWN0aXZhdGlvbjoKLSAgICBzdWJpIDEsIHQyCisgICAgc3ViaSAxLCB0MiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVCcnVp
amluSW5kZXg8dDI+LS07CiAgICAgCi0gICAgYnRpeiB0MiwgLmRvbmUKKyAgICBidGl6IHQyLCAu
ZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
ZGVCcnVpamluSW5kZXg8dDI+ID09IDApIGdvdG8gLmRvbmU7CiAubG9vcDoKLSAgICBzY29wZUNo
ZWNrKHQwLCB0MSkKLSAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCi0gICAg
c3ViaSAxLCB0MgotICAgIGJ0aW56IHQyLCAubG9vcAorICAgIHNjb3BlQ2hlY2sodDAsIHQxKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc2NvcGVDaGVjayhz
Y29wZU9iajx0MD4sIGFjdGl2YXRpb25SZWc8dDE+KTsKKyAgICBsb2FkcCBTY29wZUNoYWluTm9k
ZTo6bmV4dFt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHNjb3BlT2JqPHQw
PiA9IHNjb3BlT2JqPHQwPi5uZXh0OworICAgIHN1YmkgMSwgdDIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGVCcnVpamluSW5kZXg8dDI+LS07
CisgICAgYnRpbnogdDIsIC5sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4PHQyPiAhPSAwKSBnb3RvIC5sb29wOwogCiAu
ZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBnZXRTY29wZS4KIGVuZAogCisvLyBieXRlY29kZTog
cmVzb2x2ZV9za2lwIGRzdChyKSBnbG9iYWxPYmplY3QoYykgcHJvcGVydHkoaWQpIHN0cnVjdHVy
ZShzSUQpIG9mZnNldChuKSBvcmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogCisvLworLy8gICBQ
ZXJmb3JtcyBhIGR5bmFtaWMgcHJvcGVydHkgbG9va3VwIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHks
IG9uIHRoZSBwcm92aWRlZAorLy8gICBnbG9iYWwgb2JqZWN0LiAgSWYgc3RydWN0dXJlIG1hdGNo
ZXMgdGhlIFN0cnVjdHVyZSBvZiB0aGUgZ2xvYmFsIHRoZW4gcGVyZm9ybQorLy8gICBhIGZhc3Qg
bG9va3VwIHVzaW5nIHRoZSBjYXNlIG9mZnNldCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBhIGZ1
bGwgcmVzb2x2ZSBhbmQKKy8vICAgY2FjaGUgdGhlIG5ldyBzdHJ1Y3R1cmUgYW5kIG9mZnNldC4K
Ky8vICAgICAgICAgCisvLyAgIFRoaXMgd2Fsa3MgdGhyb3VnaCBuIGxldmVscyBvZiB0aGUgc2Nv
cGUgY2hhaW4gdG8gdmVyaWZ5IHRoYXQgbm9uZSBvZiB0aG9zZSBsZXZlbHMKKy8vICAgaW4gdGhl
IHNjb3BlIGNoYWluIGluY2x1ZGUgZHluYW1pY2FsbHkgYWRkZWQgcHJvcGVydGllcy4KKwogX2xs
aW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MwotICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBzcC5nbG9iYWxEYXRhOyAvLyBtbGFtIEZJ
WE1FIE5lZWQgU1Agc2V0dXAuCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3Ry
dWN0dXJlW3QzXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0
aXZhdGlvblN0cnVjdHVyZTx0Mz4gPSBnbG9iYWxEYXRhPHQzPi5hY3RpdmF0aW9uU3RydWN0dXJl
OwogICAgIGdldFNjb3BlKAogICAgICAgICAyMFtQQ10sCiAgICAgICAgIG1hY3JvIChzY29wZSwg
c2NyYXRjaCkKLSAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVd
LCBzY3JhdGNoCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hd
LCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKLSAgICAgICAgZW5kKQotICAg
IHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQotICAgIGRpc3Bh
dGNoKDcpCisgICAgICAgIC8vIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgeworICAgICAgICAgICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG9iajxzY3JhdGNoPiA9IHNjb3BlLm9iamVjdDsKKyAgICAg
ICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1N1cGVyU2xvdyAgICAvLyBpZiAob2JqPHNjcmF0Y2g+LnN0cnVjdHVyZSAh
PSBhY3RpdmF0aW9uU3RydWN0dXJlPHQzPikgZ290byAuc3VwZXJTbG93OworICAgICAgICAvLyB9
IEVORCBtYWNyby4KKyAgICAgICAgZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRTY29wZShv
cGVyYW5kc1tvZmZzZXRdLCAuLi4pOworICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUds
b2JhbER5bmFtaWNTbG93KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHJlc29sdmVHbG9iYWwoNywgLnNsb3cpOworICAgIGRpc3BhdGNoKDcpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNs
b3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKLSAgICBkaXNwYXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpICAgICAgICAg
ICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWM7CisgICAgZGlzcGF0Y2goNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKLSAgICBkaXNwYXRjaCg3KQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogCiAKIF9sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKQEAgLTE1NDUsMzIg
KzE5MTMsNjIgQEAgX2xsaW50X29wX25ld19mdW5jOgogLm9wTmV3RnVuY0RvbmU6CiAgICAgZGlz
cGF0Y2goNCkKIAorbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uQnlDYWxsZWUoY2FsbGVlKQorICAg
IGlmIENfTE9PUAorICAgICAgICBjeHhDYWxsSlNGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUYXJnZXQgaXMgaW4gdGhlIENhbGxGcmFtZS4KKyAg
ICBlbHNlCisgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgIC8vIFJlbG9hZCB0aGUgcmV0dXJu
IFBDIGZyb20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJlOgorICAgICAgICAvLyBw
YyA9IGNmci5Bcmd1bWVudENvdW50LlRhZzsgIGdvdG8gKnBjOworICAgICAgICBkaXNwYXRjaEFm
dGVyQ2FsbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNw
YXRjaEFmdGVyQ2FsbCgpOworICAgIGVuZAorZW5kCisKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlv
bihjYWxsTGlua0luZm8pCisgICAgaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxKU0Z1bmN0aW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhcmdldCBpcyBp
biB0aGUgQ2FsbEZyYW1lLgorICAgIGVsc2UKKyAgICAgICAgY2FsbCBMTEludENhbGxMaW5rSW5m
bzo6bWFjaGluZUNvZGVUYXJnZXRbY2FsbExpbmtJbmZvXSAgICAgLy8gY2FsbCBjYWxsTGlua0lu
Zm8ubWFjaGluZUNvZGVUYXJnZXQ7CisgICAgICAgIC8vIFJlbG9hZCB0aGUgcmV0dXJuIFBDIGZy
b20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJlOgorICAgICAgICAvLyBwYyA9IGNm
ci5Bcmd1bWVudENvdW50LlRhZzsgIGdvdG8gKnBjOworICAgICAgICBkaXNwYXRjaEFmdGVyQ2Fs
bCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNwYXRjaEFm
dGVyQ2FsbCgpOworICAgIGVuZAorZW5kCiAKIG1hY3JvIGRvQ2FsbChzbG93UGF0aCkKLSAgICBs
b2FkaSA0W1BDXSwgdDAKLSAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAgbG9hZHAgTExJbnRDYWxs
TGlua0luZm86OmNhbGxlZVt0MV0sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKLSAgICBiaW5lcSB0MywgdDIsIC5vcENh
bGxTbG93Ci0gICAgbG9hZGkgMTJbUENdLCB0MwotICAgIGFkZHAgMjQsIFBDCi0gICAgbHNoaWZ0
aSAzLCB0MwotICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9m
IGNmcgotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCi0gICAgc3Rv
cmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0b3JlaSB0MCwgU2NvcGVD
aGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKLSAgICBz
dG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQotICAgIHN0b3JlcCBjZnIs
IENhbGxlckZyYW1lW3QzXQotICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRP
ZmZzZXRbdDNdCi0gICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KLSAg
ICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KLSAgICBtb3ZlIHQz
LCBjZnIKLSAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0K
LSAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgLy8gbWFjcm8gZG9DYWxsKHNsb3dQYXRoKSB7
CisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGZ1bmNJZDx0MD4gPSBwY1sxXTsKKyAgICBsb2FkaSAxNltQQ10sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbExpbmtJbmZvPHQxPiA9IHBjWzRdOworICAg
IGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MiAgICAgICAgICAgICAvLyBj
YWxsZWU8dDI+ID0gQ2FsbExpbmtJbmZvPHQxPi5jYWxsZWU7CisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykgLy8gbG9hZChmdW5j
SWQ8dDA+ID09PiBmdW5jPHQzPiwgLi4uKTsKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGZ1bmM8dDM+ICE9IGNhbGxlZTx0Mj4g
aS5lLiBpc0J5dGVjb2RlKCk/KSBnb3RvIC5zbG93OworICAgIGxvYWRpIDEyW1BDXSwgdDMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDM+ID0gcGNbM107CisK
KyAgICBhZGRwIDI0LCBQQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgKz0gMjQgaS5lLiBwb2ludCB0byB0aGUgcmV0dXJuIGFkZHJlc3MuCisKKyAgICAvLyBu
ZXdGcmFtZTx0Mz4gPSBjZnIgKyBvZmZzZXQ8dDM+IDw8IDM7ICAvLyBvZmZzZXQgPSBzaXplb2Yg
Y3VycmVudCBmcmFtZTsKKyAgICBsc2hpZnRpIDMsIHQzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gb2Zmc2V0PHQzPiA9IG9mZnNldDx0Mz4gPDwgMzsKKyAgICBhZGRw
IGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIgICAgLy8gbmV3RnJh
bWU8dDM+ID0gb2Zmc2V0PHQzPiArIGNmcjsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIG5ld0Zy
YW1lOgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwICAgICAgICAg
ICAgICAvLyBzY29wZTx0MD4gPSBjYWxsZWU8dDI+LnNjb3BlQ2hhaW47CisgICAgc3RvcmVpIHQy
LCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXSAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQz
Pi5DYWxsZWUuUGF5bG9hZCA9IGNhbGxlZTx0Mj47CisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWlu
ICsgUGF5bG9hZE9mZnNldFt0M10gICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5TY29wZUNoYWlu
LlBheWxvYWQgPSBzY29wZTx0MD47CisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIDx0Mj4gPSAuLi47CisgICAgc3RvcmVpIFBDLCBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0gICAgICAgICAgIC8vIGNmci5Bcmd1bWVudENvdW50
LlRhZyA9IHBjOyAvLyBTdGFzaCB0aGUgcmV0dXJuUEMuCisgICAgc3RvcmVwIGNmciwgQ2FsbGVy
RnJhbWVbdDNdICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5DYWxsZXJG
cmFtZSA9IGNmcjsKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W3QzXSAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkFyZ3VtZW50Q291bnQuUGF5bG9hZCA9IDx0Mj47
CisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10gICAgICAgICAgICAg
IC8vIG5ld0ZyYW1lPHQzPi5DYWxsZWUuVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10gICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNj
b3BlQ2hhaW4uVGFnID0gQ2VsbFRhZzsKKyAgICBtb3ZlIHQzLCBjZnIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gbmV3RnJhbWU8dDM+OworCisgICAgLy8g
Q2FsbCB0aGUgdGFyZ2V0IGFzIGlmIGl0J3MgYSBjb21waWxlZCBtZXRob2Q6CisgICAgIyBtbGFt
IGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSAgICAgICAvLyBj
YWxsIGNhbGxMaW5rSW5mbzx0MT4ubWFjaGluZUNvZGVUYXJnZXQ7CisgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsVGFyZ2V0RnVu
Y3Rpb24oY2FsbExpbmtJbmZvPHQxPik7CiAKIC5vcENhbGxTbG93OgotICAgIHNsb3dQYXRoRm9y
Q2FsbCg2LCBzbG93UGF0aCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgc2xvd1BhdGgpICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93UGF0aDsKKyAgICAvLyB9IEVORCBkb0NhbGwu
CiBlbmQKIAogCkBAIC0xNzE5LDYgKzIxMTcsOSBAQCBfbGxpbnRfb3BfZW5kOgogICAgIGRvUmV0
dXJuKCkKIAogCitpZiBDX0xPT1AKK2Vsc2UgIyBub3QgQ19MT09QCisKIF9sbGludF90aHJvd19m
cm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOgogICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBp
bnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50U2xvd1BhdGhzKSwgc28KICAgICAj
IHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdl
IGNvbWUgdG8gaGVyZS4KQEAgLTE3NzEsMTEgKzIxNzIsMTEgQEAgbWFjcm8gbmF0aXZlQ2FsbFRy
YW1wb2xpbmUoZXhlY3V0YWJsZU9mZgogICAgICAgICBlcnJvcgogICAgIGVuZAogICAgIGJpbmVx
IEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1ZVRhZywg
LmV4Y2VwdGlvbgotICAgIHJldAorICAgIHJldF9tbGFtCiAuZXhjZXB0aW9uOgogICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkgIyBUaGlzIGlzIHJlYWxseSBvbmx5IG5lZWRl
ZCBvbiBYODYKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF90aHJvd19mcm9tX25hdGl2ZV9jYWxsKQogICAgIGptcCBf
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQogZW5kCi0KK2VuZCAjIG5vdCBD
X0xPT1AKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMzMsMjcgKzMzLDM1IEBAIGNvbnN0IFZhbHVlVW5kZWZpbmVkICA9IFRhZ0JpdFR5cGVPdGhl
ciAKIGNvbnN0IFZhbHVlTnVsbCAgICAgICA9IFRhZ0JpdFR5cGVPdGhlcgogCiAjIFV0aWxpdGll
cy4KK21hY3JvIGp1bXBUb1BDKCkKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgY3h4TmV4dE9wY29k
ZQorICAgIGVsc2UKKyAgICAgICAgam1wIFtQQiwgUEMsIDhdICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKKyAgICBlbmQKK2VuZAorCiBtYWNybyBkaXNwYXRjaChhZHZhbmNl
KQotICAgIGFkZHAgYWR2YW5jZSwgUEMKLSAgICBqbXAgW1BCLCBQQywgOF0KKyAgICBhZGRwIGFk
dmFuY2UsIFBDICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OworICAgIGp1bXBUb1BDKCkKIGVuZAogCiBtYWNybyBkaXNwYXRjaEludChhZHZhbmNlKQogICAg
IGFkZGkgYWR2YW5jZSwgUEMKLSAgICBqbXAgW1BCLCBQQywgOF0KKyAgICBqdW1wVG9QQygpCiBl
bmQKIAogbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW1BCXSwgUEIKLSAgICBqbXAgW1BCLCBQQywg
OF0KKyAgICBqdW1wVG9QQygpCiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBh
cmcyKQotICAgIG1vdmUgYXJnMSwgdDUKLSAgICBtb3ZlIGFyZzIsIHQ0Ci0gICAgY2FsbCBmdW5j
dGlvbgorICAgIG1vdmUgYXJnMSwgdDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YXJnMSA9IC4uLjsKKyAgICBtb3ZlIGFyZzIsIHQ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGFyZzIgPSAuLi47CisgICAgY2FsbCBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb247CiBlbmQKIAogIyBUaGlzIGJhcmVseSB3b3Jr
cy4gYXJnMyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KQEAgLTcxLDgg
Kzc5LDggQEAgbWFjcm8gcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogZW5kCiAKIG1hY3JvIHJlc3Rv
cmVTdGF0ZUFmdGVyQ0NhbGwoKQotICAgIG1vdmUgdDAsIFBDCi0gICAgbW92ZSB0MSwgY2ZyCisg
ICAgbW92ZSB0MCwgUEMgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9u
PHQwPgorICAgIG1vdmUgdDEsIGNmciAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVj
U3RhdGU8dDE+CiAgICAgbW92ZSB0MywgUEIKICAgICBzdWJwIFBCLCBQQwogICAgIHVyc2hpZnRw
IDMsIFBDCkBAIC0xODAsNTggKzE4OCw4NiBAQCBlbmQKIAogIyBJbnN0cnVjdGlvbiBpbXBsZW1l
bnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisvLworLy8gICBJbml0aWFsaXplcyBsb2Nh
bCB2YXJpYWJsZXMgdG8gdW5kZWZpbmVkLiBJZiB0aGUgY29kZSBibG9jayByZXF1aXJlcworLy8g
ICBhbiBhY3RpdmF0aW9uLCBlbnRlcl93aXRoX2FjdGl2YXRpb24gaXMgdXNlZCBpbnN0ZWFkLgor
Ly8gICBUaGlzIG9wY29kZSBhcHBlYXJzIG9ubHkgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNvZGUg
YmxvY2suCisKIF9sbGludF9vcF9lbnRlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVCbG9jaz4gPSBj
ZnIuQ29kZUJsb2NrCiAgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MiAgICAg
IC8vIHQyPHNpemVfdD4gPSB0MjxDb2RlQmxvY2s+Lm1fbnVtVmFycwotICAgIGJ0aXogdDIsIC5v
cEVudGVyRG9uZQotICAgIG1vdmUgVmFsdWVVbmRlZmluZWQsIHQwCisgICAgYnRpeiB0MiwgLm9w
RW50ZXJEb25lICAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQyPiA9PSAwKSBnb3Rv
IC5kb25lOworICAgIG1vdmUgVmFsdWVVbmRlZmluZWQsIHQwICAgICAgICAgICAgICAgICAvLyBq
c1VuZGVmaW5lZDx0MD4gPSBVbmRlZmluZWQ7CiAub3BFbnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0
MgotICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCi0gICAgYnRpbnogdDIsIC5vcEVudGVyTG9v
cAorICAgIHN1YmkgMSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIG51bVZh
cnM8dDI+LS07CisgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgIC8v
ICAgY2ZyW251bVZhcnM8dDI+XSA9IGpzVW5kZWZpbmVkPHQwPjsKKyAgICBidGlueiB0MiwgLm9w
RW50ZXJMb29wICAgICAgICAgICAgICAgICAgLy8gaWYgKG51bVZhcnM8dDI+ICE9IDApIGdvdG8g
Lmxvb3A7CiAub3BFbnRlckRvbmU6Ci0gICAgZGlzcGF0Y2goMSkKKyAgICBkaXNwYXRjaCgxKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8v
IGJ5dGVjb2RlOiBjcmVhdGVfYWN0aXZhdGlvbiBkc3QocikKKy8vCisvLyAgIElmIHRoZSBhY3Rp
dmF0aW9uIG9iamVjdCBmb3IgdGhpcyBjYWxsZnJhbWUgaGFzIG5vdCB5ZXQgYmVlbiBjcmVhdGVk
LAorLy8gICB0aGlzIGNyZWF0ZXMgaXQgYW5kIHdyaXRlcyBpdCBiYWNrIHRvIGRzdC4KIAogX2xs
aW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2Fk
aXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIGJwbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVFbXB0eSwg
Lm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRpb25SZWc8dDA+ID0gb3BlcmFuZDxk
c3RSZWdJZD47CisgICAgYnBuZXEgW2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVhdGVB
Y3RpdmF0aW9uRG9uZSAvLyBpZiAoY2ZyW2FjdGl2YXRpb25SZWc8dDA+XSAhPSBFbXB0eSkgZ290
byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZh
dGlvbikgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uOwogLm9wQ3Jl
YXRlQWN0aXZhdGlvbkRvbmU6Ci0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgyKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKKwogCisvLyBieXRlY29kZTogaW5pdF9sYXp5X3JlZyBkc3QocikKKy8vCisvLyAgIElu
aXRpYWxpc2VzIGRzdChyKSB0byBKU1ZhbHVlKCkuCisvLyAgIFRoaXMgb3Bjb2RlIGFwcGVhcnMg
b25seSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KIAogX2xsaW50X29wX2luaXRf
bGF6eV9yZWc6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0s
IHQwCi0gICAgc3RvcmVwIFZhbHVlRW1wdHksIFtjZnIsIHQwLCA4XQotICAgIGRpc3BhdGNoKDIp
CisgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAgICAgICAgICAgICAgLy8gZHN0PHQwPiA9IG9w
ZXJhbmQ8ZHN0UmVnSWQ+OworICAgIHN0b3JlcCBWYWx1ZUVtcHR5LCBbY2ZyLCB0MCwgOF0gICAg
IC8vIGNmcltkc3Q8dDA+XSA9IEVtcHR5OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogY3JlYXRl
X2FyZ3VtZW50cyBkc3QocikKKy8vCisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVudHMnIG9iamVj
dCBhbmQgcGxhY2VzIGl0IGluIGJvdGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNhbGwgZnJhbWUg
c2xvdCBhbmQgdGhlIGxvY2FsICdhcmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBpZiBpdCBoYXMg
bm90IGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4KIAogX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVu
dHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCi0g
ICAgYnBuZXEgW2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVhdGVBcmd1bWVudHNEb25l
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKKyAg
ICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGRzdDx0MD4gPSBvcGVyYW5kPGRzdFJlZ0lkPjsKKyAgICBicG5lcSBbY2ZyLCB0MCwgOF0s
IFZhbHVlRW1wdHksIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUgIC8vIGlmIChjZnJbZHN0PHQwPl0g
IT0gRW1wdHkpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y3JlYXRlX2FyZ3VtZW50cykgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYXJndW1l
bnRzOwogLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3Bh
dGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBvcF9jcmVhdGVfdGhpcyB0aGlzKHIp
IHByb3RvKHIpCisvLworLy8gICBBbGxvY2F0ZSBhbiBvYmplY3QgYXMgJ3RoaXMnLCBmb3IgdXNl
IGluIGNvbnN0cnVjdGlvbi4KKy8vICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBh
dCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KIAogX2xsaW50X29wX2NyZWF0ZV90aGlz
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKLSAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQy
LCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGlzPHQwPiA9IGNmci5DYWxsZWU7CisgICAgbG9hZHAg
SlNGdW5jdGlvbjo6bV9jYWNoZWRJbmhlcml0b3JJRFt0MF0sIHQyICAgICAgIC8vIGluaGVyaXRv
cjx0Mj4gPSB0aGlzPHQwPi5jYWNoZWRJbmhlcml0b3JJRDsKKyAgICBidHB6IHQyLCAub3BDcmVh
dGVUaGlzU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGluaGVyaXRvciA9PSAw
KSBnb3RvIC5zbG93OworICAgIC8vIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0
U2l6ZUNsYXNzSW5kZXgsIGpzRmluYWxPYmplY3QuY2xhc3MsIHQyLCB0MCwgdDEsIHQzLCAub3BD
cmVhdGVUaGlzU2xvdyk7CiAgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RT
aXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0Miwg
dDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwg
dDEKLSAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpCisgICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXNJ
RDx0MT4gPSBvcGVyYW5kPHRoaXNSZWdJZD47CisgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwgOF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmclt0aGlzSUQ8dDE+XSA9IHRoaXM8dDA+
OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDIpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpICAgICAgICAgIC8v
IGNhbGwgc2xvd19wYXRoX2NyZWF0ZV90aGlzOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAog
X2xsaW50X29wX2NvbnZlcnRfdGhpczoKQEAgLTUwMiwxNiArNTM4LDE2IEBAIG1hY3JvIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGkKICAgICBicGFlcSB0MSwgdGFnVHlwZU51bWJl
ciwgLm9wMU5vdEludE9wMkludAogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAg
ICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorIyBtbGFtICAgIGZw
MmQgdDEsIGZ0MQogICAgIGptcCAub3AxTm90SW50UmVhZHkKIC5vcDFOb3RJbnRPcDJJbnQ6CiAg
ICAgY2kyZCB0MSwgZnQxCiAub3AxTm90SW50UmVhZHk6CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4
XSwgdDIKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQwCi0gICAgZnAyZCB0MCwgZnQwCisjIG1s
YW0gICAgZnAyZCB0MCwgZnQwCiAgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQotICAgIGZk
MnAgZnQwLCB0MAorIyBtbGFtICAgIGZkMnAgZnQwLCB0MAogICAgIHN1YnAgdGFnVHlwZU51bWJl
ciwgdDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDUpCkBAIC01
MjIsOSArNTU4LDkgQEAgbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aQog
ICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAgICAgY2kyZCB0MCwgZnQwCiAgICAg
YWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorIyBtbGFtICAgIGZwMmQg
dDEsIGZ0MQogICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBmZDJwIGZ0MCwgdDAK
KyMgbWxhbSAgICBmZDJwIGZ0MCwgdDAKICAgICBzdWJwIHRhZ1R5cGVOdW1iZXIsIHQwCiAgICAg
c3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCg1KQpAQCAtMTI5MCwxMCArMTMy
NiwxMCBAQCBtYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAub3AxTm90
SW50T3AyTm90SW50OgogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAgICAgYWRk
cCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorIyBtbGFtICAgIGZwMmQgdDEs
IGZ0MQogLm9wMU5vdEludFJlYWR5OgogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDAKLSAgICBm
cDJkIHQwLCBmdDAKKyMgbWxhbSAgICBmcDJkIHQwLCBmdDAKICAgICBkb3VibGVDb21wYXJlKGZ0
MCwgZnQxLCAuanVtcFRhcmdldCkKICAgICBkaXNwYXRjaCg0KQogCkBAIC0xMzAxLDcgKzEzMzcs
NyBAQCBtYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAgICAgY2kyZCB0
MCwgZnQwCiAgICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKICAgICBhZGRwIHRhZ1R5
cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0MSwgZnQxCisjIG1sYW0gICAgZnAyZCB0MSwgZnQxCiAg
ICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCiAgICAgZGlzcGF0Y2goNCkK
IApAQCAtMTU2Miw2ICsxNTk4LDggQEAgX2xsaW50X29wX2VuZDoKICAgICBsb2FkcCBbY2ZyLCB0
MCwgOF0sIHQwCiAgICAgZG9SZXR1cm4oKQogCitpZiBDX0xPT1AKK2Vsc2UgIyBub3QgQ19MT09Q
CiAKIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOgogICAgICMgV2hlbiB0
aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50U2xv
d1BhdGhzKSwgc28KQEAgLTE1OTcsNyArMTYzNSw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9s
aW5lKGV4ZWN1dGFibGVPZmYKICAgICBhZGRwIDE2IC0gOCwgc3AKICAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhICsgOFtzcF0sIHQzCiAgICAgYnRwbnogSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb25bdDNdLCAuZXhjZXB0aW9uCi0gICAgcmV0CisgICAgcmV0X21sYW0KIC5leGNlcHRp
b246CiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKQogICAgIGxvYWRpIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKQEAgLTE2MDgsNCArMTY0Niw1IEBAIG1h
Y3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Rocm93X2Zyb21fbmF0aXZlX2NhbGwpCiAgICAgam1wIF9sbGludF90aHJvd19mcm9t
X3Nsb3dfcGF0aF90cmFtcG9saW5lCiBlbmQKK2VuZCAjIG5vdCBDX0xPT1AKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMjEgKzExMCwzNiBAQCBl
bmQKIAogIyBTb21lIGNvbW1vbiB1dGlsaXRpZXMuCiBtYWNybyBjcmFzaCgpCi0gICAgc3RvcmVp
IHQwLCAweGJiYWRiZWVmW10KLSAgICBtb3ZlIDAsIHQwCi0gICAgY2FsbCB0MAorICAgIC8vIG1h
Y3JvIGNyYXNoKCkgeworICAgIGlmIENfTE9PUAorICAgICAgICBjeHhDcmFzaAorICAgIGVsc2UK
KyAgICAgICAgc3RvcmVpIHQwLCAweGJiYWRiZWVmW10KKyAgICAgICAgbW92ZSAwLCB0MAorICAg
ICAgICBjYWxsIHQwCisgICAgZW5kCisgICAgLy8gfSBFTkQgY3Jhc2guCiBlbmQKIAogbWFjcm8g
YXNzZXJ0KGFzc2VydGlvbikKICAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgIC8vIG1hY3JvIGFz
c2VydChhc3NlcnRpb24pIHsKICAgICAgICAgYXNzZXJ0aW9uKC5vaykKICAgICAgICAgY3Jhc2go
KQogICAgIC5vazoKKyAgICAvLyB9IEVORCBhc3NlcnQuCiAgICAgZW5kCiBlbmQKIAogbWFjcm8g
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCi0gICAg
aWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4KKyAgICBpZiBDX0xPT1AKKyAgICAgICAgIyBtbGFt
IFRoaXMgaXMgcmVhbGx5IG5vdCBuZWNlc3NhcnkuICBOZWVkIHRvIHJlcGxhY2Ugd2l0aCBlcXVp
dmFsZW50IG1hY2hpbmVyeS4KKyAgICAgICAgIyBUaGUgQyBmdW5jdGlvbiBmcmFtZSBzaG91bGQg
dGFrZSBjYXJlIG9mIHByZXNlcnZpbmcgdGhlIHJldHVybiBhZGRyZXNzCisgICAgICAgICMgaXRz
ZWxmLiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gYW55IGV4dHJhIHdvcmsgaGVyZS4KKyAgICAg
ICAgIyBtbGFtIE5PVCBORUVERUQgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlciAjIG1sYW0g
RklYTUUgd2UgY2FuJ3QgZG8gdGhpcyBpbiBDLWNvZGUuCisgICAgIyBtbGFtIEVORAorICAgIGVs
c2lmIEFSTXY3CiAgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKICAgICBlbHNp
ZiBYODYgb3IgWDg2XzY0CiAgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCkBAIC0xMzQs
NyArMTQ5LDE0IEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXMKIGVu
ZAogCiBtYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3Rl
cikKLSAgICBpZiBBUk12NworICAgICMgbWxhbSBCRUdJTiAgICAKKyAgICBpZiBDX0xPT1AKKyAg
ICAgICAgIyBtbGFtIEZJWE1FOiBSZXBsYWNlIHdpdGggYXBwcm9wcmlhdGUgZXF1aXZhbGVudCBt
YWNoaW5lcnkuCisgICAgICAgICMgVGhlIEMgZnVuY3Rpb24gZnJhbWUgc2hvdWxkIHRha2UgY2Fy
ZSBvZiByZXN0b3JpbmcgdGhlIHJldHVybiBhZGRyZXNzCisgICAgICAgICMgaXRzZWxmLiBXZSBz
aG91bGQgbm90IG5lZWQgdG8gZG8gYW55IGV4dHJhIHdvcmsgaGVyZS4KKyAgICAgICAgIyBtbGFt
IE5PVCBORUVFREVEIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyICMgbWxhbSBGSVhNRSB3ZSBjYW4n
dCBkbyB0aGlzIGluIEMtY29kZS4KKyAgICAjIG1sYW0gRU5ECisgICAgZWxzaWYgQVJNdjcKICAg
ICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKICAgICBlbHNpZiBYODYgb3IgWDg2XzY0CiAg
ICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKQEAgLTE0NCw2ICsxNjYsOSBAQCBtYWNybyByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzCiBlbmQKIAogbWFjcm8gdHJhY2VFeGVjdXRp
b24oKQorICAgICMgbWxhbSBOT1QgTkVFREVEIGlmIENfTE9PUAorICAgICMgICAgY3h4VHJhY2Ug
ICMgbWFrZSBzdXJlIHRvIHJlbW92ZSB0aGlzIG9wY29kZSBmcm9tIHRoZSBpbnN0cnVjdGlvbnMu
CisgICAgI2VuZAogICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCiAgICAgICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfdHJhY2UpCiAgICAgZW5kCkBAIC0xNTQsOCArMTc5LDcgQEAgbWFjcm8gc2xvd1Bh
dGhGb3JDYWxsKGFkdmFuY2UsIHNsb3dQYXRoKQogICAgICAgICBhZHZhbmNlLAogICAgICAgICBz
bG93UGF0aCwKICAgICAgICAgbWFjcm8gKGNhbGxlZSkKLSAgICAgICAgICAgIGNhbGwgY2FsbGVl
Ci0gICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgICAgICAgICBjYWxsVGFyZ2V0
RnVuY3Rpb25CeUNhbGxlZShjYWxsZWUpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0xNzcsNyAr
MjAxLDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKIGVuZAogCiBtYWNy
byBhc3NlcnROb3RDb25zdGFudChpbmRleCkKLSAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorICAgIGFzc2VydChtYWNy
byAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpIC8v
IGFzc2VydChpbmRleDxhMD4gPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CiBlbmQKIAog
bWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQpAQCAt
MjE4LDE4ICsyNDIsMzMgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxv
YwogICAgIGlmIEpJVF9FTkFCTEVECiAgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxp
bnRFeGVjdXRlQ291bnRlciArIEV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlclt0MV0sIC5jb250
aW51ZQogICAgICAgICBjQ2FsbDIob3NyU2xvd1BhdGgsIGNmciwgUEMpCisKKyAgICAgICAgIyBV
cGRhdGUgdGhlIGN1cnJlbnRGcmFtZVBvaW50ZXI6CiAgICAgICAgIG1vdmUgdDEsIGNmcgorCisg
ICAgICAgICMgdDAgbXVzdCBlaXRoZXIgYmUgMCBvciBwb2ludHMgdG8gZXhlY3V0YWJsZSBjb2Rl
IGUuZy4gSklUdGVkIGNvZGUuCisgICAgICAgICMgSWYgaXQgaXMgMCwgdGhlbiB3ZSBkb24ndCBo
YXZlIGEgbmF0aXZlIGNvZGUgdGFyZ2V0IHRvIGV4ZWN1dGUuCisgICAgICAgICMgR28gcmVjb3Zl
ciBvdXIgc3RhdGUgYW5kIHN0YXJ0IGludGVycHJldGluZyB0aGlzIGZ1bmN0aW9uLgogICAgICAg
ICBidHB6IHQwLCAucmVjb3ZlcgotICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgotICAg
ICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKLSAgICAgICAgam1wIHQw
CisKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgMCwgdGhlbiwgd2UgaGF2ZSBhIG5hdGl2ZSBmdW5j
dGlvbiB0byBjYWxsIChKSVR0ZWQgb3IKKyAgICAgICAgIyBvdGhlcndpc2UpLiBEbyBhIHRhaWxj
YWxsIHRvIHRoZSB0YXJnZXQgY29kZS4KKyAgICAgICAgZG9UYWlsQ2FsbCh0MCkKKyAgICAgICAg
IyBtbGFtIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgICMgbWxhbSByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgIyBtbGFtIGptcCB0MAorCisgICAg
ICAgICMgSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhlIG9zciBsb2dpYyBoYXMgZGV0ZXJtaW5lZCB0
aGF0IHRoZXJlIGlzbid0IGFueQorICAgICAgICAjIEpJVHRlZCBjb2RlIHRvIGludm9rZSBhdCB0
aGlzIHRpbWUuICBSZWZldGNoIHRoZSBjdXJyZW50IGNvZGVibG9jayAoYXMKKyAgICAgICAgIyBp
dCBtYXkgaGF2ZSBjaGFuZ2VkKSwgYW5kIGZhbGwgdGhydSB0byAuY29udGludWUgdG8gZ28gaW50
ZXJwcmV0IHRoZQorICAgICAgICAjIGZ1bmN0aW9uLgogICAgIC5yZWNvdmVyOgogICAgICAgICBj
b2RlQmxvY2tHZXR0ZXIodDEpCiAgICAgLmNvbnRpbnVlOgogICAgIGVuZAogICAgIGNvZGVCbG9j
a1NldHRlcih0MSkKICAgICAKLSAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgIyBTZXQgdXAgdGhl
IFBDLiAgVGhlIGNhbGxlciB3aWxsIGRpc3BhdGNoL2p1bXAgdG8gdGhpcyBieXRlY29kZSBQQyBh
ZGRyLgogICAgIGlmIEpTVkFMVUU2NAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1
Y3Rpb25zW3QxXSwgUEIKICAgICAgICAgbW92ZSAwLCBQQwpAQCAtMjg5LDcgKzMyOCw3IEBAIGVu
ZAogCiBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5m
b09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2Up
CiAgICAgaWYgQUxXQVlTX0FMTE9DQVRFX1NMT1cKLSAgICAgICAgam1wIHNsb3dDYXNlCisgICAg
ICAgIGptcCBzbG93Q2FzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGdvdG8gLnNsb3dDYXNlOwogICAgIGVsc2UKICAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNp
emVDbGFzcyA9CiAgICAgICAgICAgICBKU0dsb2JhbERhdGE6OmhlYXAgKwpAQCAtMzAzLDIzICsz
NDIsMjMgQEAgbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZAogICAgICAg
ICAgICAgTWFya2VkQmxvY2s6OkZyZWVMaXN0OjpoZWFkCiAKICAgICAgICAgIyBGSVhNRTogd2Ug
Y2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCi0gICAg
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQotICAgICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBzY3JhdGNoMSAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxh
ND4gPSBjZnIuQ29kZUJsb2NrOworICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVtzY3JhdGNoMV0sIHNjcmF0Y2gxICAgLy8gICBnbG9iYWxEYXRhPGE0PiA9IGNvZGVCbG9jazxh
ND4uZ2xvYmFsRGF0YTsKICAgICAgICAgCi0gICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0
aGUgZnJlZSBsaXN0LiAgIAotICAgICAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zm
c2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0Ci0gICAgICAgIGJ0cHogcmVzdWx0
LCBzbG93Q2FzZQorICAgICAgICAvLyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
ICAgCisgICAgICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJl
ZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQgLy8gICByZXN1bHQ8YTM+ID0gZ2xvYmFsRGF0YTxhND4u
TXlTaXplQ2xhc3MuRmlyc3RGcmVlQ2VsbDsKKyAgICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKCFyZXN1bHQ8YTM+IGkuZS4g
bm8gZnJlZSBjZWxsKSBnb3RvIC5zbG93Q2FzZTsKICAgICAgICAgCi0gICAgICAgICMgUmVtb3Zl
IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgotICAgICAgICBsb2FkcCBbcmVzdWx0XSwg
c2NyYXRjaDIKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsg
b2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorICAgICAgICAvLyBSZW1vdmUgdGhlIG9i
amVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNo
MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIG5leHQ8YTU+ID0gcmVzdWx0PGEzPi5w
dHI7CisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNl
dE9mRmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0gLy8gICBnbG9iYWxEYXRhPGE0Pi5NeVNpemVDbGFz
cy5GaXJzdEZyZWVDZWxsID0gbmV4dDxhNT47CiAgICAgCi0gICAgICAgICMgSW5pdGlhbGl6ZSB0
aGUgb2JqZWN0LgotICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3Jh
dGNoMgotICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCi0gICAgICAgIHN0b3JlcCBz
dHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQotICAgICAgICBzdG9yZXAgMCwg
SlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQotICAgICAgICBzdG9yZXAgMCwgSlNPYmpl
Y3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtyZXN1bHRdCisgICAgICAgIC8vIEluaXRpYWxpemUgdGhl
IG9iamVjdC4KKyAgICAgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRj
aDIgICAgICAgICAgIC8vICAgY2xhc3NJbmZvPGE1PiA9IGdsb2JhbERhdGE8YTQ+LmNsYXNzSW5m
b09mZnNldDsKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgcmVzdWx0PGEzPi5wdHIgPSBjbGFzc0luZm88YTU+OworICAgICAg
ICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0gICAgICAgLy8g
ICByZXN1bHQ8YTM+LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTxhMj47CisgICAgICAgIHN0b3JlcCAw
LCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdICAgICAgICAgICAvLyAgIHJlc3VsdDxh
Mz4uaW5oZXJpdG9ySUQgPSAwOworICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fb3V0T2ZM
aW5lU3RvcmFnZVtyZXN1bHRdICAgICAgLy8gICByZXN1bHQ8YTM+Lm91dE9mTGluZVN0b3JhZ2Ug
PSAwOwogICAgIGVuZAogZW5kCiAKQEAgLTMyNyw5ICszNjYsMjkgQEAgbWFjcm8gZG9SZXR1cm4o
KQogICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2Zy
XSwgY2ZyCiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCi0gICAgcmV0
CisgICAgcmV0X21sYW0KIGVuZAogCittYWNybyBkb1RhaWxDYWxsKGNhbGxUYXJnZXQpCisgICAg
aWYgQ19MT09QCisgICAgICAgICMgRm9yIGMrKyBjb2RlLCB3ZSBkb24ndCBtYW5hZ2UgdGhlIHJl
dHVybiBQQyBkaXJlY3RseS4gIEVtaXQgYQorICAgICAgICAjIHRhaWxjYWxsIGlkaW9tIGFuZCBs
ZXQgdGhlIGNvbXBpbGVyIG9wdGltaXplIGl0IGludG8gYSByZWFsIHRhaWwgY2FsbAorICAgICAg
ICAjIGlmIHBvc3NpYmxlLgorICAgICAgICBjcmFzaCgpCisgICAgICAgICNjeHhUYWlsQ2FsbCB0
MAorICAgIGVsc2UKKyAgICAgICAgIyBUbyBkbyBhIHRhaWwgY2FsbCwgd2UgbmVlZCB0byByZXN0
b3JlIHRoZSByZXR1cm5QQyBiZWZvcmUgd2UganVtcCB0bworICAgICAgICAjIHRoZSBjYWxsIHRh
cmdldCBzbyB0aGF0IGl0IGxvb2tzIGxpa2Ugd2UgY2FsbGVkIGl0IGRpcmVjdGx5IGZyb20gb3Vy
CisgICAgICAgICMgY2FsbGVyLiAgVGhpcyB3YXksIHRoZSBuYXRpdmUgY29kZSBjYW4gYnlwYXNz
IHVzIHdoZW4gcmV0dXJuaW5nIHRvIG91cgorICAgICAgICAjIGNhbGxlci4KKyAgICAgICAgbG9h
ZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIGVuZAorZW5kCisKK2lmIENfTE9PUAorZWxz
ZSAjIG5vdCBDX0xPT1AKIAogIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgogX2xs
aW50X2JlZ2luOgpAQCAtMzY5LDYgKzQyOCw3IEBAIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWMKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9j
a0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3Jf
Y29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RC
ZWdpbiwgX2xsaW50X3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIAorZW5kICMgbm90
IENfTE9PUAogCiAjIFZhbHVlLXJlcHJlc2VudGF0aW9uLXNwZWNpZmljIGNvZGUuCiBpZiBKU1ZB
TFVFNjQKQEAgLTYzNiwxMCArNjk2LDIwIEBAIF9sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgogCiBf
bGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBtbGFtQnJl
YWsKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAg
ZGlzcGF0Y2goMykKIAogCisvLyBieXRlY29kZTogY2FsbCBmdW5jKHIpIGFyZ0NvdW50KG4pIHJl
Z2lzdGVyT2Zmc2V0KG4pCisvLworLy8gICBQZXJmb3JtIGEgZnVuY3Rpb24gY2FsbC4KKy8vICAg
ICAgICAgICAKKy8vICAgcmVnaXN0ZXJPZmZzZXQgaXMgdGhlIGRpc3RhbmNlIHRoZSBjYWxsRnJh
bWUgcG9pbnRlciBzaG91bGQgbW92ZQorLy8gICBiZWZvcmUgdGhlIFZNIGluaXRpYWxpemVzIHRo
ZSBuZXcgY2FsbCBmcmFtZSdzIGhlYWRlci4KKy8vICAgICAgICAgICAKKy8vICAgZHN0IGlzIHdo
ZXJlIG9wX3JldCBzaG91bGQgc3RvcmUgaXRzIHJlc3VsdC4KKwogX2xsaW50X29wX2NhbGw6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGRvQ2FsbChfbGxpbnRfc2xvd19wYXRoX2NhbGwpCkBA
IC02OTMsMTAgKzc2MywxMyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgIAogICAgIHNsb3dQ
YXRoRm9yQ2FsbCg0LCBfbGxpbnRfc2xvd19wYXRoX2NhbGxfZXZhbCkKIAoraWYgQ19MT09QCitl
bHNlICMgbm90IENfTE9PUAogCiBfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6CiAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoKQogCitlbmQgIyBub3QgQ19MT09QCiAKIF9sbGludF9vcF9zdHJjYXQ6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQpAQCAtNzYzLDYgKzgzNiw4IEBAIF9sbGludF9vcF9kZWJ1
ZzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWJ1ZykKICAgICBkaXNwYXRj
aCg0KQogCitpZiBDX0xPT1AKK2Vsc2UgIyBub3QgQ19MT09QCiAKIF9sbGludF9uYXRpdmVfY2Fs
bF90cmFtcG9saW5lOgogICAgIG5hdGl2ZUNhbGxUcmFtcG9saW5lKE5hdGl2ZUV4ZWN1dGFibGU6
Om1fZnVuY3Rpb24pCkBAIC03NzEsNiArODQ2LDcgQEAgX2xsaW50X25hdGl2ZV9jYWxsX3RyYW1w
b2xpbmU6CiBfbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lOgogICAgIG5hdGl2ZUNh
bGxUcmFtcG9saW5lKE5hdGl2ZUV4ZWN1dGFibGU6Om1fY29uc3RydWN0b3IpCiAKK2VuZCAjIG5v
dCBDX0xPT1AKIAogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhv
dWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxk
IG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CkBA
IC04MzUsOCArOTExLDExIEBAIF9sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKIF9sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKICAgICBub3RTdXBwb3J0ZWQoKQogCitpZiBDX0xPT1AK
K2Vsc2UgIyBub3QgQ19MT09QCiAKICMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KIF9sbGlu
dF9lbmQ6CiAgICAgY3Jhc2goKQogCitlbmQgIyBub3QgQ19MT09QCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDI4NSBAQAogI2luY2x1ZGUg
IkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAor
Ly8gbWxhbSBCRUdJTgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMTGludFNsb3dQYXRo
cy5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M6
OkxMSW50OworCisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGlj
IHZvaWQgY3Jhc2goKQoreworICAgIGludCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oMHhi
YmFkYmVlZik7CisgICAgKnAgPSAwOworICAgIHZvaWQgKCpmKSgpID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KHApOworICAgIGYoKTsKK30KKworc3RhdGljIGRvdWJsZSBJbnRzMkRvdWJs
ZShpbnQzMl90IGxvLCBpbnQzMl90IGhpKQoreworICAgIHVuaW9uIHsKKyAgICAgICAgZG91Ymxl
IGR2YWw7CisgICAgICAgIHVpbnQ2NF90IGl2YWw2NDsKKyAgICB9IHU7CisgICAgdS5pdmFsNjQg
PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaGkpIDw8IDMyIHwgbG87CisgICAgcmV0dXJuIHUuZHZh
bDsKK30KKworLyogbWxhbSBVTlVTRUQKK3N0YXRpYyB2b2lkIERvdWJsZTJJbnRzKGRvdWJsZSBk
dmFsLCB1aW50MzJfdCAmbG8sIHVpbnQzMl90ICZoaSkKK3sKKyAgICB1bmlvbiB7CisgICAgICAg
IGRvdWJsZSBkdmFsOworICAgICAgICB1aW50NjRfdCBpdmFsNjQ7CisgICAgfSB1OworICAgIHUu
ZHZhbCA9IGR2YWw7CisgICAgbG8gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odS5pdmFsNjQpOwor
ICAgIGhpID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHUuaXZhbDY0ID4+IDMyKTsKK30KKyovCisK
K30gLy8gbmFtZXNwYWNlIExMaW50CisKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgbWxhbUJyZWFr
KGNvbnN0IGNoYXIqIGNvbW1lbnQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKK3ZvaWQg
bWxhbUJyZWFrKGNvbnN0IGNoYXIqIGNvbW1lbnQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
KSB7CisgICAgcHJpbnRmKCJBdCBtbGFtIGJyZWFrcG9pbnQ6ICVzIEAgJXM6JWRcbiIsIGNvbW1l
bnQsIGZpbGUsIGxpbmUpOworfQorCitKU1ZhbHVlIEludGVycHJldGVyOjpsbGludENMb29wRXhl
Y3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnRmlsZSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTElu
dDo6RGF0YSogbGxpbnREYXRhKSB7CisKKyAgICAjZGVmaW5lIENBU1QgcmVpbnRlcnByZXRfY2Fz
dAorICAgICNkZWZpbmUgU0lHTl9CSVQoeCkgKHggJiBJTlRfTUlOKQorCisjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBv
dXIgYWRkcmVzcyB0YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQorICAgIC8vIGhlcmUg
YmVjYXVzZSBvdXIgbGFiZWxzIGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9u
LgorICAgIGlmIChVTkxJS0VMWShmbGFnID09IEluaXRpYWxpemVBbmRSZXR1cm4pKSB7CisgICAg
ICAgIC8vIG1sYW0gI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIp
CisgICAgICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1h
cCgpOworICAgICAgICAgICAgI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIFwK
KyAgICAgICAgICAgICAgICBtX29wY29kZVRhYmxlW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCYmb3Bjb2RlKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5U
UlkpCisgICAgICAgICAgICAjdW5kZWYgT1BDT0RFX0VOVFJZCisgICAgICAgIC8vIG1sYW0gI2Vu
ZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZmxhZyk7
CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CisjZW5kaWYKKworICAgIEFTU0VSVChtX2lu
aXRpYWxpemVkKTsKKyAgICAvLyBtbGFtIE5PVCBUUlVFIGZvciB1cyBBU1NFUlQobV9jbGFzc2lj
RW5hYmxlZCk7CisKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkudG9wQ2FsbEZy
YW1lID09IGNhbGxGcmFtZSk7CisKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCk7CisgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZTsKKyAgICAv
LyBtbGFtIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gMDsKKyAgICBDYWxsRnJhbWUqKiB0b3BDYWxs
RnJhbWVTbG90ID0gJmdsb2JhbERhdGEtPnRvcENhbGxGcmFtZTsKKworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBJbnN0cnVjdGlvbiogdlBD
ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIC8vIG1sYW0gdW5zaWdu
ZWQgdGlja0NvdW50ID0gZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIudGlja3NVbnRpbE5leHRD
aGVjaygpOworICAgIEpTVmFsdWUgZnVuY3Rpb25SZXR1cm5WYWx1ZTsKKworICAgIC8vIEluc3Rh
bnRpYXRlIHRoZSBwc2V1ZG8gSklUIHN0YWNrIGZyYW1lIHVzZWQgYnkgdGhlIExMSU5UIEMgTG9v
cCBiYWNrZW5kOgorICAgIEpJVFN0YWNrRnJhbWUgaml0U3RhY2tGcmFtZTsKKworICAgIC8vIERl
ZmluZSB0aGUgcHNldWRvIHJlZ2lzdGVycyB1c2VkIGJ5IHRoZSBMTElOVCBDIExvb3AgYmFja2Vu
ZDoKKyAgICBzdHJ1Y3QgQ0xvb3BSZWdpc3RlciB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAg
ICAgIGludHB0cl90IGk7CisgICAgICAgICAgICB1aW50cHRyX3QgdTsKKyAgICAgICAgICAgIGlu
dDhfdCogaThwOworICAgICAgICAgICAgdm9pZCogdnA7CisgICAgICAgICAgICBFeGVjU3RhdGUq
IGV4ZWNTdGF0ZTsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbjsKKyAgICAg
ICAgfSB1OworICAgIH07CisgICAgc3RydWN0IENMb29wRG91YmxlUmVnaXN0ZXIgeworICAgICAg
ICB1bmlvbiB7CisgICAgICAgICAgICBkb3VibGUgZDsKKyAgICAgICAgfSB1OworICAgIH07CisK
KyAgICBDTG9vcFJlZ2lzdGVyIHIwLCByMSwgcjIsIHI0IC8qICwgclBDIC8gKiBtbGFtIFVOVVNF
RCByU2NyYXRjaCwgckJhc2VQQywgcjEzLCByMTQsKiAvIHJGUCAvICogbWxhbSBVTlVTRUQgclJl
dHVyblBDLCovOworICAgIENMb29wUmVnaXN0ZXIgcjMsIHI4IC8qIG1sYW0gVU5VU0VEICwgcjkq
LzsKKyAgICBDTG9vcERvdWJsZVJlZ2lzdGVyIGQwLCBkMS8qIG1sYW0gVU5VU0VELCAgZDIsIGQz
LCBkNCwgZDUsIGQ4ICovOworCisgICAgSklUU3RhY2tGcmFtZSogY29uc3Qgc3AgPSAmaml0U3Rh
Y2tGcmFtZTsKKyAgICBzcC0+Z2xvYmFsRGF0YSA9IGdsb2JhbERhdGE7CisKKyAgICAvLyByRlAg
aXMgYW4gYWxpYXMgZm9yIGNhbGxGcmFtZS4gIFNldCB1cCB0aGlzIGFsaWFzOgorICAgIENMb29w
UmVnaXN0ZXImIHJGUCA9ICpDQVNUPENMb29wUmVnaXN0ZXIqPigmY2FsbEZyYW1lKTsKKworICAg
IC8vIHJQQyBpcyBhbiBhbGlhcyBmb3IgdlBDLiAgU2V0IHVwIHRoZSBhbGlhczoKKyAgICBDTG9v
cFJlZ2lzdGVyJiByUEMgPSAqQ0FTVDxDTG9vcFJlZ2lzdGVyKj4oJnZQQyk7CisKKyAgICBVTlVT
RURfUEFSQU0ocmVnRmlsZSk7IC8vIG1sYW0gRklYTUUgUkVNT1ZFIHRoaXMgbGF0ZXIuCisgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7IC8vIG1sYW0gRklYTUUgUkVNT1ZFIHRoaXMgbGF0ZXIu
CisKKyAgICAvLyBQcmUtcG9wdWxhdGUgdGhlIGN1cnJlbnRGcmFtZSBwb2ludGVyOgorICAgIC8v
IG1sYW0gTk9UIE5FRURFRCBBTllNT1JFIHJGUC51LnZwID0gY2FsbEZyYW1lOworICAgIC8vIG1s
YW0gTk9UIE5FRURFRCBBTllNT1JFIHJQQy51LnZwID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
dlBDKTsKKworI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCisgICAgI2RlZmluZSBTQU1QTEUo
Y29kZUJsb2NrLCB2UEMpIG1fc2FtcGxlci0+c2FtcGxlKGNvZGVCbG9jaywgdlBDKQorI2Vsc2UK
KyAgICAjZGVmaW5lIFNBTVBMRShjb2RlQmxvY2ssIHZQQykKKyNlbmRpZgorCisjZGVmaW5lIFVQ
REFURV9CWVRFQ09ERV9PRkZTRVQoKSBcCisgICAgZG8ge1wKKyAgICAgICAgY2FsbEZyYW1lLT5z
ZXRCeXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUodlBDIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5kYXRhKCkgKyAxKTtcCisgICAgfSB3aGlsZSAoMCkKKworICAgIC8vIG1sYW0gQkVHSU4g
dGVzdAorICAgIHByaW50ZigiIG1sYW0gQCAlcyBAICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9f
RklMRV9fLCBfX0xJTkVfXyk7CisgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT1cbiIpOworICAgIGNvZGVCbG9jay0+ZHVtcChjYWxsRnJhbWUpOwor
ICAgIHByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4i
KTsKKyAgICAvLyBtbGFtIEVORCB0ZXN0CisKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19P
UENPREVTKQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBMb29wIGRpc3BhdGNoIG1l
Y2hhbmlzbSB1c2luZyBjb21wdXRlZCBnb3RvIHN0YXRlbWVudHM6CisKKyAgICAjZGVmaW5lIE5F
WFRfSU5TVFJVQ1RJT04oKSBTQU1QTEUoY29kZUJsb2NrLCB2UEMpOyBnb3RvICp2UEMtPnUub3Bj
b2RlCisgICAgI2lmIEVOQUJMRShPUENPREVfU1RBVFMpCisgICAgICAgICNkZWZpbmUgREVGSU5F
X09QQ09ERShvcGNvZGUpIFwKKyAgICAgICAgb3Bjb2RlOlwKKyAgICAgICAgICAgIE9wY29kZVN0
YXRzOjpyZWNvcmRJbnN0cnVjdGlvbihvcGNvZGUpO1wKKyAgICAgICAgICAgIFVQREFURV9CWVRF
Q09ERV9PRkZTRVQoKTsKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIERFRklORV9PUENPREUo
b3Bjb2RlKSBvcGNvZGU6IFVQREFURV9CWVRFQ09ERV9PRkZTRVQoKTsKKyAgICAjZW5kaWYgLy8g
RU5BQkxFKE9QQ09ERV9TVEFUUykKKyAgICBORVhUX0lOU1RSVUNUSU9OKCk7IC8vIERpc3BhdGNo
IHRvIHRoZSBmaXJzdCBieXRlY29kZS4KKworI2Vsc2UgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RP
X0NMQVNTSUNfSU5URVJQUkVURVIpCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBMb29w
IGRpc3BhdGNoIG1lY2hhbmlzbSB1c2luZyBhIEMgc3dpdGNoIHN0YXRlbWVudDoKKworICAgICNk
ZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFNBTVBMRShjb2RlQmxvY2ssIHZQQyk7IGdvdG8gaW50
ZXJwcmV0ZXJMb29wU3RhcnQKKyAgICAjaWYgRU5BQkxFKE9QQ09ERV9TVEFUUykKKyAgICAgICAg
I2RlZmluZSBERUZJTkVfT1BDT0RFKG9wY29kZSkgXAorICAgICAgICBjYXNlIG9wY29kZTpcCisg
ICAgICAgICAgICBPcGNvZGVTdGF0czo6cmVjb3JkSW5zdHJ1Y3Rpb24ob3Bjb2RlKTtcCisgICAg
ICAgICAgICBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CisgICAgI2Vsc2UKKyAgICAgICAgI2Rl
ZmluZSBERUZJTkVfT1BDT0RFKG9wY29kZSkgY2FzZSBvcGNvZGU6IFVQREFURV9CWVRFQ09ERV9P
RkZTRVQoKTsKKyAgICAjZW5kaWYKKyAgICB3aGlsZSAoMSkgeyAvLyBpdGVyYXRvciBsb29wIGJl
Z2lucworICAgIGludGVycHJldGVyTG9vcFN0YXJ0OjsKKyAgICBzd2l0Y2ggKHZQQy0+dS5vcGNv
ZGUpCisKKyNlbmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRF
UikKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNvZGUgaGFuZGxlcnM6Cisg
ICAgeworICAgICAgICAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwg
d2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZQorICAgICAgICAvLyBieXRlY29kZSBoYW5kbGVycyBm
b3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tCisgICAgICAgIC8vIExvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtLgorICAgICAgICAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorICAg
IH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNvZGUgaGVscGVyczoKKwor
Y2FsbEpTRnVuY3Rpb246CisgICAgeworICAgICAgICBtbGFtQnJlYWsoImNhbGxKU0Z1bmN0aW9u
IiwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgLy8gR2V0IHRoZSBjYWxsIHRhcmdldCBp
bmZvIGZyb20gdGhlIGNhbGxGcmFtZToKKyAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDQVNUPENhbGxGcmFtZSo+KHJGUC51LnZwKTsgICAgICAvLyB0aGUgY2FsbEZyYW1lIGhhcyBj
aGFuZ2VkLiAgUmVmZXRjaCBpdCBmcm9tIHRoZSBGUCAicmVnaXN0ZXIiLgorICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jID0ganNDYXN0PEpTRnVuY3Rpb24qPihuZXdDYWxsRnJhbWUtPmNhbGxlZSgp
KTsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoZnVuYywgY2FsbERhdGEpOworCisgICAgICAgIC8vIG1sYW0gQkVHSU4g
dGVzdAorICAgICAgICBVU3RyaW5nIG5hbWUgPSBmdW5jLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUo
bmV3Q2FsbEZyYW1lKTsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZVN0ciA9IENBU1Q8Y29uc3Qg
Y2hhcio+KG5hbWUuY2hhcmFjdGVyczgoKSk7CisgICAgICAgIHByaW50ZigiIENhbGxpbmcgZnVu
Y3Rpb24gJyVzJyBjb2RlQmxvY2sgJXBcbiIsIG5hbWVTdHIgPyBuYW1lU3RyIDogIjx1bmtub3du
PiIsIG5ld0NhbGxGcmFtZS0+Y29kZUJsb2NrKCkpOworICAgICAgICAvLyBtbGFtIEVORCB0ZXN0
CisKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMpIHsKKyAgICAgICAgICAgIENv
ZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCk7CisgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJs
b2NrKTsKKworICAgICAgICAgICAgKnRvcENhbGxGcmFtZVNsb3QgPSBjYWxsRnJhbWU7IC8vIG1s
YW0gRklYTUUgCisgICAgICAgICAgICB2UEMgPSBuZXdDb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCk7CisKKyAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIC8v
IG1sYW0gU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4o
KTsKKyAgICAgICAgICAgIC8vIG1sYW0gQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgcmVnaXN0ZXJPZmZzZXQpOworICAg
ICAgICAgICAgLy8gbWxhbSBuZXdDYWxsRnJhbWUtPmluaXQoMCwgdlBDICsgT1BDT0RFX0xFTkdU
SChvcF9jYWxsKSwgc2NvcGVDaGFpbiwgY2FsbEZyYW1lLCBhcmdDb3VudCwgYXNPYmplY3Qodikp
OworCisgICAgICAgICAgICAvLyA/Pz8gbmV3Q2FsbEZyYW1lLT5zZXRDb2RlQmxvY2soMCk7Cisg
ICAgICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlOworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICp0b3BDYWxsRnJhbWVTbG90ID0gbmV3Q2FsbEZyYW1lOyAvLyBtbGFtIEZJWE1FIAor
ICAgICAgICAgICAgICAgIC8vIFNhbXBsaW5nVG9vbDo6SG9zdENhbGxSZWNvcmQgY2FsbFJlY29y
ZChtX3NhbXBsZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihuZXdDYWxsRnJhbWUpKTsKKyAgICAg
ICAgICAgICAgICAqdG9wQ2FsbEZyYW1lU2xvdCA9IGNhbGxGcmFtZTsgLy8gbWxhbSBGSVhNRSAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIG1sYW0gRklYTUUgQ0hFQ0tfRk9SX0VYQ0VQ
VElPTigpOworICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlOwor
CisgICAgICAgICAgICAvLyBtbGFtIFJFUExBQ0VEIHZQQyA9IGNhbGxGcmFtZS0+cmV0dXJuVlBD
KCk7CisgICAgICAgICAgICBjYWxsRnJhbWUgPSBuZXdDYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7
CisgICAgICAgICAgICAvLyBtbGFtIE5PVCBORUVERUQgQU5ZTU9SRSByRlAudS52cCA9IGNhbGxG
cmFtZTsKKyAgICAgICAgICAgIC8vIG1sYW0gTk9UIE5FRURFRCBBTllNT1JFIHJQQy51LnZwID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbEZyYW1lLT5ieXRlY29kZU9mZnNldEZvck5vbkRG
R0NvZGUoKSk7CisgICAgICAgICAgICB2UEMgPSBDQVNUPEluc3RydWN0aW9uKj4oY2FsbEZyYW1l
LT5ieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSk7CisKKyAgICAgICAgICAgIC8vIG1sYW0g
RklYTUUKKyAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworCisgICAgICAgICAgICAqdG9w
Q2FsbEZyYW1lU2xvdCA9IGNhbGxGcmFtZTsgLy8gbWxhbSBGSVhNRSAKKyAgICAgICAgICAgIGZ1
bmN0aW9uUmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTsKKyAgICAgICAgICAgIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBBU1NFUlQoY29kZUJsb2NrID09
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpOworICAgICAgICAgICAgLy8gbWxhbSBFTkQgRklYTUUK
KyAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICAgICAgfQorICAgIH0KKworI2lm
ICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorICAgIH0gLy8gaXRl
cmF0b3IgbG9vcCBlbmRzCisjZW5kaWYKKworICAgICN1bmRlZiBORVhUX0lOU1RSVUNUSU9OCisg
ICAgI3VuZGVmIERFRklORV9PUENPREUKKyAgICAjdW5kZWYgQ0hFQ0tfRk9SX0VYQ0VQVElPTgor
ICAgICN1bmRlZiBDSEVDS19GT1JfVElNRU9VVAorICAgICN1bmRlZiBDQVNUCisgICAgI3VuZGVm
IFNJR05fQklUCisKKyAgICByZXR1cm4gSlNWYWx1ZSgpOyAvLyBLZWVwIHRoZSBjb21waWxlciBo
YXBweS4KKworfSAvLyBJbnRlcnByZXRlcjo6bGxpbnRDTG9vcEV4ZWN1dGUoKQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIC8vIFRoaXMg
aXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2Yg
dGhlIGFzc2VtYmx5IGNvZGUKIC8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZy
b20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgog
CisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2
aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcu
cmIJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksOCBAQCBkZWYgYXJtVjdMb3dlclJlZ2lz
dGVyUmV1c2UobGlzdCkKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAg
IHdoZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJj
aWd0IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCiAgICAgICAgICAgICAgICAgImNwZXEi
LCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3Rl
cSIsICJjcGx0IiwgImNwbHRlcSIsCi0gICAgICAgICAgICAgICAgInRpbyIsICJ0aXMiLCAidGl6
IiwgInRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAidHBzIiwgInRw
eiIsICJ0cG56IiwKKyAgICAgICAgICAgICAgICAjIG1sYW0gVU5VU0VEICJ0aW8iLCAidGlzIiwg
InRpeiIsICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiLCAidHBvIiwgInRwcyIs
ICJ0cHoiLCAidHBueiIsCisgICAgICAgICAgICAgICAgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0
YnMiLCAidGJ6IiwgInRibnoiLCAidHBzIiwgInRweiIsICJ0cG56IiwKICAgICAgICAgICAgICAg
ICAiY2JlcSIsICJjYm5lcSIsICJjYmEiLCAiY2JhZXEiLCAiY2JiIiwgImNiYmVxIiwgImNiZ3Qi
LCAiY2JndGVxIiwgImNibHQiLCAiY2JsdGVxIgogICAgICAgICAgICAgICAgIGlmIG5vZGUub3Bl
cmFuZHMuc2l6ZSA9PSAyCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0g
PT0gbm9kZS5vcGVyYW5kc1sxXQpAQCAtOTQwLDkgKzk0MSw5IEBAIGNsYXNzIEluc3RydWN0aW9u
CiAgICAgICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgogICAgICAgICAgICAgZW1p
dEFybVY3VGVzdChvcGVyYW5kcykKICAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFu
ZHNbLTFdLmFzbUxhYmVsfSIKLSAgICAgICAgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCi0g
ICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQotICAgICAgICAgICAgJGFzbS5wdXRz
ICJidnMgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgICAjIG1sYW0gVU5VU0VEIHdo
ZW4gImJ0aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRB
cm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgJGFzbS5wdXRzICJi
dnMgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgogICAgICAgICB3aGVuICJidGlzIiwgImJ0cHMi
LCAiYnRicyIKICAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCiAgICAgICAgICAg
ICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCkBAIC05ODIsOCArOTgz
LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3Bl
cmFuZHMsICJsdCIpCiAgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiLCAiY2JsdGVxIgog
ICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKLSAgICAgICAgd2hl
biAidGlvIiwgInRibyIsICJ0cG8iCi0gICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJh
bmRzLCAidnMiKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRpbyIsICJ0Ym8iLCAidHBv
IgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2
cyIpCiAgICAgICAgIHdoZW4gInRpcyIsICJ0YnMiLCAidHBzIgogICAgICAgICAgICAgZW1pdEFy
bVY3VGVzdFNldChvcGVyYW5kcywgIm1pIikKICAgICAgICAgd2hlbiAidGl6IiwgInRieiIsICJ0
cHoiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lv
biAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDkgKzkzLDE2IEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICBA
YW5ub3RhdGlvbiA9IG5pbAogICAgICAgICBAY29kZU9yaWdpbiA9IG5pbAogICAgICAgICBAaW50
ZXJuYWxDb21tZW50ID0gbmlsCisgICAgICAgIEBzb3VyY2VJbnN0cnVjdGlvbiA9IG5pbAogICAg
ICAgICByZXN1bHQKICAgICBlbmQKICAgICAKKyAgICAjIFB1dHMgYSBDIFN0YXRlbWVudCBpbiB0
aGUgb3V0cHV0IHN0cmVhbS4KKyAgICBkZWYgcHV0YygqbGluZSkKKyAgICAgICAgcmFpc2UgdW5s
ZXNzIEBzdGF0ZSA9PSA6YXNtICAgICAgICAKKyAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1w
KCIgICAgIiArIGxpbmUuam9pbignJyksIGxhc3RDb21tZW50KSkKKyAgICBlbmQKKyAgICAKICAg
ICBkZWYgZm9ybWF0RHVtcChkdW1wU3RyLCBjb21tZW50LCBjb21tZW50Q29sdW1ucz0kcHJlZmVy
cmVkQ29tbWVudFN0YXJ0Q29sdW1uKQogICAgICAgICBpZiBjb21tZW50Lmxlbmd0aCA+IDAKICAg
ICAgICAgICAgICIlLSN7Y29tbWVudENvbHVtbnN9cyAlcyIgJSBbZHVtcFN0ciwgY29tbWVudF0K
QEAgLTE1MSw3ICsxNTgsMTEgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgICAgIEBudW1HbG9iYWxM
YWJlbHMgKz0gMQogICAgICAgICBwdXRzTmV3bGluZVNwYWNlcklmQXBwcm9wcmlhdGUoOmdsb2Jh
bCkKICAgICAgICAgQGludGVybmFsQ29tbWVudCA9ICRlbmFibGVMYWJlbENvdW50Q29tbWVudHMg
PyAiR2xvYmFsIExhYmVsICN7QG51bUdsb2JhbExhYmVsc30iIDogbmlsCi0gICAgICAgIEBvdXRw
LnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSki
LCBsYXN0Q29tbWVudCkpCisgICAgICAgIGlmIC9cQWxsaW50X29wXy8ubWF0Y2gobGFiZWxOYW1l
KQorICAgICAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCJPRkZMSU5FX0FTTV9PUENPREVf
TEFCRUwob3BfI3skfi5wb3N0X21hdGNofSkiLCBsYXN0Q29tbWVudCkpCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xPQkFMX0xB
QkVMKCN7bGFiZWxOYW1lfSkiLCBsYXN0Q29tbWVudCkpCisgICAgICAgIGVuZAogICAgICAgICBA
bmV3bGluZVNwYWNlclN0YXRlID0gOm5vbmUgIyBBZnRlciBhIGdsb2JhbCBsYWJlbCwgd2UgY2Fu
IHVzZSBhbm90aGVyIHNwYWNlci4KICAgICBlbmQKICAgICAKQEAgLTE3MSw2ICsxODIsMTQgQEAg
Y2xhc3MgQXNzZW1ibGVyCiAgICAgICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5h
bWV9KSBcIiIKICAgICBlbmQKICAgICAKKyAgICBkZWYgc2VsZi5jTGFiZWxSZWZlcmVuY2UobGFi
ZWxOYW1lKQorICAgICAgICAiI3tsYWJlbE5hbWV9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBz
ZWxmLmNMb2NhbExhYmVsUmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAgICAgIiN7bGFiZWxOYW1l
fSIKKyAgICBlbmQKKyAgICAKICAgICBkZWYgY29kZU9yaWdpbih0ZXh0KQogICAgICAgICBjYXNl
IEBjb21tZW50U3RhdGUKICAgICAgICAgd2hlbiA6bm9uZQpAQCAtMTk2LDYgKzIxNSw5IEBAIGNs
YXNzIEFzc2VtYmxlcgogICAgIGRlZiBhbm5vdGF0aW9uKHRleHQpCiAgICAgICAgIEBhbm5vdGF0
aW9uID0gdGV4dAogICAgIGVuZAorICAgIGRlZiBzb3VyY2VJbnN0cnVjdGlvbih0ZXh0KQorICAg
ICAgICBAc291cmNlSW5zdHJ1Y3Rpb24gPSB0ZXh0CisgICAgZW5kCiBlbmQKIAogYXNtRmlsZSA9
IEFSR1Yuc2hpZnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tl
bmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Jh
Y2tlbmRzLnJiCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDE0IEBAIHJl
cXVpcmUgImNvbmZpZyIKIHJlcXVpcmUgImFybXY3IgogcmVxdWlyZSAiYXN0IgogcmVxdWlyZSAi
eDg2IgorcmVxdWlyZSAiY3h4IgogCiBCQUNLRU5EUyA9CiAgICAgWwogICAgICAiWDg2IiwKICAg
ICAgIlg4Nl82NCIsCi0gICAgICJBUk12NyIKKyAgICAgIkFSTXY3IiwKKyAgICAgIkNfTE9PUCIK
ICAgICBdCiAKICMgS2VlcCB0aGUgc2V0IG9mIHdvcmtpbmcgYmFja2VuZHMgc2VwYXJhdGUgZnJv
bSB0aGUgc2V0IG9mIGJhY2tlbmRzIHRoYXQgbWlnaHQgYmUKQEAgLTQyLDcgKzQ0LDggQEAgV09S
S0lOR19CQUNLRU5EUyA9CiAgICAgWwogICAgICAiWDg2IiwKICAgICAgIlg4Nl82NCIsCi0gICAg
ICJBUk12NyIKKyAgICAgIkFSTXY3IiwKKyAgICAgIkNfTE9PUCIKICAgICBdCiAKIEJBQ0tFTkRf
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxc
WicpCkBAIC03NiwxMiArNzksMTggQEAgY2xhc3MgTGFiZWxSZWZlcmVuY2UKICAgICBkZWYgYXNt
TGFiZWwKICAgICAgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQogICAg
IGVuZAorICAgIGRlZiBjTGFiZWwKKyAgICAgICAgQXNzZW1ibGVyLmNMYWJlbFJlZmVyZW5jZShu
YW1lWzEuLi0xXSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCiAg
ICAgZGVmIGFzbUxhYmVsCiAgICAgICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJf
b2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQogICAgIGVuZAorICAgIGRlZiBjTGFiZWwKKyAgICAg
ICAgQXNzZW1ibGVyLmNMb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4u
LTFdKQorICAgIGVuZAogZW5kCiAKIGNsYXNzIFNraXAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotJHByZWZlcnJlZENvbW1lbnRTdGFydENvbHVtbiA9IDcwCiskcHJlZmVycmVkQ29t
bWVudFN0YXJ0Q29sdW1uID0gNjIKIAogCiAjIFR1cm5zIG9uIGR1bXBpbmcgb2YgdGhlIGNvdW50
IG9mIGxhYmVscy4KQEAgLTU0LDQgKzU0LDQgQEAgJGVuYWJsZUNvZGVPcmlnaW5Db21tZW50cyA9
IHRydWUKICMgICAgIlx0bW92bCA1MiglcmN4KSwgJWVjeFxuIiAgIC8vIHQyPHNpemVfdD4gPSB0
MjxDb2RlQmxvY2s+Lm1fbnVtVmFycwogIyAgICAgLi4uCiAjCi0kZW5hYmxlSW5zdHJBbm5vdGF0
aW9ucyA9IGZhbHNlCiskZW5hYmxlSW5zdHJBbm5vdGF0aW9ucyA9IHRydWUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2N4eC5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jeHgucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jeHgucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE2NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAi
Y29uZmlnIgorcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitkZWYgY3h4TWFwVHlwZSh0
eXBlKQorICAgIGNhc2UgdHlwZQorICAgIHdoZW4gImludCI7ICAgICAiLnUuaSIKKyAgICB3aGVu
ICJ1aW50IjsgICAgIi51LnUiCisgICAgd2hlbiAiaW50OHB0ciI7ICIudS5pOHAiCisgICAgd2hl
biAidm9pZHB0ciI7ICIudS52cCIKKyAgICB3aGVuICJkb3VibGUiOyAgIi51LmQiCisgICAgZWxz
ZTsgICAgICAgICAgICIudS4je3R5cGV9IgorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vZGUKKyAg
ICBkZWYgY3h4U2luZ2xlCisgICAgICAgIGRvdWJsZU9wZXJhbmQgPSBjeHhWYWx1ZSAgIyBtbGFt
IEZJWE1FIElzIHRoaXMgY29ycmVjdD8KKyAgICAgICAgcmFpc2UgIkJvZ3VzIHJlZ2lzdGVyIG5h
bWUgI3tkb3VibGVPcGVyYW5kfSIgdW5sZXNzIGRvdWJsZU9wZXJhbmQgPX4gL15kLworICAgICAg
ICAicyIgKyAoJH4ucG9zdF9tYXRjaC50b19pICogMikudG9fcworICAgIGVuZAorZW5kCisKK2Ns
YXNzIFNwZWNpYWxSZWdpc3RlciA8IE5vQ2hpbGRyZW4KKyAgICBkZWYgZHVtcAorICAgICAgICBA
bmFtZQorICAgIGVuZAorICAgIGRlZiBjeHhWYWx1ZSh0eXBlPSJpbnQiKQorICAgICAgICBAbmFt
ZSArIGN4eE1hcFR5cGUodHlwZSkKKyAgICBlbmQKK2VuZAorCitDX0xPT1BfRVhUUkFfR1BSUyA9
IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBT
cGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpXQorQ19MT09QX0VYVFJBX0ZQUlMgPSBbXQorQ19MT09Q
X1NDUkFUQ0hfRlBSID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDgiKQorCitkZWYgY3h4TW92ZUlt
bWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUg
dGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBs
ZXggb25lcy4KKyAgICBpZiAodmFsdWUgIT0gMCkKKyAgICAgICAgJGFzbS5jb21tZW50ICJbIDB4
JXggXSIgJSB2YWx1ZQorICAgIGVuZAorICAgICRhc20ucHV0YyAiI3tyZWdpc3Rlci5jeHhWYWx1
ZSgiaW50Iil9ID0gI3t2YWx1ZX07IgorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgICBkZWYg
ZHVtcAorICAgICAgICBjYXNlIG5hbWUKKyAgICAgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisg
ICAgICAgICAgICAicjAiCisgICAgICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgICAg
ICAgInIxIgorICAgICAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICAgICAgICJyMiIKKyAgICAg
ICAgd2hlbiAiYTMiCisgICAgICAgICAgICAicjMiCisgICAgICAgIHdoZW4gInQzIgorICAgICAg
ICAgICAgInI0IgorICAgICAgICB3aGVuICJ0NCIKKyAgICAgICAgICAgICJyUEMiCisgICAgICAg
ICMgbWxhbSBCRUdJTgorICAgICAgICB3aGVuICJ0NSIKKyAgICAgICAgICAgICJyU2NyYXRjaCIK
KyAgICAgICAgd2hlbiAidDYiCisgICAgICAgICAgICAickJhc2VQQyIKKyAgICAgICAgd2hlbiAi
Y3NyMSIKKyAgICAgICAgICAgICJyMTMiCisgICAgICAgIHdoZW4gImNzcjIiCisgICAgICAgICAg
ICAicjE0IgorICAgICAgICAjIG1sYW0gRU5ECisgICAgICAgIHdoZW4gImNmciIKKyAgICAgICAg
ICAgICJyRlAiCisgICAgICAgICMgbWxhbSB3aGVuICJsciIKKyAgICAgICAgIyAgICAiclJldHVy
blBDIgorICAgICAgICAjIG1sYW0gd2hlbiAic3AiCisgICAgICAgICMgICAgInJTUCIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBDX0xP
T1AgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVm
IGN4eFZhbHVlKHR5cGU9ImludCIpCisgICAgICAgIGR1bXAgKyBjeHhNYXBUeXBlKHR5cGUpCisg
ICAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgICAgZGVmIGR1bXAKKyAgICAgICAg
Y2FzZSBuYW1lCisgICAgICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAg
ICAgICAgd2hlbiAiZnQxIgorICAgICAgICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisg
ICAgICAgICAgICAiZDIiCisgICAgICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAg
ICAgICAgd2hlbiAiZnQ0IgorICAgICAgICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisg
ICAgICAgICAgICAiZDUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVn
aXN0ZXIgI3tuYW1lfSBmb3IgQ19MT09QIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIGRlZiBjeHhWYWx1ZSh0eXBlPSJpbnQiKQorICAgICAgICBkdW1w
ICsgY3h4TWFwVHlwZSh0eXBlKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICAg
IGRlZiBkdW1wCisgICAgICAgICIje3ZhbHVlfSIKKyAgICBlbmQKKyAgICBkZWYgY3h4VmFsdWUo
dHlwZT1uaWwpCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisg
ICAgZGVmIGR1bXAKKyAgICAgICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LnZhbHVlfV0iCisg
ICAgZW5kCisgICAgZGVmIGN4eFZhbHVlKHR5cGU9bmlsKQorICAgICAgICBpbnRNZW1SZWYKKyAg
ICBlbmQKKyAgICBkZWYgcG9pbnRlckV4cHIKKyAgICAgICAgaWYgYmFzZS5pc19hPyBSZWdpc3Rl
cklEIGFuZCBiYXNlLm5hbWUgPT0gInNwIiAKKyAgICAgICAgICAgIG9mZnNldFZhbHVlID0gIiN7
b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFsdWV9ID09IG9m
ZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSIKKyAg
ICAgICAgZWxzaWYgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgICAgICIje2Jhc2UuY3h4VmFs
dWUoImludDhwdHIiKX0iCisgICAgICAgIGVsc2lmIG9mZnNldC52YWx1ZSA+IDAKKyAgICAgICAg
ICAgICIje2Jhc2UuY3h4VmFsdWUoImludDhwdHIiKX0gKyAje29mZnNldC52YWx1ZX0iCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICIje2Jhc2UuY3h4VmFsdWUoImludDhwdHIiKX0gLSAjey1v
ZmZzZXQudmFsdWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgaW50TWVtUmVmCisg
ICAgICAgICIqQ0FTVDxpbnRwdHJfdCAqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAg
ZGVmIGludDhNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDhfdCAqPigje3BvaW50ZXJFeHByfSki
CisgICAgZW5kCisgICAgZGVmIGludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnQxNl90ICo+
KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDhNZW1SZWYKKyAgICAgICAg
IipDQVNUPHVpbnQ4X3QgKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50
MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQxNl90ICo+KCN7cG9pbnRlckV4cHJ9KSIKKyAg
ICBlbmQKKyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUgKj4oI3twb2lu
dGVyRXhwcn0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBkdW1w
CisgICAgICAgICJbI3tiYXNlLmR1bXB9LCAje29mZnNldC5kdW1wfSwgI3tpbmRleC5kdW1wfSA8
PCAje3NjYWxlU2hpZnR9XSIKKyAgICBlbmQKKyAgICBkZWYgY3h4VmFsdWUodHlwZT1uaWwpCisg
ICAgICAgIGludE1lbVJlZgorICAgIGVuZAorICAgIGRlZiBwb2ludGVyRXhwcgorICAgICAgICBp
ZiBiYXNlLmlzX2E/IFJlZ2lzdGVySUQgYW5kIGJhc2UubmFtZSA9PSAic3AiCisgICAgICAgICAg
ICBvZmZzZXRWYWx1ZSA9ICIoI3tpbmRleC5jeHhWYWx1ZSgiaW50Iil9IDw8ICN7c2NhbGVTaGlm
dH0pICsgI3tvZmZzZXQuY3h4VmFsdWV9KSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0
VmFsdWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9i
YWxEYXRhKSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFzZS5jeHhWYWx1ZSgiaW50
OHB0ciIpfSArICgje2luZGV4LmN4eFZhbHVlKCJpbnQiKX0gPDwgI3tzY2FsZVNoaWZ0fSkgKyAj
e29mZnNldC5jeHhWYWx1ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBpbnRNZW1S
ZWYKKyAgICAgICAgIipDQVNUPGludHB0cl90ICo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQK
KyAgICBkZWYgaW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90ICo+KCN7cG9pbnRlckV4
cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDE2
X3QgKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50OE1lbVJlZgorICAg
ICAgICAiKkNBU1Q8dWludDhfdCAqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVm
IHVpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDE2X3QgKj4oI3twb2ludGVyRXhwcn0p
IgorICAgIGVuZAorICAgIGRlZiBkYmxNZW1SZWYKKyAgICAgICAgIipDQVNUPGRvdWJsZSAqPigj
e3BvaW50ZXJFeHByfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisg
ICAgZGVmIGR1bXAKKyAgICAgICAgIiN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAg
ZGVmIGN4eFZhbHVlCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCisjCisjIExvd2VyaW5n
IG9mIGJyYW5jaCBvcHMuIEZvciBleGFtcGxlOgorIworIyBiYWRkaXogZm9vLCBiYXIsIGJhegor
IworIyB3aWxsIGJlY29tZToKKyMKKyMgYWRkaSBmb28sIGJhcgorIyBieiBiYXoKKyMKKworZGVm
IGN4eExvd2VyQnJhbmNoT3BzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNo
IHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgor
ICAgICAgICAgICAgI2Nhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgICN3aGVuICJibXVsaW8i
CisgICAgICAgICAgICAjICAgICRzdGRvdXQucHJpbnQgIm5vZGVbI3tub2RlLm9wY29kZX1dXG4i
CisgICAgICAgICAgICAjICAgIHRtcDEgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikK
KyAgICAgICAgICAgICMgICAgdG1wMiA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgICAgICAgIyAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5v
cGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAgICAgICAjICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5vcGVyYW5kc1stMl0sIElt
bWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQorICAgICAgICAgICAgIyAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5lcSIsIFt0
bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICAjd2hlbiAvXmJtdWxp
LworICAgICAgICAgICAgIyAgICAkc3Rkb3V0LnByaW50ICJub2RlWyN7bm9kZS5vcGNvZGV9XVxu
IgorICAgICAgICAgICAgIyAgICBjb25kaXRpb24gPSAkfi5wb3N0X21hdGNoCisgICAgICAgICAg
ICAjICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm11bGki
LCBub2RlLm9wZXJhbmRzWzAuLi0yXSkKKyAgICAgICAgICAgICMgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYnRpIiArIGNvbmRpdGlvbiwgW25vZGUub3Bl
cmFuZHNbLTJdLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICAjZWxzZQorICAgICAg
ICAgICAgIyAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgICNlbmQKKyAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZSAjIG1sYW0gOjogVEVTVCBiZWNhdXNlIHdlIGNvbW1lbnRlZCBvdXQg
ZXZlcnl0aGluZyBhYm92ZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5n
IG9mIHNoaWZ0IG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGxzaGlmdGkgZm9vLCBiYXIKKyMKKyMg
d2lsbCBiZWNvbWU6CisjCisjIGFuZGkgZm9vLCAzMSwgdG1wCisjIGxzaGlmdGkgdG1wLCBiYXIK
KyMKKworZGVmIGN4eFNhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgICByZXR1cm4gb3Bl
cmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJh
bmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5k
LmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXcob3BlcmFuZC5jb2Rl
T3JpZ2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVmIGN4eExvd2VyU2hpZnRPcHMo
bGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUg
fAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBhbm5vdGF0
aW9uID0gbm9kZS5hbm5vdGF0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAg
ICAgICAgICB3aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAibHNoaWZ0cCIs
ICJyc2hpZnRwIiwgInVyc2hpZnRwIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtjeHhTYW5pdGl6ZVNoaWZ0KG5vZGUub3Bl
cmFuZHNbMF0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSwgYW5ub3RhdGlvbikKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBj
eHhTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRz
WzJdXSwgYW5ub3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJl
ciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5k
CisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBh
ZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkcCAxMDAwMFtmb29dLCBiYXIKKyMKKyMg
d2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAorIyBhZGRwIGZvbywgdG1wCisjIGxv
YWRwIDBbdG1wXSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgY3h4TG93ZXJNYWxmb3Jt
ZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAg
ICAgIHwgbm9kZSB8CisgICAgICAgICAgICBub2RlLmN4eExvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
UmVjdXJzZShsaXN0KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcwor
ICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyMgICAgICAg
IGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisjICAgICAg
ICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorIyAgICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkKKyMg
ICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFti
YXNlLCB0bXBdKQorIyAgICAgICAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyMgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNl
bGYKKyMgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRl
ZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyMgICAgICAgIEBtbGFt
VGVzdCA9IDAKKyMgICAgICAgIGlmIEBtbGFtVGVzdCA9PSAwICMgbWxhbSBvcmlnCisjICAgICAg
ICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyMgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorIyAgICAgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisjICAgICAgICAgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0p
CisjICAgICAgICAgICAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwg
c2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisjICAgICAgICAgICAgZWxzZQor
IyAgICAgICAgICAgICAgICBzZWxmCisjICAgICAgICAgICAgZW5kCisjICAgICAgICBlbHNlICMg
bWxhbSBURVNUCisgICAgICAgICAgICBzZWxmCisjICAgICAgICBlbmQgIyBtbGFtIFRFU1QKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgY3h4TG93ZXJNYWxm
b3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9y
aWdpbiwgOmdwcikKKyAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
Im1vdmUiLCBbYWRkcmVzcywgdG1wXSkKKyAgICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
dG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgIGVuZAorZW5kCisKK2RlZiBj
eHhMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxp
c3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5jeHhM
b3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICB9CisgICAgbmV3TGlz
dAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3NlcyBpbiBkb3VibGUg
bG9hZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRkIFtmb28sIGJhciwgOF0s
IGJhegorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtmb28sIGJhciwgOF0sIHRtcAorIyBsb2Fk
ZCBbdG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgY3h4RG91YmxlQWRkcmVzcyhs
aXN0KQorICAgICAgICBzZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAg
ZGVmIGN4eERvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3Jp
Z2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAi
bGVhcCIsIFtzZWxmLCB0bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAs
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZW5kCitlbmQKKworI2RlZiBjeHhM
b3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShsaXN0KQorIyAgICBuZXdMaXN0ID0gW10KKyMg
ICAgbGlzdC5lYWNoIHsKKyMgICAgICAgIHwgbm9kZSB8CisjICAgICAgICBpZiBub2RlLmlzX2E/
IEluc3RydWN0aW9uCisjICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorIyAgICAgICAgICAg
IHdoZW4gImxvYWRkIgorIyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmN4eERvdWJsZUFk
ZHJlc3MobmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dLCBub2RlLmFubm90YXRpb24pCisjICAg
ICAgICAgICAgd2hlbiAic3RvcmVkIgorIyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZWQiLCBbbm9kZS5vcGVyYW5kc1swXSwg
bm9kZS5vcGVyYW5kc1sxXS5jeHhEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSwgbm9kZS5hbm5vdGF0
aW9uKQorIyAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
CisjICAgICAgICAgICAgZW5kCisjICAgICAgICBlbHNlCisjICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlCisjICAgICAgICBlbmQKKyMgICAgfQorIyAgICBuZXdMaXN0CisjZW5kCisKKyMKKyMg
TG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgorIworIyBzdG9y
ZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwgdG1wCisjIHN0b3Jl
aSB0bXAsIFtmb29dCisjCisKKyNkZWYgY3h4TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3Qp
CisjICAgIG5ld0xpc3QgPSBbXQorIyAgICBsaXN0LmVhY2ggeworIyAgICAgICAgfCBub2RlIHwK
KyMgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyMgICAgICAgICAgICBjYXNlIG5v
ZGUub3Bjb2RlCisjICAgICAgICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyMgICAgICAg
ICAgICAgICAgb3BlcmFuZHMgPSBub2RlLm9wZXJhbmRzCisjICAgICAgICAgICAgICAgIG5ld09w
ZXJhbmRzID0gW10KKyMgICAgICAgICAgICAgICAgb3BlcmFuZHMuZWFjaCB7CisjICAgICAgICAg
ICAgICAgICAgICB8IG9wZXJhbmQgfAorIyAgICAgICAgICAgICAgICAgICAgaWYgb3BlcmFuZC5p
c19hPyBJbW1lZGlhdGUKKyMgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyMgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmQs
IHRtcF0pCisjICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisjICAg
ICAgICAgICAgICAgICAgICBlbHNlCisjICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlcmFu
ZHMgPDwgb3BlcmFuZAorIyAgICAgICAgICAgICAgICAgICAgZW5kCisjICAgICAgICAgICAgICAg
IH0KKyMgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2Rl
T3JpZ2luLCBub2RlLm9wY29kZSwgbmV3T3BlcmFuZHMsIG5vZGUuYW5ub3RhdGlvbikKKyMgICAg
ICAgICAgICBlbHNlCisjICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorIyAgICAgICAg
ICAgIGVuZAorIyAgICAgICAgZWxzZQorIyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorIyAg
ICAgICAgZW5kCisjICAgIH0KKyMgICAgbmV3TGlzdAorI2VuZAorCisjCisjIExvd2VyaW5nIG9m
IG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1
Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28KKyMKKworY2xh
c3MgTm9kZQorICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3Qp
CisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAg
ICBub2RlLmN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAg
fQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgY3h4TG93ZXJNYWxmb3Jt
ZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBzZWxmCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vy
c2UobGlzdCkKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRk
cmVzcworICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisg
ICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYgY3h4
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBpZiB2YWx1ZSA8
IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwg
OmdwcikKKyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJt
b3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICAgICAgICB0bXAKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitkZWYgY3h4TG93ZXJNYWxm
b3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsK
KyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAg
ICAgICAgICAgYW5ub3RhdGlvbiA9IG5vZGUuYW5ub3RhdGlvbgorICAgICAgICAgICAgY2FzZSBu
b2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRpcyIsICJz
dWJpIiwgInN1YnAiLCAic3ViaXMiCisgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wZXJh
bmRzWzBdLnZhbHVlIDwgMCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3BlcmFu
ZHNbMF0udmFsdWUgPj0gMjU1IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGVy
YW5kcy5zaXplID09IDIKKyAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGNvZGUgPX4gL2Fk
ZC8KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wY29kZSA9ICJzdWIiICsgbm9kZS5vcGNv
ZGVbLTEuLi0xXQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgbmV3T3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRlLm5ldygtbm9kZS5vcGVyYW5kc1swXS52
YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuY3h4TG93ZXJNYWxmb3JtZWRJbW1l
ZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
d2hlbiAibXVsaSIsICJtdWxwIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9y
aWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdLCBhbm5v
dGF0aW9uKQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgW3RtcF0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5j
eHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
LmN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAg
ZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNl
ZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBhZGRpIGZvbywgW2Jhcl0KKyMKKyMgd2ls
bCBiZWNvbWU6CisjCisjIGxvYWRpIFtiYXJdLCB0bXAKKyMgYWRkaSBmb28sIHRtcAorIyBzdG9y
ZWkgdG1wLCBbYmFyXQorIworIyBBbm90aGVyIGV4YW1wbGU6CisjCisjIGFkZGkgW2Zvb10sIGJh
cgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Zvb10sIHRtcAorIyBhZGRpIHRtcCwg
YmFyCisjCisKK2RlZiBjeHhBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBz
dWZmaXgsIG5lZWRTdG9yZSkKKyAgICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRy
ZXNzPworICAgIAorICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCBpZiBzdWZm
aXggPT0gImQiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQorICAgIHByZUxpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwg
dG1wXSkKKyAgICBpZiBuZWVkU3RvcmUKKyAgICAgICAgcG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0p
CisgICAgZW5kCisgICAgdG1wCitlbmQKKworZGVmIGN4eEFzUmVnaXN0ZXJzKHByZUxpc3QsIHBv
c3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAgIG5ld09wZXJhbmRzID0gW10KKyAgICBvcGVy
YW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG9wZXJhbmQsIGluZGV4IHwKKyAgICAg
ICAgbmV3T3BlcmFuZHMgPDwgY3h4QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFu
ZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICB9CisgICAgbmV3T3Bl
cmFuZHMKK2VuZAorCitkZWYgY3h4TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKKyAgICBu
ZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBp
ZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBwb3N0SW5zdHJ1Y3Rpb25zID0g
W10KKyAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRpb24KKyAgICAgICAgICAg
IGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRp
cyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJsc2hpZnRwIiwgIm11bGkiLCAibXVscCIs
ICJuZWdpIiwKKyAgICAgICAgICAgICAgICAibmVncCIsICJub3RpIiwgIm9yaSIsICJvcmlzIiwg
Im9ycCIsICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInJzaGlmdHAiLCAidXJzaGlmdHAiLCAic3Vi
aSIsCisgICAgICAgICAgICAgICAgInN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4b3JwIiwgL15i
aS8sIC9eYnAvLCAvXmJ0aS8sIC9eYnRwLywgL15jaS8sIC9eY3AvLCAvXnRpLworICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeHhBc1JlZ2lzdGVycyhuZXdM
aXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiaSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3
aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJiZXEiLCAiYnRi
byIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAgICAgICAgICAidGJv
IiwgImNiZXEiLCAiY2JuZXEiLCAiY2JhIiwgImNiYWVxIiwgImNiYiIsICJjYmJlcSIKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3h4QXNSZWdpc3RlcnMo
bmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAg
ICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMi
LCAiY2JndCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCisgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4eEFzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJ
bnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3aGVuICJhZGRk
IiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3h4QXNSZWdpc3RlcnMobmV3TGlzdCwg
cG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAgICAgd2hlbiAi
am1wIiwgImNhbGwiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtjeHhBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFu
ZHNbMF0sICJwIiwgZmFsc2UpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBuZXdMaXN0ICs9IHBv
c3RJbnN0cnVjdGlvbnMKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
CisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMZWEgc3VwcG9y
dC4KKyMKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBjeHhFbWl0TGVhKGRlc3RpbmF0aW9uKQor
ICAgICAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7
ZGVzdGluYXRpb24uY3h4VmFsdWUoImludDhwdHIiKX0gKz0gI3tvZmZzZXQuY3h4VmFsdWV9OyIK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmN4eFZh
bHVlKCJpbnQ4cHRyIil9ID0gI3tiYXNlLmN4eFZhbHVlKCJpbnQ4cHRyIil9ICsgI3tvZmZzZXQu
Y3h4VmFsdWV9OyIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgICAgZGVmIGN4eEVtaXRMZWEoZGVzdGluYXRpb24pCisgICAgICAgIHJhaXNlICJNYWxmb3Jt
ZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hvdWxkIGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5n
fSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9PSAwCisgICAgICAgICRhc20ucHV0YyAiI3tkZXN0aW5h
dGlvbi5jeHhWYWx1ZSgiaW50OHB0ciIpfSA9ICN7YmFzZS5jeHhWYWx1ZSgiaW50OHB0ciIpfSAr
ICgje2luZGV4LmN4eFZhbHVlfSA8PCAje3NjYWxlU2hpZnR9KTsiCisgICAgZW5kCitlbmQKKwor
IyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdl
IGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNz
IFNlcXVlbmNlCisgICAgZGVmIGdldE1vZGlmaWVkTGlzdENfTE9PUAorICAgICAgICBteUxpc3Qg
PSBAbGlzdAorICAgICAgICAKKyAgICAgICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkgc2Vl
IGluc3RydWN0aW9ucyBhbmQgbGFiZWxzLgorICAgICAgICBteUxpc3QuZWFjaCB7CisgICAgICAg
ICAgICB8IG5vZGUgfAorICAgICAgICAgICAgdW5sZXNzIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24g
b3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBMYWJlbCBvcgorICAgICAgICAgICAg
ICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS5pc19hPyBTa2lwCisgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tub2RlLmlu
c3BlY3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgbXlMaXN0ID0gY3h4TG93ZXJCcmFuY2hPcHMobXlMaXN0KQor
ICAgICAgICBteUxpc3QgPSBjeHhMb3dlclNoaWZ0T3BzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0
ID0gY3h4TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBj
eHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBjeHhM
b3dlck1pc3BsYWNlZEFkZHJlc3NlcyhteUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFzc2lnblJl
Z2lzdGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6Z3ByLCBDX0xPT1BfRVhUUkFfR1BSUykKKyAg
ICAgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIs
IENfTE9PUF9FWFRSQV9GUFJTKQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG15TGlzdAorICAg
IGVuZAorZW5kCisKK2RlZiBjeHhPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5tYXB7
fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorZW5kCisKK2RlZiBjeHhGbGlwcGVkT3BlcmFuZHMob3Bl
cmFuZHMpCisgICAgY3h4T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0p
CitlbmQKKworZGVmIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgb3BlcmF0b3IsIG9wZXJhbmRzLCB0
eXBlKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMl0uY3h4VmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSh0eXBlKX0g
I3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSh0eXBlKX07IgorICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICByYWlzZSB1bmxl
c3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSh0eXBlKX0g
I3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSh0eXBlKX07IgorICAgIGVuZAorZW5k
CisKK2RlZiBlbWl0Q1hYKG9wY29kZSwgb3BlcmF0aW9uLCBvcGVyYW5kcywgdHlwZSkKKyAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmN4
eFZhbHVlKHR5cGUpfSA9ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ICN7b3BlcmF0aW9u
fSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKHR5cGUpfTsiCisgICAgZWxzZQorICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1sxXS5jeHhWYWx1ZSh0eXBlKX0gPSAje29wZXJhbmRzWzFdLmN4eFZhbHVlKHR5cGUpfSAje29w
ZXJhdGlvbn0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSh0eXBlKX07IgorICAgIGVuZAorZW5kCisK
K2RlZiBlbWl0Q1hYRG91YmxlQnJhbmNoKG9wZXJhbmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5w
dXRjICJpZiAoI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91YmxlIil9ICN7Y29uZGl0aW9ufSAj
e29wZXJhbmRzWzFdLmN4eFZhbHVlKCJkb3VibGUiKX0pIgorICAgICRhc20ucHV0YyAiICAgIGdv
dG8gI3tvcGVyYW5kc1syXS5jTGFiZWx9OyIKK2VuZAorCitkZWYgZW1pdENYWERvdWJsZUNoZWNr
TmFOQnJhbmNoKG9wZXJhbmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5wdXRjICJpZiAoaXNuYW4o
I3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91YmxlIil9KSB8fCBpc25hbigje29wZXJhbmRzWzFd
LmN4eFZhbHVlKCJkb3VibGUiKX0pIgorICAgICRhc20ucHV0YyAiICAgIHx8ICgje29wZXJhbmRz
WzBdLmN4eFZhbHVlKCJkb3VibGUiKX0gI3tjb25kaXRpb259ICN7b3BlcmFuZHNbMV0uY3h4VmFs
dWUoImRvdWJsZSIpfSkpIgorICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3tvcGVyYW5kc1syXS5j
TGFiZWx9OyIKK2VuZAorCisKK2RlZiBlbWl0Q1hYQ29tcGFyZUFuZFNldChvcGVyYW5kcywgdHlw
ZSwgY29tcGFyYXRvcikKKyAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY3h4VmFsdWUodHlw
ZSl9ID0gKCN7b3BlcmFuZHNbMF0uY3h4VmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tvcDIg
PSBvcGVyYW5kc1sxXS5jeHhWYWx1ZSh0eXBlKX0pOyIKK2VuZAorCisKK2RlZiBlbWl0Q1hYQ29t
cGFyZUFuZEJyYW5jaChvcGVyYW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAkYXNtLnB1dGMg
ImlmICgje29wZXJhbmRzWzBdLmN4eFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9ICN7b3BlcmFu
ZHNbMV0uY3h4VmFsdWUodHlwZSl9KSIKKyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFu
ZHNbMl0uY0xhYmVsfTsiCitlbmQKKworCisjIGNvbmRpdGlvblRlc3Qgc2hvdWxkIGNvbnRhaW4g
YSBzdHJpbmcgdGhhdCBwcm92aWRlcyBhIGNvbXBhcmF0b3IgYW5kIGEgUkhTCisjIHZhbHVlIGUu
Zy4gIjwgMCIuCitkZWYgZ2VuZXJhdGVDWFhDb25kaXRpb25FeHByZXNzaW9uKG9wZXJhbmRzLCBj
b25kaXRpb25UZXN0KQorICAgIG9wMSA9IG9wZXJhbmRzWzBdLmN4eFZhbHVlCisKKyAgICAjIFRo
ZSBvcGVyYW5kcyBtdXN0IGNvbnNpc3Qgb2YgMiBvciAzIHZhbHVlcy4KKyAgICBjYXNlIG9wZXJh
bmRzLnNpemUKKyAgICB3aGVuIDIgIyBKdXN0IHRlc3Qgb3AxIGFnYWluc3QgdGhlIGNvbmRpdGlv
blRlc3QuCisgICAgICAgIGxocyA9IG9wMQorICAgIHdoZW4gMyAjIE1hc2sgb3AxIHdpdGggb3Ay
IGJlZm9yZSB0ZXN0aW5nIGFnYWluc3QgdGhlIGNvbmRpdGlvblRlc3QuCisgICAgICAgIGxocyA9
ICIoI3tvcDF9ICYgI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0pIgorICAgIGVsc2UKKyAgICAgICAg
cmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0g
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICAiI3tsaHN9ICN7Y29u
ZGl0aW9uVGVzdH0iCitlbmQKKworIyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250YWluIGEgc3Ry
aW5nIHRoYXQgcHJvdmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1ZSBlLmcuICI8
IDAiLgorZGVmIGVtaXRDWFhUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIGNvbmRpdGlvblRlc3Qs
IGJyYW5jaFRhcmdldCkKKyAgICBjb25kaXRpb25FeHByID0gZ2VuZXJhdGVDWFhDb25kaXRpb25F
eHByZXNzaW9uKG9wZXJhbmRzLCBjb25kaXRpb25UZXN0KQorICAgICRhc20ucHV0YyAiaWYgKCN7
Y29uZGl0aW9uRXhwcn0pIgorICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3ticmFuY2hUYXJnZXR9
OyIKK2VuZAorCitkZWYgZW1pdENYWFRlc3RTZXQob3BlcmFuZHMsIGNvbmRpdGlvblRlc3QpCisg
ICAgIyBtbGFtIEZJWE1FCisgICAgIyAkYXNtLnB1dGMgIm1vdnMgI3tvcGVyYW5kc1stMV0uY3h4
T3BlcmFuZH0sIFwjMCIKKyAgICAjIGVtaXRDWFhUZXN0KG9wZXJhbmRzKQorICAgICMgJGFzbS5w
dXRjICJpdCAje2NvZGV9IgorICAgICMgJGFzbS5wdXRjICJtb3Yje2NvZGV9ICN7b3BlcmFuZHNb
LTFdLmN4eE9wZXJhbmR9LCBcIzEiCisgICAgb3AxID0gb3BlcmFuZHNbLTFdLmN4eFZhbHVlCisg
ICAgY29uZGl0aW9uRXhwciA9IGdlbmVyYXRlQ1hYQ29uZGl0aW9uRXhwcmVzc2lvbihvcGVyYW5k
cywgY29uZGl0aW9uVGVzdCkKKyAgICAkYXNtLnB1dGMgIiN7b3AxfSA9ICgje2NvbmRpdGlvbkV4
cHJ9KTsiCitlbmQKKworZGVmIGVtaXRDWFhPcEFuZEJyYW5jaChvcGNvZGUsIG9wZXJhbmRzKQor
ICAgIG9wZXJhdGlvbiA9IFN0cmluZygvXmIoYWRkaXxzdWJpfG9yaXxhZGRwKS8ubWF0Y2gob3Bj
b2RlKSkKKyAgICBjb25kaXRpb24gPSAkfi5wb3N0X21hdGNoCisKKyAgICBjYXNlIG9wZXJhdGlv
bgorICAgIHdoZW4gImJhZGRpIiwgImJhZGRwIgorICAgICAgICBvcGVyYXRpb24gPSAiKyIKKyAg
ICB3aGVuICJic3ViaSIKKyAgICAgICAgb3BlcmF0aW9uID0gIi0iCisgICAgd2hlbiAiYm9ycmki
CisgICAgICAgIG9wZXJhdGlvbiA9ICJ8IgorICAgIGVuZAorCisgICAgY2FzZSBjb25kaXRpb24K
KyAgICB3aGVuICJvIgorICAgICAgICByYWlzZSAiQ2Fubm90IGhhbmRsZSBvdmVyZmxvdyBpbiB0
aGlzIGVtaXR0ZXIuIgorICAgIHdoZW4gInMiCisgICAgICAgIGNvbmRpdGlvblRlc3QgPSAiPCAw
IgorICAgIHdoZW4gInoiCisgICAgICAgIGNvbmRpdGlvblRlc3QgPSAiPT0gMCIKKyAgICB3aGVu
ICJueiIKKyAgICAgICAgY29uZGl0aW9uVGVzdCA9ICIhPSAwIgorICAgIGVsc2UKKyAgICAgICAg
JHN0ZG91dC5wcmludCAiVW5rbm93biBjb25kaXRpb24gJyN7Y29uZGl0aW9ufSciCisgICAgZW5k
CisKKyAgICBvcDEgPSBvcGVyYW5kc1swXS5jeHhWYWx1ZQorICAgIG9wMiA9IG9wZXJhbmRzWzFd
LmN4eFZhbHVlCisKKyAgICAkYXNtLnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgaW50cHRy
X3Qgb3AxID0gI3tvcDF9OyIKKyAgICAkYXNtLnB1dGMgIiAgICBpbnRwdHJfdCBvcDIgPSAje29w
Mn07IgorICAgICRhc20ucHV0YyAiICAgIGludHB0cl90IHRlbXAgPSBvcDIgI3tvcGVyYXRpb259
IG9wMTsiCisgICAgJGFzbS5wdXRjICIgICAgaWYgKHRlbXAgI3tjb25kaXRpb25UZXN0fSkiCisg
ICAgJGFzbS5wdXRjICIgICAgICAgIGdvdG8gICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAg
JGFzbS5wdXRjICIgICAgI3tvcDJ9ID0gdGVtcDsiCisgICAgJGFzbS5wdXRjICJ9IgorZW5kCisK
K2RlZiBlbWl0Q1hYT3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wY29kZSwgb3BlcmFuZHMpCisgICAg
Y2FzZSBvcGNvZGUKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgICBvcGVyYXRp
b24gPSAiKyIKKyAgICB3aGVuICJic3ViaW8iCisgICAgICAgIG9wZXJhdGlvbiA9ICItIgorICAg
IGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisKKyAgICAkYXNtLnB1dGMgInsiCisgICAgaWYgb3Bl
cmF0aW9uID09ICIrIgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkg
fCBPdmVyZmxvd3MgaWY6IgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAgICAg
ICAgfCBzaWduKGIrYSkgPSAxIChwb3MgKyBwb3MgIT0gbmVnKSIKKyAgICAgICAgJGFzbS5wdXRj
ICIgICAgLy8gMCAgICAgICAxICAgICAgIHwgbmV2ZXIiCisgICAgICAgICRhc20ucHV0YyAiICAg
IC8vIDEgICAgICAgMCAgICAgICB8IG5ldmVyIgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAx
ICAgICAgIDEgICAgICAgfCBzaWduKGIrYSkgPSAwIChuZWcgKyBuZWcgIT0gcG9zKSIKKyAgICAg
ICAgb3ZlcmZsb3dUZXN0ID0gIigoU0lHTl9CSVQoYikgPT0gU0lHTl9CSVQoYSkpICYmIChTSUdO
X0JJVChiK2EpICE9IFNJR05fQklUKGEpKSkiCisgICAgZWxzZSAjIG9wY29kZSA9ICItIgorICAg
ICAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6Igor
ICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAgICAgICAgfCBuZXZlciIKKyAgICAg
ICAgJGFzbS5wdXRjICIgICAgLy8gMCAgICAgICAxICAgICAgIHwgc2lnbihiLWEpID0gMSAocG9z
IC0gbmVnICE9IHBvcykiCisgICAgICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAgMCAgICAg
ICB8IHNpZ24oYi1hKSA9IDAgKG5lZyAtIHBvcyAhPSBwb3MpIgorICAgICAgICAkYXNtLnB1dGMg
IiAgICAvLyAxICAgICAgIDEgICAgICAgfCBuZXZlciIKKyAgICAgICAgb3ZlcmZsb3dUZXN0ID0g
IigoU0lHTl9CSVQoYikgIT0gU0lHTl9CSVQoYSkpICYmIChTSUdOX0JJVChiLWEpID09IFNJR05f
QklUKGEpKSkiCisgICAgZW5kCisgICAgJGFzbS5wdXRjICIgICAgaW50cHRyX3QgYSA9ICN7b3Bl
cmFuZHNbMF0uY3h4VmFsdWV9OyIKKyAgICAkYXNtLnB1dGMgIiAgICBpbnRwdHJfdCBiID0gI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZX07IgorICAgICRhc20ucHV0YyAiICAgIGlmICN7b3ZlcmZsb3dU
ZXN0fSIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgorICAgICRhc20ucHV0YyAiICAgICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9ID0gYiAje29wZXJh
dGlvbn0gYTsiCisgICAgJGFzbS5wdXRjICJ9IgorZW5kCisKK2RlZiBlbWl0Q1hYTXVsQW5kQnJh
bmNoSWZPdmVyZmxvdyhvcGNvZGUsIG9wZXJhbmRzKQorICAgICNvcGVyYXRpb24gPSBTdHJpbmco
L15iKGFkZGl8c3ViaXxvcml8YWRkcCkvLm1hdGNoKG9wY29kZSkpCisgICAgI2NvbmRpdGlvbiA9
ICR+LnBvc3RfbWF0Y2gKKworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYm11bGlvIgorICAg
ICAgICBvcGVyYXRpb24gPSAiKiIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJVbmhhbmRsZWQg
b3Bjb2RlICN7b3Bjb2RlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorCisgICAg
JGFzbS5wdXRjICJ7IgorICAgICRhc20ucHV0YyAiICAgIGludHB0cl90IG9wMSA9ICN7b3BlcmFu
ZHNbMF0uY3h4VmFsdWV9OyIKKyAgICAkYXNtLnB1dGMgIiAgICBpbnRwdHJfdCBvcDIgPSAje29w
ZXJhbmRzWzFdLmN4eFZhbHVlfTsiCisgICAgJGFzbS5wdXRjICIgICAgLy8gQ2hlYXAgb3ZlcmZs
b3cgY2hlY2suICBXZSdsbCBsZXQgc2xvdyBwYXRoIGhhbmRsZSB0aGUgaGFyZCBjYXNlIGJlbG93
OiIKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAoKG9wMSB8IG9wMikgPj4gMTUpIgorICAgICRhc20u
cHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICRhc20ucHV0
YyAiICAgICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9ID0gb3AyICN7b3BlcmF0aW9ufSBvcDE7Igor
ICAgICRhc20ucHV0YyAifSIKK2VuZAorCisjIG9wZXJhbmRzOiBjYWxsVGFyZ2V0LCBjdXJyZW50
RnJhbWUsIGN1cnJlbnRQQworZGVmIGVtaXRDWFhDYWxsU2xvd1BhdGgob3Bjb2RlLCBvcGVyYW5k
cykKKyAgICAkYXNtLnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPigje29wZXJhbmRzWzFdLmN4eFZhbHVlKCJ2b2lkcHRyIil9KTsi
CisgICAgJGFzbS5wdXRjICIgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KCN7b3BlcmFuZHNbMl0uY3h4VmFsdWUoInZvaWRwdHIiKX0pOyIKKyAgICAkYXNtLnB1dGMgIiAg
ICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gI3tvcGVyYW5kc1swXS5jTGFiZWx9KGV4ZWMs
IHBjKTsiCisgICAgJGFzbS5wdXRjICIgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
LnUuaW5zdHJ1Y3Rpb24sIHIxLnUuZXhlY1N0YXRlKTsiCisgICAgJGFzbS5wdXRjICJ9IgorZW5k
CisKK2NsYXNzIEluc3RydWN0aW9uCisgICAgZGVmIGxvd2VyQ19MT09QCisgICAgICAgICRhc20u
Y29kZU9yaWdpbiBjb2RlT3JpZ2luU3RyaW5nIGlmICRlbmFibGVDb2RlT3JpZ2luQ29tbWVudHMK
KyAgICAgICAgJGFzbS5zb3VyY2VJbnN0cnVjdGlvbiAiI3tvcGNvZGV9ICN7Y3h4T3BlcmFuZHMo
b3BlcmFuZHMpfTsiIGlmICRlbmFibGVTb3VyY2VJbnN0cnVjdGlvbkR1bXAKKyAgICAgICAgJGFz
bS5hbm5vdGF0aW9uIGFubm90YXRpb24gaWYgJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMKKworICAg
ICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiCisg
ICAgICAgICAgICBpZiBvcGNvZGUgPT0gImFkZGlzIgorICAgICAgICAgICAgICAgIHN1ZmZpeCA9
ICJzIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIiCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBd
LnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAgICAgICAgICAgICAgICAgdW5sZXNz
IG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAgICAkYXNt
LnB1dGMgIiN7b3BlcmFuZHNbMl0uY3h4VmFsdWV9LCA9ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9
OyIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY3h4VmFsdWV9ID0gI3tvcGVy
YW5kc1sxXS5jeHhWYWx1ZX0gKyAje29wZXJhbmRzWzBdLmN4eFZhbHVlfTsiCisgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICIj
e29wZXJhbmRzWzFdLmN4eFZhbHVlfSArPSAje29wZXJhbmRzWzBdLmN4eFZhbHVlfTsiCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAgICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0g
b3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1
ZX07IgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4g
ImFuZGkiLCAiYW5kcCIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgIiYiLCBv
cGVyYW5kcywgImludCIpCisgICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgICAgICBl
bWl0Q1hYQ29tcGFjdChvcGNvZGUsICJ8Iiwgb3BlcmFuZHMsICJpbnQiKQorICAgICAgICB3aGVu
ICJvcmlzIgorICAgICAgICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAifCIsIG9wZXJhbmRz
LCAiaW50IikKKyAgICAgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgICAgICAgZW1pdENY
WENvbXBhY3Qob3Bjb2RlLCAiXiIsIG9wZXJhbmRzLCAiaW50IikKKyAgICAgICAgd2hlbiAibHNo
aWZ0aSIsICJsc2hpZnRwIgorICAgICAgICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAiPDwi
LCBvcGVyYW5kcywgImludCIpCisgICAgICAgIHdoZW4gInJzaGlmdGkiLCAicnNoaWZ0cCIKKyAg
ICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgIj4+Iiwgb3BlcmFuZHMsICJpbnQiKQor
ICAgICAgICB3aGVuICJ1cnNoaWZ0aSIsICJ1cnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRDWFhD
b21wYWN0KG9wY29kZSwgIj4+Iiwgb3BlcmFuZHMsICJ1aW50IikKKyAgICAgICAgd2hlbiAibXVs
aSIsICJtdWxwIgorICAgICAgICAgICAgZW1pdENYWCgibXVsIiwgIioiLCBvcGVyYW5kcywgImlu
dCIpCisgICAgICAgIHdoZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVt
aXRDWFhDb21wYWN0KG9wY29kZSwgIi0iLCBvcGVyYW5kcywgImludCIpCisgICAgICAgIHdoZW4g
Im5lZ2kiLCAibmVncCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1swXS5jeHhW
YWx1ZX0gPSAtI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAgICB3aGVuICJub3RpIgor
ICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzBdLmN4eFZhbHVlfSA9ICEje29wZXJh
bmRzWzBdLmN4eFZhbHVlfTsiCisgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJsb2Fk
cCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9
ID0gI3tvcGVyYW5kc1swXS5pbnRNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAic3RvcmVpIiwgInN0
b3JlcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5pbnRNZW1SZWZ9ID0g
I3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiaW50Iil9OyIKKyAgICAgICAgd2hlbiAibG9hZGIiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInVpbnQiKX0gPSAj
e29wZXJhbmRzWzBdLnVpbnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9ID0gI3tvcGVy
YW5kc1swXS5pbnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS51aW50OE1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmN4
eFZhbHVlKCJpbnQiKX0iCisgICAgICAgIHdoZW4gImxvYWRoIgorICAgICAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzFdLmN4eFZhbHVlKCJ1aW50Iil9ID0gI3tvcGVyYW5kc1swXS51aW50
MTZNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIje29wZXJhbmRzWzFdLmN4eFZhbHVlKCJpbnQiKX0gPSAje29wZXJhbmRzWzBdLmludDE2TWVt
UmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiKiN7
b3BlcmFuZHNbMV0udWludDE2TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoIml2YWwi
KX07IgorICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVy
YW5kc1sxXS5jeHhWYWx1ZSgiZG91YmxlIil9ID0gI3tvcGVyYW5kc1swXS5kYmxNZW1SZWZ9OyIK
KyAgICAgICAgd2hlbiAic3RvcmVkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRz
WzFdLmRibE1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJkb3VibGUiKX07IgorICAg
ICAgICB3aGVuICJhZGRkIgorICAgICAgICAgICAgZW1pdENYWCgidmFkZC5mNjQiLCAiKyIsIG9w
ZXJhbmRzLCAiZG91YmxlIikKKyAgICAgICAgd2hlbiAiZGl2ZCIKKyAgICAgICAgICAgIGVtaXRD
WFgoInZkaXYuZjY0IiwgIi8iLCBvcGVyYW5kcywgImRvdWJsZSIpCisgICAgICAgIHdoZW4gInN1
YmQiCisgICAgICAgICAgICBlbWl0Q1hYKCJ2c3ViLmY2NCIsICItIiwgb3BlcmFuZHMsICJkb3Vi
bGUiKQorICAgICAgICB3aGVuICJtdWxkIgorICAgICAgICAgICAgZW1pdENYWCgidm11bC5mNjQi
LCAiKiIsIG9wZXJhbmRzLCAiZG91YmxlIikKKyAgICAgICAgd2hlbiAic3FydGQiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoImRvdWJsZSIpfSA9IHNxcnQo
I3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiZG91YmxlIil9KTsiCisgICAgICAgIHdoZW4gImNpMmQi
CisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoImRvdWJsZSIp
fSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWV9OyIKKyAgICAgICAgd2hlbiAiYmRlcSIKKyAgICAg
ICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3BlcmFuZHMsICI9PSIpCisgICAgICAgICN3aGVu
ICJiZG5lcSIKKyAgICAgICAgIyAgICAkYXNtLnB1dGMgInZjbXBlLmY2NCAje2N4eE9wZXJhbmRz
KG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICMgICAgJGFzbS5wdXRjICJ2bXJzIGFwc3Jfbnpj
diwgZnBzY3IiCisgICAgICAgICMgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgi
YmRuZXEiKQorICAgICAgICAjICAgICRhc20ucHV0YyAiYnZzICN7TGFiZWxSZWZlcmVuY2UubmV3
KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5jTGFiZWx9IgorICAgICAgICAjICAgICRhc20ucHV0
YyAiYm5lICN7b3BlcmFuZHNbMl0uY0xhYmVsfSIKKyAgICAgICAgIyAgICBpc1Vub3JkZXJlZC5s
b3dlcigiQ19MT09QIikKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAgICAgIGVtaXRDWFhE
b3VibGVCcmFuY2gob3BlcmFuZHMsICI+IikKKyAgICAgICAgd2hlbiAiYmRndGVxIgorICAgICAg
ICAgICAgZW1pdENYWERvdWJsZUJyYW5jaChvcGVyYW5kcywgIj49IikKKyAgICAgICAgd2hlbiAi
YmRsdCIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3BlcmFuZHMsICI8IikKKyAg
ICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUJyYW5jaChvcGVy
YW5kcywgIjw9IikKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgZW1pdENYWERv
dWJsZUNoZWNrTmFOQnJhbmNoKG9wZXJhbmRzLCAiPT0iKQorICAgICAgICB3aGVuICJiZG5lcXVu
IgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUNoZWNrTmFOQnJhbmNoKG9wZXJhbmRzLCAiIT0i
KQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAgICAgICAgICBlbWl0Q1hYRG91YmxlQ2hlY2tO
YU5CcmFuY2gob3BlcmFuZHMsICI+IikKKyAgICAgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAg
ICAgICBlbWl0Q1hYRG91YmxlQ2hlY2tOYU5CcmFuY2gob3BlcmFuZHMsICI+PSIpCisgICAgICAg
IHdoZW4gImJkbHR1biIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVDaGVja05hTkJyYW5jaChv
cGVyYW5kcywgIjwiKQorICAgICAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgICAgICAgIGVtaXRD
WFhEb3VibGVDaGVja05hTkJyYW5jaChvcGVyYW5kcywgIjw9IikKKyAgICAgICAgd2hlbiAiYnRk
MmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8ganVzdCBnZXQg
cmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgorICAgICAgICAg
ICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAgICAgcmFpc2UgIkNfTE9P
UCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAg
ICAgd2hlbiAidGQyaSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhW
YWx1ZSgiaW50Iil9ID0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91YmxlIil9OyIKKyAgICAg
ICAgd2hlbiAiYmNkMmkiICAjIG9wZXJhbmRzOiBzcmNEYmwgZHN0SW50IHNsb3dQYXRoCisgICAg
ICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBkb3VibGUg
ZCA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoImRvdWJsZSIpfTsiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiAgICBjb25zdCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihk
KTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJ
bnQzMiAmJiBzaWduYml0KGQpKSkgLy8gdHJ1ZSBmb3IgLTAuMCIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICAgICAgICAg
JGFzbS5wdXRjICIgICAgI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gPSBhc0ludDMyOyIgICAgICAg
ICAgICAKKyAgICAgICAgICAgICRhc20ucHV0YyAifSIKKworICAgICAgICB3aGVuICJtb3ZkeiIK
KyAgICAgICAgICAgICMgRklYTUU6IGVpdGhlciBzdXBwb3J0IHRoaXMgb3IgcmVtb3ZlIGl0Lgor
ICAgICAgICAgICAgcmFpc2UgIkNfTE9PUCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHll
dCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgI3doZW4gInBvcCIKKyAgICAgICAgIyAgICAkYXNt
LnB1dGMgInBvcCAje29wZXJhbmRzWzBdLmN4eE9wZXJhbmR9IgorICAgICAgICAjd2hlbiAicHVz
aCIKKyAgICAgICAgIyAgICAkYXNtLnB1dGMgInB1c2ggI3tvcGVyYW5kc1swXS5jeHhPcGVyYW5k
fSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgICAgICAgIGlm
IG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgIGN4eE1vdmVJbW1l
ZGlhdGUob3BlcmFuZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgidWludCIp
fSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoInVpbnQiKX07IgorICAgICAgICAgICAgZW5kCisg
ICAgICAgIHdoZW4gIm5vcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiLy8gbm9wIgorICAgICAg
ICB3aGVuICJiaWVxIiwgImJwZXEiLCAiYmJlcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJl
QW5kQnJhbmNoKG9wZXJhbmRzLCAiaW50IiwgIj09IikKKyAgICAgICAgd2hlbiAiYmluZXEiLCAi
YnBuZXEiLCAiYmJuZXEiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZEJyYW5jaChvcGVy
YW5kcywgImludCIsICIhPSIpCisgICAgICAgIHdoZW4gImJpYSIsICJicGEiLCAiYmJhIgorICAg
ICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJ1aW50IiwgIj4iKQor
ICAgICAgICB3aGVuICJiaWFlcSIsICJicGFlcSIsICJiYmFlcSIKKyAgICAgICAgICAgIGVtaXRD
WFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAidWludCIsICI+PSIpCisgICAgICAgIHdoZW4g
ImJpYiIsICJicGIiLCAiYmJiIgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsICJ1aW50IiwgIjwiKQorICAgICAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJi
YmJlcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAidWlu
dCIsICI8PSIpCisgICAgICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAgICAgICAg
ICAgZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJpbnQiLCAiPiIpCisgICAgICAg
IHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJndGVxIgorICAgICAgICAgICAgZW1pdENYWENv
bXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJpbnQiLCAiPj0iKQorICAgICAgICB3aGVuICJiaWx0
IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9w
ZXJhbmRzLCAiaW50IiwgIjwiKQorICAgICAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIiwgImJi
bHRlcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAiaW50
IiwgIjw9IikKKyAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICAgICAg
ICBlbWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCAiPT0gMCIsIG9wZXJhbmRzWy0xXS5j
TGFiZWwpCisgICAgICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgorICAgICAgICAg
ICAgZW1pdENYWFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgIiE9IDAiLCBvcGVyYW5kc1stMV0u
Y0xhYmVsKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJidGJv
IgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgICAjIG1sYW0gZW1pdENYWFRlc3Qob3BlcmFuZHMp
CisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgICMgbWxhbSAkYXNtLnB1dGMgImJ2cyAje29wZXJh
bmRzWy0xXS5jTGFiZWx9IgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgICBlbWl0Q1hYVGVzdEFu
ZEJyYW5jaElmKG9wZXJhbmRzLCAidnMiKSAjIEJyYW5jaCBpZiBvdmVyZmxvdy4KKyAgICAgICAg
d2hlbiAiYnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICAgICAgICBlbWl0Q1hYVGVzdEFuZEJy
YW5jaElmKG9wZXJhbmRzLCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hl
biAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRjICJnb3RvICN7b3BlcmFuZHNbMF0uY0xhYmVsfTsiCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvICoje29wZXJhbmRzWzBdLmN4eFZh
bHVlKCJ2b2lkcHRyIil9OyIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjYWxsIgor
ICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5w
dXRjICJ7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIHZvaWQgKCpmKSgpID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KCN7b3BlcmFuZHNbMF0uY0xhYmVsfSk7IgorICAgICAg
ICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisgICAgICAgICAgICAgICAgJGFzbS5wdXRj
ICJ9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0YyAieyIKKyAg
ICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB2b2lkICgqZikoKSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCgqKSgpPigje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJ2b2lkcHRyIil9KTsiCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgZigpOyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1
dGMgIn0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYnJlYWsiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIkNSQVNIKCk7IC8vIE5vdCBoYW5kbGVkIHlldC4iCisgICAgICAgIHdoZW4g
InJldF9tbGFtIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiYnggbHIiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgImNyYXNoKCk7IC8vIG1sYW0gRklYTUUiCisgICAgICAgIHdoZW4gImNp
ZXEiLCAiY3BlcSIsICJjYmVxIgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3Bl
cmFuZHMsICJ1aW50IiwgIj09IikKKyAgICAgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiLCAiY2Ju
ZXEiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZFNldChvcGVyYW5kcywgInVpbnQiLCAi
IT0iKQorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIiwgImNiYSIKKyAgICAgICAgICAgIGVtaXRD
WFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAidWludCIsICI+IikKKyAgICAgICAgd2hlbiAiY2lh
ZXEiLCAiY3BhZXEiLCAiY2JhZXEiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZFNldChv
cGVyYW5kcywgInVpbnQiLCAiPj0iKQorICAgICAgICB3aGVuICJjaWIiLCAiY3BiIiwgImNiYiIK
KyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAidWludCIsICI8IikK
KyAgICAgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiLCAiY2JiZXEiCisgICAgICAgICAgICBlbWl0
Q1hYQ29tcGFyZUFuZFNldChvcGVyYW5kcywgInVpbnQiLCAiPCIpCisgICAgICAgIHdoZW4gImNp
Z3QiLCAiY3BndCIsICJjYmd0IgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3Bl
cmFuZHMsICJpbnQiLCAiPiIpCisgICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiLCAiY2Jn
dGVxIgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJpbnQiLCAi
Pj0iKQorICAgICAgICB3aGVuICJjaWx0IiwgImNwbHQiLCAiY2JsdCIKKyAgICAgICAgICAgIGVt
aXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAiaW50IiwgIjwiKQorICAgICAgICB3aGVuICJj
aWx0ZXEiLCAiY3BsdGVxIiwgImNibHRlcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5k
U2V0KG9wZXJhbmRzLCAiaW50IiwgIjw9IikKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0
aW8iLCAidGJvIiwgInRwbyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgZW1pdENYWFRlc3RT
ZXQob3BlcmFuZHMsICJ2cyIpCisgICAgICAgIHdoZW4gInRpcyIsICJ0YnMiLCAidHBzIgorICAg
ICAgICAgICAgZW1pdENYWFRlc3RTZXQob3BlcmFuZHMsICI8IDAiKQorICAgICAgICB3aGVuICJ0
aXoiLCAidGJ6IiwgInRweiIKKyAgICAgICAgICAgIGVtaXRDWFhUZXN0U2V0KG9wZXJhbmRzLCAi
PT0gMCIpCisgICAgICAgIHdoZW4gInRpbnoiLCAidGJueiIsICJ0cG56IgorICAgICAgICAgICAg
ZW1pdENYWFRlc3RTZXQob3BlcmFuZHMsICIhPSAwIikKKyAgICAgICAgd2hlbiAiY2RxaSIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiY3Jhc2goKTsgLy8gbWxhbSBGSVhNRSIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiY2RxIgorICAgICAgICB3aGVuICJpZGl2aSIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiY3Jhc2goKTsgLy8gbWxhbSBGSVhNRSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiaWRp
dmwgI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX0iCisgICAgICAgICMgbWxhbSBFTkQgCisgICAgICAg
IHdoZW4gImZpaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmN4eFZh
bHVlKCJkb3VibGUiKX0gPSBJbnRzMkRvdWJsZSgje29wZXJhbmRzWzBdLmN4eFZhbHVlfSwgI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZX0pOyIKKyAgICAgICAgd2hlbiAiZmQyaWkiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIkRvdWJsZTJJbnRzKCN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoImRvdWJsZSIp
fSwgI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0sICN7b3BlcmFuZHNbMl0uY3h4VmFsdWV9KTsiCisg
ICAgICAgICMgbWxhbSBCRUdJTgorICAgICAgICAjd2hlbiAiZnAyZCIKKyAgICAgICAgIyAgICAk
YXNtLnB1dGMgIkhhaGEgSSBjYW4gYmxvdyBzdHVmZiB1cCEiCisgICAgICAgICN3aGVuICJmZDJw
IgorICAgICAgICAjICAgICRhc20ucHV0YyAiSGFoYSBJIGNhbiBibG93IHN0dWZmIHVwIFRPTyEi
CisgICAgICAgICMgbWxhbSBFTkQKKyAgICAgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAg
ICAgICAgb3BlcmFuZHNbMF0uY3h4RW1pdExlYShvcGVyYW5kc1sxXSkKKyAgICAgICAgI3doZW4g
InNtdWxsaSIKKyAgICAgICAgIyAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0
byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNz
IG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAgICMgICAgJGFzbS5wdXRjICJzbXVsbCAje29w
ZXJhbmRzWzJdLmN4eE9wZXJhbmR9LCAje29wZXJhbmRzWzNdLmN4eE9wZXJhbmR9LCAje29wZXJh
bmRzWzBdLmN4eE9wZXJhbmR9LCAje29wZXJhbmRzWzFdLmN4eE9wZXJhbmR9IgorICAgICAgICB3
aGVuICJiYWRkaW8iLCAiYnN1YmlvIgorICAgICAgICAgICAgZW1pdENYWE9wQW5kQnJhbmNoSWZP
dmVyZmxvdyhvcGNvZGUsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiYWRkaXMiLCAiYmFkZGl6
IiwgImJhZGRpbnoiLAorICAgICAgICAgICAgICJiYWRkcHMiLCAiYmFkZHB6IiwgImJhZGRwbnoi
LAorICAgICAgICAgICAgICJic3ViaXMiLCAiYnN1Yml6IiwgImJzdWJpbnoiLAorICAgICAgICAg
ICAgICJib3JyaXMiLCAiYm9ycml6IiwgImJvcnJpbnoiCisgICAgICAgICAgICBlbWl0Q1hYT3BB
bmRCcmFuY2gob3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYm11bGlvIgorICAgICAg
ICAgICAgZW1pdENYWE11bEFuZEJyYW5jaElmT3ZlcmZsb3cob3Bjb2RlLCBvcGVyYW5kcykKKyAg
ICAgICAgd2hlbiAiY3h4Q3Jhc2giCisgICAgICAgICAgICAkYXNtLnB1dGMgImNyYXNoKCk7Igor
ICAgICAgICB3aGVuICJjeHhDYWxsSlNGdW5jdGlvbiIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
Z290byBjYWxsSlNGdW5jdGlvbjsiCisgICAgICAgIHdoZW4gImN4eENhbGxTbG93UGF0aCIKKyAg
ICAgICAgICAgIGVtaXRDWFhDYWxsU2xvd1BhdGgob3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAg
d2hlbiAiY3h4TmV4dE9wY29kZSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiTkVYVF9JTlNUUlVD
VElPTigpOyIKKyAgICAgICAgd2hlbiAiY3h4VHJhY2UiCisgICAgICAgICAgICAkYXNtLnB1dGNU
cmFjZUxhc3RHbG9iYWxMYWJlbAorICAgICAgICB3aGVuICJtbGFtQnJlYWsiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIm1sYW1CcmVhayhcIm1sYW1CcmVha1wiLCBfX0ZJTEVfXywgX19MSU5FX18p
OyIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG93ZXJEZWZhdWx0CisgICAgICAgIGVuZAor
ICAgIGVuZAorZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0
cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3
ICsxMzQsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAiYm9yaW56IiwKICAgICAgImJy
ZWFrIiwKICAgICAgImNhbGwiLAotICAgICAicmV0IiwKKyAgICAgInJldF9tbGFtIiwKICAgICAg
ImNiZXEiLAogICAgICAiY2JuZXEiLAogICAgICAiY2JhIiwKQEAgLTIyNyw3ICsyMjcsMTcgQEAg
QVJNdjdfSU5TVFJVQ1RJT05TID0KICAgICAgIm9yaXMiCiAgICAgXQogCi1JTlNUUlVDVElPTlMg
PSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJ
T05TCitDWFhfSU5TVFJVQ1RJT05TID0KKyAgICBbCisgICAgICJtbGFtQnJlYWsiLCAgICAgICAg
ICAjIG5vIG9wZXJhbmRzIC4uLiBmb3IgZGVidWdnaW5nIG9ubHkKKyAgICAgImN4eENyYXNoIiwg
ICAgICAgICAgICMgbm8gb3BlcmFuZHMKKyAgICAgImN4eENhbGxKU0Z1bmN0aW9uIiwgICMgbm8g
b3BlcmFuZHMKKyAgICAgImN4eENhbGxTbG93UGF0aCIsICAgICMgb3BlcmFuZHM6IGNhbGxUYXJn
ZXQsIGN1cnJlbnRGcmFtZSwgY3VycmVudFBDCisgICAgICJjeHhOZXh0T3Bjb2RlIiwgICAgICAj
IG5vIG9wZXJhbmRzCisgICAgICJjeHhUcmFjZSIsICAgICAgICAgICAjIG5vIG9wZXJhbmRzCisg
ICAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJ
T05TICsgQVJNdjdfSU5TVFJVQ1RJT05TICsgQ1hYX0lOU1RSVUNUSU9OUwogCiBJTlNUUlVDVElP
Tl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcp
ICsgJykpXFxaJykKIApAQCAtMjM2LDYgKzI0Niw2IEBAIGRlZiBpc0JyYW5jaChpbnN0cnVjdGlv
bikKIGVuZAogCiBkZWYgaGFzRmFsbFRocm91Z2goaW5zdHJ1Y3Rpb24pCi0gICAgaW5zdHJ1Y3Rp
b24gIT0gInJldCIgYW5kIGluc3RydWN0aW9uICE9ICJqbXAiCisgICAgaW5zdHJ1Y3Rpb24gIT0g
InJldF9tbGFtIiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKIGVuZAogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTgz
NSwxMCArODM1LDEwIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImpsIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJibHRlcSIKICAgICAgICAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKLSAgICAgICAgd2hlbiAiYnRpbyIK
LSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKLSAgICAgICAgd2hl
biAiYnRwbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOnB0cikKKyAg
ICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJidGlvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgICAgICMgbWxhbSBVTlVTRUQg
d2hlbiAiYnRwbyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgiam8iLCA6cHRyKQogICAgICAgICB3aGVuICJidGlzIgogICAgICAgICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianMiLCA6aW50KQogICAgICAgICB3aGVuICJidHBzIgpAQCAtODUxLDggKzg1
MSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0
KCJqbnoiLCA6aW50KQogICAgICAgICB3aGVuICJidHBueiIKICAgICAgICAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpueiIsIDpwdHIpCi0gICAgICAgIHdoZW4gImJ0Ym8iCi0gICAgICAgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgICAgICAjIG1sYW0gVU5VU0VE
IHdoZW4gImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgiam8iLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiYnRicyIKICAgICAgICAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJ0YnoiCkBAIC05MDUsNyAr
OTA1LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICRhc20ucHV0cyAiaW50ICQz
IgogICAgICAgICB3aGVuICJjYWxsIgogICAgICAgICAgICAgJGFzbS5wdXRzICJjYWxsICN7b3Bl
cmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOnB0cil9IgotICAgICAgICB3aGVuICJyZXQiCisgICAg
ICAgIHdoZW4gInJldF9tbGFtIgogICAgICAgICAgICAgJGFzbS5wdXRzICJyZXQiCiAgICAgICAg
IHdoZW4gImNpZXEiCiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwg
OmludCkKQEAgLTk2NywyNCArOTY3LDI0IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDpieXRlKQogICAgICAgICB3aGVuICJj
cGx0ZXEiCiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDpwdHIp
Ci0gICAgICAgIHdoZW4gInRpbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8i
LCA6aW50KQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRpbyIKKyAgICAgICAgIyBtbGFt
IFVOVVNFRCAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKICAgICAgICAgd2hlbiAi
dGlzIgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCiAgICAgICAg
IHdoZW4gInRpeiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQog
ICAgICAgICB3aGVuICJ0aW56IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoi
LCA6aW50KQotICAgICAgICB3aGVuICJ0cG8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXRvIiwgOnB0cikKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0cG8iCisgICAgICAg
ICMgbWxhbSBVTlVTRUQgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6cHRyKQogICAgICAg
ICB3aGVuICJ0cHMiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOnB0cikK
ICAgICAgICAgd2hlbiAidHB6IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIs
IDpwdHIpCiAgICAgICAgIHdoZW4gInRwbnoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXRueiIsIDpwdHIpCi0gICAgICAgIHdoZW4gInRibyIKLSAgICAgICAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0Ym8i
CisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0
ZSkKICAgICAgICAgd2hlbiAidGJzIgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
cyIsIDpieXRlKQogICAgICAgICB3aGVuICJ0YnoiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDcgQEAgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1KU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBldmFs
dWF0ZV9tbGFtQ29tcGxldGlvbihFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29w
ZUNoYWluLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Zh
bHVlKiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICBBU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSA9PSB3dGZUaHJl
YWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpKTsKQEAgLTcyLDcgKzcyLDcgQEAgSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQwogICAgIGlmICghdGhpc1ZhbHVl
IHx8IHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICB0aGlzVmFsdWUgPSBl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlz
VmFsdWUudG9UaGlzT2JqZWN0KGV4ZWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50
ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShwcm9ncmFtLCBleGVjLCBzY29wZUNoYWluLCB0aGlzT2JqKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGVfbWxhbVAo
cHJvZ3JhbSwgZXhlYywgc2NvcGVDaGFpbiwgdGhpc09iaik7CiAKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkocmV2aXNpb24gMTIzMjg5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNvdXJj
ZUNvZGU7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
KiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpLCBKU1Zh
bHVlKiBleGNlcHRpb24gPSAwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1
YXRlX21sYW1Db21wbGV0aW9uKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpLCBKU1ZhbHVlKiBleGNlcHRp
b24gPSAwKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzA3LDcgKzMwNyw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9w
dGkKICAgICBBU1NFUlQoISFtX3Byb2dyYW1Db2RlQmxvY2spOwogICAgIEpTT2JqZWN0KiBlcnJv
ciA9IDA7CiAgICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENv
ZGU6OnRvcFRpZXJKSVQoKSkKLSAgICAgICAgZXJyb3IgPSBjb21waWxlSW50ZXJuYWwoZXhlYywg
c2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6Om5leHRUaWVySklUKG1fcHJvZ3JhbUNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpKSk7CisgICAgICAgIGVycm9yID0gY29tcGlsZUludGVybmFsX21sYW1QKGV4
ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpuZXh0VGllckpJVChtX3Byb2dyYW1Db2RlQmxv
Y2stPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCghIW1fcHJvZ3JhbUNvZGVCbG9jayk7CiAg
ICAgcmV0dXJuIGVycm9yOwogfQpAQCAtMzE5LDcgKzMxOSw3IEBAIGJvb2wgUHJvZ3JhbUV4ZWN1
dGFibGU6OmppdENvbXBpbGUoRXhlY1MKIH0KICNlbmRpZgogCi1KU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQorSlNPYmplY3QqIFBy
b2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWxfbWxhbVAoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9u
KGppdFR5cGUpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDIyICsyMjEsMjIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbnN0cnVj
dFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYykK
KyAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZV9tbGFtKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNhbGxUaHVuaywgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb25zdHJ1Y3RUaHVuaywgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Y2xhc3NpY0VuYWJs
ZWQoKSk7CiAgICAgICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogICAgICAg
ICAgICAgaWYgKCFjYWxsVGh1bmspIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFw
KSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwot
ICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIEpJ
VENvZGUoKSwgSklUQ29kZSgpLCBpbnRyaW5zaWMpOworICAgICAgICAgICAgICAgIGV4ZWN1dGFi
bGUtPmZpbmlzaENyZWF0aW9uX21sYW0oZ2xvYmFsRGF0YSwgSklUQ29kZSgpLCBKSVRDb2RlKCks
IGludHJpbnNpYyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9i
YWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25z
dHJ1Y3Rvcik7Ci0gICAgICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsRGF0YSwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNhbGxUaHVuayksIEpJVENvZGU6Okhvc3RG
dW5jdGlvbihjb25zdHJ1Y3RUaHVuayksIGludHJpbnNpYyk7CisgICAgICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+ZmluaXNoQ3JlYXRpb25fbWxhbShnbG9iYWxEYXRhLCBKSVRDb2RlOjpIb3N0RnVu
Y3Rpb24oY2FsbFRodW5rKSwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwg
aW50cmluc2ljKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxl
OwogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQor
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQog
ICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWdsb2JhbERhdGEuY2FuVXNlSklU
KCkpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJvdGVjdGVk
OgogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlIGNhbGxUaHVuaywgSklUQ29kZSBjb25zdHJ1Y3RUaHVu
aywgSW50cmluc2ljIGludHJpbnNpYykKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbl9tbGFt
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSBjYWxsVGh1bmssIEpJVENvZGUgY29u
c3RydWN0VGh1bmssIEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Y2xhc3NpY0VuYWJsZWQoKSk7CiAgICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKQEAgLTQ0Myw3ICs0NDMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRh
KCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBKU09iamVjdCogZXJyb3IgPSAw
OwogICAgICAgICAgICAgaWYgKCFtX3Byb2dyYW1Db2RlQmxvY2spCi0gICAgICAgICAgICAgICAg
ZXJyb3IgPSBjb21waWxlSW50ZXJuYWwoZXhlYywgc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OmJv
dHRvbVRpZXJKSVQoKSk7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBjb21waWxlSW50ZXJuYWxf
bWxhbVAoZXhlYywgc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIWVycm9yID09ICEhbV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQpAQCAtNDg1LDcgKzQ4NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6U3RydWN0dXJlRmxh
Z3M7CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmKTsKIAotICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlwZSk7CisgICAgICAgIEpTT2JqZWN0KiBjb21w
aWxlSW50ZXJuYWxfbWxhbVAoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpK
SVRUeXBlKTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1D
b2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcg
KzgyLDcgQEAgSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZQogICAgIENv
bnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRG
dW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5Db25zdHJ1Y3QgPSBjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVOb25lOwogCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oYm91bmRGdW5jdGlv
bkNhbGwsIGNhbkNvbnN0cnVjdCA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb25fbWxhbTEoYm91bmRGdW5jdGlvbkNh
bGwsIGNhbkNvbnN0cnVjdCA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3Rvcik7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpT
Qm91bmRGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+Ym91bmRGdW5j
dGlvblN0cnVjdHVyZSgpLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3VuZEFyZ3MpOwog
CiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIGxlbmd0aCwg
bmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEwICs2NywxMCBAQCBKU0Z1bmN0
aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlCiAjZWxzZQogICAgIGlmIChpbnRyaW5z
aWMgIT0gTm9JbnRyaW5zaWMgJiYgZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKSB7CiAg
ICAgICAgIEFTU0VSVChuYXRpdmVDb25zdHJ1Y3RvciA9PSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25z
dHJ1Y3Rvcik7Ci0gICAgICAgIGV4ZWN1dGFibGUgPSBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9z
dEZ1bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOworICAgICAgICBleGVjdXRhYmxl
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbl9tbGFtMihuYXRpdmVGdW5jdGlv
biwgaW50cmluc2ljKTsKICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBleGVjdXRhYmxlID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgbmF0aXZl
Q29uc3RydWN0b3IpOworICAgICAgICBleGVjdXRhYmxlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmdl
dEhvc3RGdW5jdGlvbl9tbGFtMShuYXRpdmVGdW5jdGlvbiwgbmF0aXZlQ29uc3RydWN0b3IpOwog
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8gQ2FuJ3QgZG8gdGhp
cyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8g
YSBHQyBhbGxvY2F0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMjEg
KzM2MCwyMSBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJCiAgICAg
fQogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCitOYXRp
dmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbl9tbGFtMShOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7Ci0jaWYgRU5B
QkxFKENMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIp
IHx8IEVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICBpZiAoIWNhblVzZUpJVCgpKQog
ICAgICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwg
Y29uc3RydWN0b3IpOwogI2VuZGlmCi0gICAgcmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25T
dHViKHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CisgICAgcmV0dXJuIGppdFN0dWJzLT5o
b3N0RnVuY3Rpb25TdHViX21sYW0xKHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CiB9Ci1O
YXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYykKK05hdGl2ZUV4ZWN1dGFibGUqIEpT
R2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uX21sYW0yKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCBJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIEFTU0VSVChjYW5Vc2VKSVQoKSk7Ci0gICAg
cmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHViKHRoaXMsIGZ1bmN0aW9uLCBpbnRyaW5z
aWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhpbnRyaW5zaWMp
IDogMCwgaW50cmluc2ljKTsKKyAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWJf
bWxhbTIodGhpcywgZnVuY3Rpb24sIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2Vu
ZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNpYykgOiAwLCBpbnRyaW5zaWMpOwogfQogI2Vsc2UK
LU5hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKK05hdGl2ZUV4ZWN1
dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uX21sYW0xKE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsKICAgICByZXR1cm4gTmF0
aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJl
dmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsOSArMzAyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBqaXRTdHVicy0+Y3RpU3R1Yih0aGlzLCBn
ZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RG
dW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljKTsKKyAgICAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZ2V0SG9zdEZ1bmN0aW9uX21sYW0yKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMpOwog
I2VuZGlmCi0gICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVG
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpOworICAgICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb25fbWxhbTEoTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yKTsKIAogICAgICAgICBUaW1lb3V0Q2hlY2tlciB0aW1lb3V0Q2hlY2tl
cjsKICAgICAgICAgVGVybWluYXRvciB0ZXJtaW5hdG9yOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NiArMTM4LDExIEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAgICAgOyAvLyBEZWNvbmZ1
c2UgZWRpdG9ycyB0aGF0IGRvIGF1dG8gaW5kZW50YXRpb24KICNlbmRpZgogICAgIAorI2lmIEVO
QUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KKyAgICB1c2VKSVQoKSA9IGZhbHNlOworICAgIHVz
ZURGR0pJVCgpID0gZmFsc2U7CisjZW5kaWYgLy8gbWxhbQorCiAgICAgLy8gRG8gcmFuZ2UgY2hl
Y2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAg
ICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDog
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAvKiBJbmNsdWRlIGNvbXBpbGVyIHNw
ZWNpZmljIG1hY3JvcyAqLwogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogCisjZGVmaW5lIEVO
QUJMRV9KSVQgMAorCiAvKiA9PT09IFBMQVRGT1JNIGhhbmRsZXMgT1MsIG9wZXJhdGluZyBlbnZp
cm9ubWVudCwgZ3JhcGhpY3MgQVBJLCBhbmQKICAgIENQVS4gVGhpcyBtYWNybyB3aWxsIGJlIHBo
YXNlZCBvdXQgaW4gZmF2b3Igb2YgcGxhdGZvcm0gYWRhcHRhdGlvbgogICAgbWFjcm9zLCBwb2xp
Y3kgZGVjaXNpb24gbWFjcm9zLCBhbmQgdG9wLWxldmVsIHBvcnQgZGVmaW5pdGlvbnMuID09PT0g
Ki8KQEAgLTg5Myw2ICs4OTUsMTQgQEAKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkg
fHwgQ1BVKEFSTV9USFVNQjIpKQogI2RlZmluZSBFTkFCTEVfTExJTlQgMQogI2VuZGlmCisvLyBt
bGFtIEJFR0lOCisjaWYgIUVOQUJMRShKSVQpCisgICAgI2RlZmluZSBFTkFCTEVfQ0xBU1NJQ19J
TlRFUlBSRVRFUiAwCisgICAgI2RlZmluZSBFTkFCTEVfSklUIDAKKyAgICAjZGVmaW5lIEVOQUJM
RV9MTElOVCAxCisgICAgI2RlZmluZSBFTkFCTEVfWUFSUl9KSVQgMAorI2VuZGlmCisvLyBtbGFt
IEVORCAqLwogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAv
KiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBN
YWMgYW5kIEdOVS9MaW51eC4gKi8KQEAgLTkzMiwxMCArOTQyLDExIEBACiAjZW5kaWYKIAogLyog
RW5zdXJlIHRoYXQgZWl0aGVyIHRoZSBKSVQgb3IgdGhlIGludGVycHJldGVyIGhhcyBiZWVuIGVu
YWJsZWQuICovCi0jaWYgIWRlZmluZWQoRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFF
TkFCTEUoSklUKQorI2lmICFkZWZpbmVkKEVOQUJMRV9DTEFTU0lDX0lOVEVSUFJFVEVSKSAmJiAh
RU5BQkxFKEpJVCkgJiYgIUVOQUJMRShMTElOVCkKICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5U
RVJQUkVURVIgMQogI2VuZGlmCi0jaWYgIShFTkFCTEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikpCisvLyBtbGFtIG9yaWcgI2lmICEoRU5BQkxFKEpJVCkgfHwgRU5BQkxFKENM
QVNTSUNfSU5URVJQUkVURVIpKQorI2lmICEoRU5BQkxFKEpJVCkgfHwgRU5BQkxFKENMQVNTSUNf
SU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpCiAjZXJyb3IgWW91IGhhdmUgdG8gaGF2ZSBh
dCBsZWFzdCBvbmUgZXhlY3V0aW9uIG1vZGVsIGVuYWJsZWQgdG8gYnVpbGQgSlNDCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50
U3RhdGUoZXhlYyk7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
ICAgIHJldHVybiBKU0M6OmV2YWx1YXRlKGV4ZWMsIGNoYWluLCBzb3VyY2UsIHRoaXNWYWx1ZSwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24o
ZXhlYywgY2hhaW4sIHNvdXJjZSwgdGhpc1ZhbHVlLCBleGNlcHRpb24pOwogICAgIH07CiAKIHBy
b3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2aXNp
b24gMTIzMjg5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgX05QTl9FdmFsdWF0ZShOUFAgaW5z
dGFuY2UsIE5QT2JqZWMKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAg
IFN0cmluZyBzY3JpcHRTdHJpbmcgPSBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KHMpOwogICAgICAg
ICAKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUocm9vdE9iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpT
VmFsdWUoKSk7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlX21s
YW1Db21wbGV0aW9uKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJv
b3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uo
c2NyaXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgICAgIGNvbnZlcnRWYWx1ZVRv
TlBWYXJpYW50KGV4ZWMsIHJldHVyblZhbHVlLCB2YXJpYW50KTsKICAgICAgICAgZXhlYy0+Y2xl
YXJFeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0Lm1tCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pu
aV9qc29iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIGpvYmplY3Qg
SmF2YUpTT2JqZWN0OjpldmFsKGpzdHJpbmcgc2NyaXAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhy
b290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsKICAgICAKICAgICByb290
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKHJvb3RPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoSmF2YVN0cmluZyhzY3JpcHQpLmltcGwoKSkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihyb290T2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCByb290T2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKEphdmFTdHJpbmcoc2NyaXB0KS5p
bXBsKCkpKTsKICAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRp
bWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgIHJldHVybiBjb252ZXJ0VmFsdWVUb0pPYmplY3Qo
cmVzdWx0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156435</attachid>
            <date>2012-08-03 12:41:08 -0700</date>
            <delta_ts>2012-08-09 08:58:18 -0700</delta_ts>
            <desc>Work in progress 3: the 32bit version now runs and passes the JSC tests, v8 bench, and sunspider.  64bit version still needs to be worked on.</desc>
            <filename>bug-91052-wop3.patch</filename>
            <type>text/plain</type>
            <size>342947</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDMwIEBACiAjZWxzZQogI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNf
T05fR0NDIDEKICNlbmRpZgorCisvLyBtbGFtIEJFR0lOCisvLyBtbGFtIEJFR0lOIHRlc3QKKy8v
I3VuZGVmIEVOQUJMRV9KSVQKKy8vI2RlZmluZSBFTkFCTEVfSklUIDAKKy8vIG1sYW0gRU5ECisK
Ky8vI3VuZGVmIExMSU5UCisvLyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKworI2RlZmluZSBtbGFt
X1BSSU5URiAwCisjaWYgIUVOQUJMRShKSVQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9DX0xPT1Ag
MQorI2RlZmluZSBFTkFCTEVfQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSIDAKKwor
Ly8gTWFrZSBzdXJlIHRoZSBERkcgaXMgdHVybmVkIG9mZiBpZiBiYXNpYyBKSVQgc3VwcG9ydCBp
cyBvZmYuCisjdW5kZWYgRU5BQkxFX0RGR19KSVQKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMAor
CisjZWxzZSAvLyAhRU5BQkxFKEpJVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX0NfTE9PUCAwCisj
ZW5kaWYgLy8gIUVOQUJMRShKSVQpCisKKy8vI3VuZGVmIEVOQUJMRV9MTElOVF9DX0xPT1AKKy8v
I2RlZmluZSBFTkFCTEVfTExJTlRfQ19MT09QIDAgLy8gRm9yY2UgaXQgb24uCisvLyBtbGFtIEVO
RAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OSw3ICszNDksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgSlNWYWx1ZSBl
eGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQo
KTsKLSAgICBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSks
IEpTVmFsdWUoKSwgJmV4Y2VwdGlvbik7CisgICAgZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZleGNlcHRp
b24pOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoISFleGNlcHRpb24pIHsKQEAg
LTM3MCw3ICszNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9h
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKICAgICAKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxl
TmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEo
KSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAo
ZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01NDIs
NyArNTQyLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAg
ICAgICBnbG9iYWxEYXRhLnN0YXJ0U2FtcGxpbmcoKTsKIAogICAgICAgICBKU1ZhbHVlIGV2YWx1
YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWlu
KCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZV9tbGFtQ29t
cGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXZh
bHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0
aW9uRXhjZXB0aW9uOwogICAgICAgICBpZiAoZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikK
ICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkudXRmOCgpLmRhdGEoKSk7CkBAIC01ODgsNyArNTg4LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50
ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KgogICAgICAgICBpZiAobGluZVswXSkKICAgICAgICAgICAg
IGFkZF9oaXN0b3J5KGxpbmUpOwogICAgICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247
Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShs
aW5lLCBpbnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsK
KyAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4o
KSwganNjU291cmNlKGxpbmUsIGludGVycHJldGVyTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRp
b25FeGNlcHRpb24pOwogICAgICAgICBmcmVlKGxpbmUpOwogI2Vsc2UKICAgICAgICAgcHJpbnRm
KCIlcyIsIGludGVyYWN0aXZlUHJvbXB0KTsKQEAgLTYwNSw3ICs2MDUsNyBAQCBzdGF0aWMgdm9p
ZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqCiAgICAgICAgIGxpbmUuYXBwZW5kKCdcMCcp
OwogCiAgICAgICAgIEpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1
ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9i
YWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKGxpbmUuZGF0YSgpLCBpbnRl
cnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAg
SlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291
cmNlKGxpbmUuZGF0YSgpLCBpbnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9u
RXhjZXB0aW9uKTsKICNlbmRpZgogICAgICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAg
ICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi50
b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZS5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlUmVm
IEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBt
YWtlU291cmNlKHNjcmlwdC0+dXN0cmluZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgVGV4dFBv
c2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIp
LCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNl
cHRpb247Ci0gICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgc291cmNlLCBq
c1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJldHVyblZh
bHVlID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwg
JmV2YWx1YXRpb25FeGNlcHRpb24pOwogCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5jCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkod29ya2luZyBjb3B5KQpAQCAtMTAzMiw2ICsxMDMyLDEz
IEBAIHN0YXRpYyB2b2lkIGNoZWNrQ29uc3RuZXNzSW5KU09iamVjdE5hbWUKIAogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKKyAgICAgICAgcHJpbnRmKCIgJXMiLCBhcmd2W2ld
KTsKKyAgICB9CisgICAgcHJpbnRmKCJcbiIpOworICAgIC8vIG1sYW0gRU5ECisKICNpZiBPUyhX
SU5ET1dTKQogICAgIC8vIEN5Z3dpbiBjYWxscyA6OlNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJ
Q0FMRVJST1JTKSwgd2hpY2ggd2Ugd2lsbCBpbmhlcml0LiBUaGlzIGlzIGJhZCBmb3IKICAgICAv
LyB0ZXN0aW5nL2RlYnVnZ2luZywgYXMgaXQgY2F1c2VzIHRoZSBwb3N0LW1vcnRlbSBkZWJ1Z2dl
ciBub3QgdG8gYmUgaW52b2tlZC4gV2UgcmVzZXQgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTcwNyw2ICs3MDcsOCBAQAogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAg
Ki87IH07CiAJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
MTEyRUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkU0QTMzMUYxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEEzMzFE
MTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi87IH07CisJCUZFNEEzMzIwMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QTMzMUUxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVj
dG9yLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE0OTIsNiArMTQ5NCw4IEBACiAJ
CUY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg2MDI1NTU5N0Qw
MUZGNjBGNyAvKiBVU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Zh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGRTRB
MzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0x
Njk0LDYgKzE2OTgsOCBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0
ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNEEz
MzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8sCisJCQkJRkU0QTMzMUUx
NUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYz
NjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFD
NzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJQTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8q
IENhY2hlZENhbGwuaCAqLywKQEAgLTI4NTgsNiArMjg2NCw3IEBACiAJCQkJMEY3NjZEMzkxNUFF
NEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU0QTMzMjAxNUJEMkUw
NzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM0NTUsNiArMzQ2
Miw3IEBACiAJCQkJMEY3NjZEMkYxNUE4RENFMDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91
dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQzNDE1QUUyNTM4MDA4RjM2M0UgLyog
SnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQz
ODE1QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGRTRBMzMxRjE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEyMzI4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc2Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiIC8vIG1sYW0KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
Mjg5LDEwICsyOTAsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgLy8gbWxhbSBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29kZVB0cihMTEludE9wY29kZSBvcGNvZGUpCisgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVMTEludENvZGVQdHIoTExJbnRPcGNv
ZGVJRCBvcGNvZGUpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3Bjb2RlKSk7CisgICAgfQorI2Vsc2UKICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29kZVB0cih2b2lkICgqZnVu
Y3Rpb24pKCkpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKTsKICAgICB9CisjZW5kaWYKICAgICBl
eHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKICAgICAg
ICAgOiBtX3ZhbHVlKHJhLnZhbHVlKCkpCiAgICAgewpAQCAtMzU0LDExICszNjMsMTggQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICAvLyBIZWxwZXIgZm9yIGNyZWF0aW5nIHNlbGYtbWFuYWdl
ZCBjb2RlIHJlZnMgZnJvbSBMTEludC4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIC8v
IG1sYW0gc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjcmVhdGVMTEludENvZGVSZWYoTExJ
bnRPcGNvZGUgb3Bjb2RlKQorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3JlYXRl
TExJbnRDb2RlUmVmKExMSW50T3Bjb2RlSUQgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZy
b21FeGVjdXRhYmxlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wY29kZSkpKTsKKyAgICB9
CisjZWxzZQogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3JlYXRlTExJbnRDb2Rl
UmVmKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJs
ZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikpKTsKICAgICB9Ci0gICAgCisj
ZW5kaWYKICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2V4ZWN1dGFibGVNZW1vcnkuZ2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjYsMTMgKzIwMjYsMTkgQEAgdm9pZCBDb2RlQmxvY2s6
OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdAogICAgIHBlcmZvcm1UcmFjaW5nRml4cG9pbnRJdGVy
YXRpb24odmlzaXRvcik7CiB9CiAKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNpZiBF
TkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtp
bmcgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBm
YWxzZTsKICNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisvKiBtbGFtIFVOVVNFRCAvIG1s
YW0gQkVHSU4KKyNlbHNlIAorc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZh
bHNlOworLy8gbWxhbSBFTkQgKi8KKy8vIG1sYW0gb3JpZyAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIAogdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkKIHsKQEAgLTI1NzUsMTIgKzI1
ODEsMzQgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogICAgIHdoaWxl
IChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAg
ICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRj
aEJ1ZmZlcik7CiB9CisvLyBtbGFtIEJFR0lOCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAorI2lm
IEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCisvLyBtbGFtIEVORAogdW5zaWdu
ZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICNpZiBFTkFCTEUoTExJTlQpCisgICAgLyogbWxhbSBC
RUdJTgogICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfYmVnaW4pCiAgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgKi8KKyNpZiBFTkFCTEUoSklUKQor
ICAgIC8vIFdoZW4gdXNpbmcgdGhlIEpJVCwgd2UgY291bGQgaGF2ZSBhZGRyZXNzZXMgdGhhdCBu
b3QgYnl0ZWNvZGUgYWRkcmVzc2VzLgorICAgIC8vIFdlIGNoZWNrIGlmIHRoZSByZXR1cm4gYWRk
cmVzcyBpcyBpbiB0aGUgTExpbnQgZ2x1ZSBhbmQgb3Bjb2RlIGhhbmRsZXJzCisgICAgLy8gcmFu
Z2UgaGVyZSB0byBlbnN1cmUgdGhhdCB3ZSBhcmUgbG9va2luZyBhdCBieXRlY29kZSBiZWZvcmUg
YXR0ZW1wdGluZworICAgIC8vIHRvIGNvbnZlcnQgdGhlIHJldHVybiBhZGRyZXNzIGludG8gYSBi
eXRlY29kZSBvZmZzZXQuCisgICAgLy8KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiB0aGUgQyBMb29w
IExMSW50LCB0aGUgSklUIGlzIGRpc2FibGVkLCBhbmQgdGhlIG9ubHkKKyAgICAvLyB2YWxpZCBy
ZXR1cm4gYWRkcmVzc2VzIHNob3VsZCBiZSBieXRlY29kZSBQQ3MuICBTbywgd2UgY2FuIGJ5cGFz
cyB0aGlzCisgICAgLy8gY2hlY2sgaW4gdGhhdCBjYXNlLgorICAgIGlmIChyZXR1cm5BZGRyZXNz
LnZhbHVlKCkgPj0gTExJTlRfQUREUkVTU19PRl9HTFVFKGxsaW50X2JlZ2luKQorICAgICAgICAm
JiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gTExJTlRfQUREUkVTU19PRl9HTFVFKGxsaW50X2Vu
ZCkpIAorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmV0dXJuQWRkcmVzcyk7CisjZW5kaWYKKyAg
ICB7CisgICAgLy8gbWxhbSBFTkQKICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsK
ICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOwogICAgICAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CkBAIC0yNTk0LDE4ICsy
NjIyLDUyIEBAIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1MKICAgICAg
ICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA8PSBPUENPREVfTEVOR1RI
KG9wX2NhbGwpKTsKICAgICAgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BD
T0RFX0xFTkdUSChvcF9jb25zdHJ1Y3QpKTsKICAgICAgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgo
b3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAgICAgICAgLyogbWxh
bSBCRUdJTgogICAgICAgICBpZiAoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbF92
YXJhcmdzKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF92
YXJhcmdzKSkgeworICAgICAgICAqLworICAgICAgICBpZiAoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9M
RU5HVEgob3BfY2FsbF92YXJhcmdzKV0udS5wb2ludGVyID09IExMSU5UX0FERFJFU1NfT0ZfT1BD
T0RFX0hBTkRMRVIob3BfY2FsbF92YXJhcmdzKSkgeworICAgICAgICAvLyBtbGFtIEVORAogICAg
ICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHRoZSBwcmVjZWRpbmcgaW5zdHJ1Y3Rpb24gbXVzdCBi
ZSBvcF9jYWxsX3ZhcmFyZ3MgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdGhhdAogICAgICAgICAg
ICAgLy8gdGhlIHBvaW50ZXIgdG8gdGhlIGNhbGxfdmFyYXJncyBjb3VsZCBiZSBhbiBvcGVyYW5k
IHRvIHRoZSBjYWxsLgogICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gLT0gT1BDT0RFX0xFTkdUSChv
cF9jYWxsX3ZhcmFyZ3MpOworICAgICAgICAgICAgLyogbWxhbSBCRUdJTgogICAgICAgICAgICAg
QVNTRVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgIT0g
Yml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsKQogICAgICAgICAgICAgICAgICAgICYm
IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgIT0gYml0d2lz
ZV9jYXN0PHZvaWQqPihsbGludF9vcF9jb25zdHJ1Y3QpCiAgICAgICAgICAgICAgICAgICAgJiYg
aW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfZXZhbCkpOworICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgIC8qIG1sYW0KKyAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xF
TkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IExMSU5UX0FERFJFU1NfT0ZfT1BDT0RFX0hBTkRM
RVIob3BfY2FsbCkKKyAgICAgICAgICAgICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xF
TkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IExMSU5UX0FERFJFU1NfT0ZfT1BDT0RFX0hBTkRM
RVIob3BfY29uc3RydWN0KQorICAgICAgICAgICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENP
REVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgIT0gTExJTlRfQUREUkVTU19PRl9PUENPREVf
SEFORExFUihvcF9jYWxsX2V2YWwpKTsKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBBU1NF
UlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBMTElu
dDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9wX2NhbGwpCisgICAgICAgICAgICAgICAgICAgJiYgaW5z
dHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBMTEludDo6RGF0
YTo6Z2V0T3Bjb2RlUHRyKG9wX2NvbnN0cnVjdCkKKyAgICAgICAgICAgICAgICAgICAmJiBpbnN0
cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IExMSW50OjpEYXRh
OjpnZXRPcGNvZGVQdHIob3BfY2FsbF9ldmFsKSk7CisgICAgICAgICAgICAvLyBtbGFtIEVORCAq
LwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gTXVzdCBiZSB0aGF0IHRoZSBsYXN0
IGluc3RydWN0aW9uIHdhcyBzb21lIG9wX2NhbGwuCisgICAgICAgICAgICAvKiBtbGFtIEJFR0lO
CiAgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCld
LnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGwpCiAgICAgICAg
ICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9p
bnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVjdCkKICAgICAgICAg
ICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2lu
dGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFsKSk7CisgICAgICAg
ICAgICAqLworICAgICAgICAgICAgaWYgKCEoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3Bf
Y2FsbCldLnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9wX2NhbGwpCisg
ICAgICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCld
LnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9wX2NvbnN0cnVjdCkKKyAg
ICAgICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51
LnBvaW50ZXIgPT0gTExJbnQ6OkRhdGE6OmdldE9wY29kZVB0cihvcF9jYWxsX2V2YWwpKSkgewor
ICAgICAgICAgICAgICAgIHByaW50ZigiaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2Fs
bCldLnUucG9pbnRlciA9ICVwXG4iLCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxs
KV0udS5wb2ludGVyKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIkxMSU5UX0FERFJFU1NfT0Zf
T1BDT0RFX0hBTkRMRVIob3BfY2FsbCkgPSAlcFxuIiwgTExJbnQ6OkRhdGE6OmdldE9wY29kZVB0
cihvcF9jYWxsKSk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJMTElOVF9BRERSRVNTX09GX09Q
Q09ERV9IQU5ETEVSKG9wX2NvbnN0cnVjdCkgPSAlcFxuIiwgTExJbnQ6OkRhdGE6OmdldE9wY29k
ZVB0cihvcF9jb25zdHJ1Y3QpKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIkxMSU5UX0FERFJF
U1NfT0ZfT1BDT0RFX0hBTkRMRVIob3BfY2FsbF9ldmFsKSA9ICVwXG4iLCBMTEludDo6RGF0YTo6
Z2V0T3Bjb2RlUHRyKG9wX2NhbGxfZXZhbCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LyogbWxhbQorICAgICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9w
X2NhbGwpXS51LnBvaW50ZXIgPT0gTExJTlRfQUREUkVTU19PRl9PUENPREVfSEFORExFUihvcF9j
YWxsKQorICAgICAgICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9w
X2NhbGwpXS51LnBvaW50ZXIgPT0gTExJTlRfQUREUkVTU19PRl9PUENPREVfSEFORExFUihvcF9j
b25zdHJ1Y3QpCisgICAgICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5H
VEgob3BfY2FsbCldLnUucG9pbnRlciA9PSBMTElOVF9BRERSRVNTX09GX09QQ09ERV9IQU5ETEVS
KG9wX2NhbGxfZXZhbCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEFTU0VSVChpbnN0
cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IExMSW50OjpEYXRh
OjpnZXRPcGNvZGVQdHIob3BfY2FsbCkKKyAgICAgICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlv
blstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IExMSW50OjpEYXRhOjpnZXRP
cGNvZGVQdHIob3BfY29uc3RydWN0KQorICAgICAgICAgICAgICAgICAgIHx8IGluc3RydWN0aW9u
Wy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gTExJbnQ6OkRhdGE6OmdldE9w
Y29kZVB0cihvcF9jYWxsX2V2YWwpKTsKKyAgICAgICAgICAgIC8vIG1sYW0gRU5EICovCiAgICAg
ICAgICAgICBpbnN0cnVjdGlvbiAtPSBPUENPREVfTEVOR1RIKG9wX2NhbGwpOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMjYxNCwxMiArMjY3NiwxNSBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KEV4ZWNTCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRp
ZgorCisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbSBpcyB0aGlzIHRydWx5IEpJVCBvbmx5PyAgQ2hl
Y2sgd2l0aCBGaWxpcC4KICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybiAxOwog
ICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2Vz
ID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CiAgICAgaWYgKCFjYWxsSW5k
aWNlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBiaW5hcnlTZWFyY2g8
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJu
T2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENv
ZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbSBpcyB0aGlzIHRydWx5IEpJVCBvbmx5PyAgQ2hl
Y2sgd2l0aCBGaWxpcC4KIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAKIC8vIChhcyBvcHBvc2VkIHRvIGFwcCBkZWJ1Z2dpbmcpLCB0aGlzIGZlYXR1cmUgaXMg
dG8gYmUgZGlzYWJsZWQgYnkgZGVmYXVsdCwKIC8vIGFuZCBjYW4gYmUgZW5hYmxlZCBhcyBuZWVk
ZWQgZm9yIFZNIGRldmVsb3BtZW50IHVzZSBvbmx5LgogCi0jZGVmaW5lIEVOQUJMRV9CWVRFQ09E
RV9DT01NRU5UUyAwCisjZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyAxIC8vIG1sYW0g
d2FzIDAKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIyOCw5ICsyMjgsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRo
b2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUlu
ZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9z
LnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CisjZW5kaWYgLy8gbWxhbQogCiAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQ
dHIpOwogCisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpCkBAIC0yNTAsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsK
ICAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJ
TlQpCiAgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5j
b21pbmcpCiAgICAgICAgIHsKQEAgLTI1OCw3ICsyNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29t
aW5nQ2FsbHMoKTsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogCiAjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGpp
dENvZGVNYXApCkBAIC0zMzQsMTAgKzMzNywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIHVuc2lnbmVkIGFwcGVuZFdhdGNocG9pbnQoY29uc3QgSnVtcFJlcGxhY2VtZW50
V2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKICAgICAgICAgeworI2lmIEVOQUJMRShKSVQpCiAgICAg
ICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9k
ZmdEYXRhLT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh3YXRjaHBvaW50KTsK
KyAgICAgICAgICAgIHJldHVybiAwOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtODEyLDYgKzgyMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEgJiYgISFtX3JhcmVEYXRh
LT5tX2NvZGVPcmlnaW5zLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyNpZiBFTkFCTEUo
SklUKSAvLyBtbGFtCiAgICAgICAgIGJvb2wgY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghaGFzQ29kZU9yaWdpbnMoKSkKQEAgLTgyMyw3ICs4MzIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBlbnRyeS0+Y29kZU9yaWdp
bjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorI2VuZGlm
CisKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKHVuc2lnbmVkIGluZGV4KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjMy
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRnJvbQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBV
TlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKLSNp
ZiBFTkFCTEUoTExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExM
SU5UKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRl
eDsKICAgICAKICAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0
aG9kX2NoZWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVm
aW5lIEluc3RydWN0aW9uX2gKIAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIiAvLyBtbGFtIFJFRkFDVE9SIHRoaXMgaW50byBhIExM
SW50T3Bjb2RlLmguCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJPcGNv
ZGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKQEAgLTE5Nyw2ICsxOTgsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2Rl
OworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICBMTEludE9wY29kZSBsbGlu
dE9wY29kZTsKKyNlbmRpZgogICAgICAgICAgICAgaW50IG9wZXJhbmQ7CiAgICAgICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gc3RydWN0dXJlOwogICAgICAgICAgICAgV3JpdGVC
YXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
MSw3ICsyMjEsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9J
RChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19J
TlRFUlBSRVRFUikKKyNkZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9fT1BDT0RFUyAxCisjZWxz
ZQorICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhlIG9ubHkgb3RoZXIgcmVhc29uIHdoeSB3
ZSB3aWxsIHdhbnQgY29tcHV0ZWQgZ290bworICAgLy8gb3Bjb2RlcyBpcyBpZiB3ZSBoYXZlIHRo
ZSBMTElOVCBhbmQgd2UncmUgbm90IHVzaW5nIHRoZSBDIExvb3AuCisgICAvLyBJZiB3ZSBhcmUg
dXNpbmcgdGhlIEMgTG9vcCBhbmQgd2Ugd2FudGVkIGNvbXB1dGVkIGdvdG9zLCB3ZSB3b3VsZCBo
YXZlCisgICAvLyBlbmFibGVkIENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUiwgYW5k
IHRoYXQgd291bGQgYmUgaGFuZGxlZAorICAgLy8gaW4gdGhlIGNhc2UgYWJvdmUuCisgICAjaWYg
RU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICNkZWZpbmUgRU5BQkxF
X0NPTVBVVEVEX0dPVE9fT1BDT0RFUyAxCisgICAjZWxzZQorICAgI2RlZmluZSBFTkFCTEVfQ09N
UFVURURfR09UT19PUENPREVTIDAKKyAgICNlbmRpZgorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVM
KQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMzI4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwotI2lm
IEVOQUJMRShMTElOVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoTExJ
TlQpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4
OwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsOCArNTAsMTAgQEAgc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0
ZUZvckxMSQogewogI2lmIEVOQUJMRShMTElOVCkKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4Owot
ICAgIAorCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICBBU1NFUlQoaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWwpOworI2VuZGlm
IC8vIG1sYW0KICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzNd
LnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmICghc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMjMyODkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KIAorI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KKwogI2lmIEVOQUJM
RShERkdfSklUKQogCiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTE0MjgsMyArMTQzMCw0IEBAIGV4dGVy
biAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFUKIAogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQykKIAorI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAJKHJldmlzaW9uIDEy
MzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFic3Ry
YWN0UEM6OkFic3RyYWN0UEMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERhdGEpOworICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsgLy8gbWxhbQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNiBAQCBSZWdpc3RlckZpbGUqIENhbGxGcmFtZTo6cmVnaXN0ZXJGaWxlKCkKIH0KIAogI2Vu
ZGlmCi0KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogdW5zaWduZWQgQ2FsbEZyYW1lOjpieXRlY29k
ZU9mZnNldEZvck5vbkRGR0NvZGUoKSBjb25zdAogewpAQCAtMTk3LDYgKzE5NiwxMSBAQCBSZWdp
c3RlciogQ2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsCiB7CiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSB0aGlzLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAg
ICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIm1sYW0gOjogQ2FsbEZyYW1lOjpmcmFtZUV4
dGVudEludGVybmFsKCkgcmVnaXN0ZXJzKCkgJXAgY2ItPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICVk
ID09PiAlcCBAICVzICVzOiVkXG4iLCAKKyAgICAgICAgICAgcmVnaXN0ZXJzKCksIGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsIHJlZ2lzdGVycygpICsgY29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycywKKyAgICAgICAgICAgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5F
X18pOworICAgICNlbmRpZgogICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnM7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDcgKzEwMyw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgQ2FsbEZyYW1lJiBvcGVyYXRv
cj0oY29uc3QgUmVnaXN0ZXImIHIpIHsgKnN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcykgPSBy
OyByZXR1cm4gKnRoaXM7IH0KIAogICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKCkgY29u
c3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5jYWxsRnJhbWUoKTsg
fQotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShK
SVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQygp
IGNvbnN0IHsgcmV0dXJuIFJldHVybkFkZHJlc3NQdHIodGhpc1tSZWdpc3RlckZpbGU6OlJldHVy
blBDXS52UEMoKSk7IH0KICAgICAgICAgYm9vbCBoYXNSZXR1cm5QQygpIGNvbnN0IHsgcmV0dXJu
ICEhdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogICAgICAgICB2b2lkIGNs
ZWFyUmV0dXJuUEMoKSB7IHJlZ2lzdGVycygpW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdID0gc3Rh
dGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigwKTsgfQpAQCAtMTQ4LDcgKzE0OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKLSNpZiBF
TkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRF
UikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQogICAgICAgICBJbnN0cnVjdGlvbiog
cmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52
UEMoKTsgfQogI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI3Miw2ICsyNzMsMTAg
QEAgbmFtZXNwYWNlIEpTQyAgewogI2VuZGlmCiAgICAgICAgIEV4ZWNTdGF0ZSgpOwogICAgICAg
ICB+RXhlY1N0YXRlKCk7CisKKyAgICAgICAgLy8gbWxhbSBCRUdJTgorICAgICAgICBmcmllbmQg
Y2xhc3MgVk1JbnNwZWN0b3I7CisgICAgICAgIC8vIG1sYW0gRU5ECiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDYgKzYyLDcgQEAKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNs
dWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkBAIC01NTQsNyArNTU1LDgg
QEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIAogSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRl
cigpCiB7Ci0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUoTExJTlQp
CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICBpZiAobV9jbGFzc2ljRW5h
YmxlZCkKICAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKICNlbmRpZgpAQCAtNTcwLDIw
ICs1NzIsMzUgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YQogI2Vy
cm9yICJCdWlsZGluZyBib3RoIExMSW50IGFuZCB0aGUgQ2xhc3NpYyBJbnRlcnByZXRlciBpcyBu
b3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgZG9lc24ndCBtYWtlIHNlbnNlLiIKICNlbmRpZgogCisv
LyBtbGFtIG9yaWcgCisgICAgI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgbGxpbnRDTG9v
cEV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCwgbGxpbnRfdW51c2VkLCBsbGludERh
dGEpOworICAgICNlbmRpZgorCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNp
ZiBFTkFCTEUoTExJTlQpCisKICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVN
YXAoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQogICAgICAg
ICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29k
ZUlEPihpKSk7CiAgICAgbV9jbGFzc2ljRW5hYmxlZCA9IGZhbHNlOworCiAjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIGlmIChjYW5Vc2VKSVQpIHsK
ICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5h
dGlvbnMgZm9yIG9wY29kZXMuCi0gICAgICAgIAorCisgICAgICAgIC8vIG1sYW0gOjogVGhlIGZv
bGxvd2luZyBjb2RlIGlzIG9ic29sZXRlIGJlY2F1c2Ugd2Ugc2hvdWxkIG5ldmVyIGVuY291bnRl
ciB0aGlzCisgICAgICAgIC8vIGNhc2UuICBJbiBwcml2YXRlRXhlY3V0ZSgpLCB0aGVyZSBpcyBh
biBhc3NlcnRpb24gdGhhdCBlbnN1cmVzIHRoYXQgd2UgbmV2ZXIKKyAgICAgICAgLy8gbWl4IHRo
ZSBKSVQgd2l0aCB0aGUgY2xhc3NpYyBjb21waWxlci4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAg
ICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9CiAgICAgICAgIG1fY2xhc3Np
Y0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgLy8gbWxhbSA6OiBOT1RFOiBCYXNlZCBvbiBKU0ds
b2JhbERhdGEncyBlbmFibGVBc3NlbWJsZXIoKSwgaXQgbG9va3MgbGlrZSB0aGUgY2xhc3NpYwor
ICAgICAgICAvLyBpbnRlcnByZXRlciBpcyBzdGlsbCBpbiB1c2Ugd2hlbiAtLXVzZUpJVD1mYWxz
ZS4gIFdpbGwgaGF2ZSB0byBmaXggdGhpcyBzbyB0aGF0CisgICAgICAgIC8vIExMSU5UIGNhbiBz
dGFuZCBhbG9uZS4KKwogICAgIH0gZWxzZSB7CiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRp
YWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKQEAgLTU5MiwxMyArNjA5LDE4IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEKICAgICAgICAgCiAgICAgICAg
IG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwogICAgIH0KKyNlbmRpZiAvLyBtbGFtIG5ldworCiAj
ZWxzZQogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fY2xhc3NpY0VuYWJs
ZWQgPSB0cnVlOwogI2Vsc2UKICAgICBtX2NsYXNzaWNFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYK
LSNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorLy8g
bWxhbSBvcmlnICNlbmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBS
RVRFUikgJiYgIUVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpCisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9pbml0aWFsaXplZCA9IHRy
dWU7CiAjZW5kaWYKQEAgLTcwOSw3ICs3MzEsOCBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVn
aXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNv
ZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisvLyBtbGFt
IG9yaWcgI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkKICNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9jbGFzc2ljRW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CkBAIC03NzMsNyArNzk2
LDggQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9
IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwot
I2VsaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjZWxpZiBFTkFCTEUoSklUKQorI2VsaWYg
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBieXRlY29kZU9mZnNldCA9
IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CkBAIC0xMDYxLDEyICsxMDg1LDIxIEBA
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKICAgICAvLyBDYWxjdWxh
dGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRpbmcgY2FsbCBmcmFtZXMgYXMgbmVj
ZXNzYXJ5LgogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gMDsKICAgICB3aGlsZSAoaXNJbnRl
cnJ1cHQgfHwgIShoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpKSkgeworICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgcHJp
bnRmKCJcblxuIG1sYW0gVU5XSU5EIGN1cnJlbnQgY2ZyICVwXG5cbiIsIGNhbGxGcmFtZSk7Cisg
ICAgICAgICNlbmRpZgogICAgICAgICBpZiAoIXVud2luZENhbGxGcmFtZShjYWxsRnJhbWUsIGV4
Y2VwdGlvblZhbHVlLCBieXRlY29kZU9mZnNldCwgY29kZUJsb2NrKSkgeworICAgICAgICAgICAg
I2lmIG1sYW1fUFJJTlRGCisgICAgICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxG
cmFtZSwgIiAgPDw8IFBPUFBFRCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQorICAgICAgICAgICAg
I2VuZGlmCiAgICAgICAgICAgICBpZiAoUHJvZmlsZXIqIHByb2ZpbGVyID0gY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCkuZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZXIt
PmV4Y2VwdGlvblVud2luZChjYWxsRnJhbWUpOwogICAgICAgICAgICAgY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkudG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIH0KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIFZNSW5zcGVjdG9y
OjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICA8PDwgUE9QUEVEIHRvIHJlc3RvcmVkICIpOyAvLyBt
bGFtCisgICAgICAgICNlbmRpZgogICAgIH0KICAgICBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS50
b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAKQEAgLTExMTAsNyArMTE0Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKLUpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHBy
b2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwg
SlNPYmplY3QqIHRoaXNPYmopCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKFBy
b2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4sIEpTT2JqZWN0KiB0aGlzT2JqKQogewogICAgIEFTU0VSVChpc1Zh
bGlkVGhpc09iamVjdCh0aGlzT2JqLCBjYWxsRnJhbWUpKTsKICAgICBBU1NFUlQoIXNjb3BlQ2hh
aW4tPmdsb2JhbERhdGEtPmV4Y2VwdGlvbik7CkBAIC0xMTIxLDYgKzExNTQsOSBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgaWYgKG1fcmVlbnRyeURlcHRo
ID49IE1heFNtYWxsVGhyZWFkUmVlbnRyeURlcHRoICYmIG1fcmVlbnRyeURlcHRoID49IGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKKyAgICAvLyBG
aXJzdCBjaGVjayBpZiB0aGUgInByb2dyYW0iIGlzIGFjdHVhbGx5IGp1c3QgYSBKU09OIG9iamVj
dC4gSWYgc28sCisgICAgLy8gd2UnbGwgaGFuZGxlIHRoZSBKU09OIG9iamVjdCBoZXJlLiBFbHNl
LCB3ZSdsbCBoYW5kbGUgcmVhbCBKUyBjb2RlCisgICAgLy8gYmVsb3cgYXQgZmFpbGVkSlNPTlAu
CiAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKCpzY29wZUNo
YWluLT5nbG9iYWxEYXRhLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIFZl
Y3RvcjxKU09OUERhdGE+IEpTT05QRGF0YTsKICAgICBib29sIHBhcnNlUmVzdWx0OwpAQCAtMTIy
MSwzNiArMTI1Nyw1NSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVj
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogZmFpbGVkSlNPTlA6CisgICAgLy8gSWYg
d2UgZ2V0IGhlcmUsIHRoZW4gd2UgaGF2ZSBhbHJlYWR5IHByb3ZlbiB0aGF0IHRoZSBzY3JpcHQg
aXMgbm90IGEgSlNPTgorICAgIC8vIG9iamVjdC4KKworICAgIC8vIENvbXBpbGUgc291cmNlIHRv
IGJ5dGVjb2RlIGlmIG5lY2Vzc2FyeToKICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5j
b21waWxlKGNhbGxGcmFtZSwgc2NvcGVDaGFpbik7CiAgICAgaWYgKGVycm9yKQogICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0Vycm9yKGNhbGxGcmFtZSwgZXJyb3IpKTsKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9ICZwcm9ncmFtLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogCisg
ICAgLy8gUmVzZXJ2ZSBzdGFjayBzcGFjZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIFJlZ2lz
dGVyKiBvbGRFbmQgPSBtX3JlZ2lzdGVyRmlsZS5lbmQoKTsKICAgICBSZWdpc3RlciogbmV3RW5k
ID0gb2xkRW5kICsgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBSZWdpc3RlckZpbGU6OkNh
bGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAg
IGlmICghbV9yZWdpc3RlckZpbGUuZ3JvdyhuZXdFbmQpKQogICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAorICAgIC8vIFB1
c2ggdGhlIGNhbGwgZnJhbWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAgICBDYWxsRnJhbWUqIG5l
d0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG9sZEVuZCArIGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICBBU1NF
UlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAn
dGhpcycuCiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGVDaGFpbiwg
Q2FsbEZyYW1lOjpub0NhbGxlcigpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgMCk7Cisg
ICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShuZXdDYWxsRnJh
bWUsICIgICsrKyBpbml0ICIsIDAsIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsK
KyAgICAjZW5kaWYKICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh0aGlzT2JqKTsKICAg
ICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZyYW1lKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LCBuZXdDYWxsRnJhbWUpOworICAgIC8vIG1sYW0gQkVHSU4KKyAgICAjaWYgbWxhbV9QUklOVEYK
KyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG5ld0NhbGxGcmFtZSwgIiAgPj4+IFBVU0hFRCB0
byBuZXcgIiwgMCwgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRp
ZgorICAgIC8vIG1sYW0gRU5ECiAKICAgICBpZiAoUHJvZmlsZXIqIHByb2ZpbGVyID0gY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53
aWxsRXhlY3V0ZShjYWxsRnJhbWUsIHByb2dyYW0tPnNvdXJjZVVSTCgpLCBwcm9ncmFtLT5saW5l
Tm8oKSk7CiAKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0Owog
ICAgIHsKICAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1w
bGVyLmdldCgpKTsKIAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgIUVOQUJMRShM
TElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgaWYgKCFjbGFzc2ljRW5hYmxl
ZCgpKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLmV4
ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbERh
dGEpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgICAg
ICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5l
d0NhbGxGcmFtZSk7CisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICByZXN1
bHQgPSBsbGludENMb29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZy
YW1lLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19M
T09QKQogCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgfQpAQCAtMTI3NSw2ICsxMzMw
LDEyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7
CiAKICAgICBSZWdpc3Rlciogb2xkRW5kID0gbV9yZWdpc3RlckZpbGUuZW5kKCk7CisgICAgLy8g
bWxhbSBCRUdJTiB0ZXN0IGRlYnVnCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIg
ICBtbGFtIGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQoKSAlcCA8PSBvbGRFbmQgICVwID09PiByZXN1
bHQgJWRcbiIsIGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQoKSwgb2xkRW5kLCAoY2FsbEZyYW1lLT5m
cmFtZUV4dGVudCgpIDw9IG9sZEVuZCkpOworICAgIHByaW50ZigiICAgbWxhbSBjYWxsRnJhbWUg
JXAgPT0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
ICVwID09PiByZXN1bHQgJWRcbiIsIGNhbGxGcmFtZSwgIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigp
LT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgKGNhbGxGcmFtZSA9PSBjYWxsRnJhbWUtPnNj
b3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpKTsKKyAgICAjZW5kaWYKKyAg
ICAvLyBtbGFtIEVORCB0ZXN0IGRlYnVnCiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+ZnJhbWVFeHRl
bnQoKSA8PSBvbGRFbmQgfHwgY2FsbEZyYW1lID09IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAgICAgaW50IGFyZ0NvdW50ID0gMSArIGFyZ3Mu
c2l6ZSgpOyAvLyBpbXBsaWNpdCAidGhpcyIgcGFyYW1ldGVyCiAgICAgc2l6ZV90IHJlZ2lzdGVy
T2Zmc2V0ID0gYXJnQ291bnQgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CkBA
IC0xMzE3LDEyICsxMzc4LDE3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICAgICAgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1f
c2FtcGxlci5nZXQoKSk7CiAKICAgICAgICAgICAgIG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiAh
RU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgaWYgKCFj
bGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1
bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZtX3Jl
Z2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlQ2hhaW4tPmdsb2JhbERhdGEp
OwogICAgICAgICAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmls
ZSwgbmV3Q2FsbEZyYW1lKTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAg
ICAgICByZXN1bHQgPSBsbGludENMb29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwg
bmV3Q2FsbEZyYW1lLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7IC8vIG1s
YW0gQ0hFQ0s/CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogICAgICAgICAgICAg
bV9yZWVudHJ5RGVwdGgtLTsKICAgICAgICAgfQogCkBAIC0xNDExLDEyICsxNDc3LDE2IEBAIEpT
T2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgICAgIFNhbXBs
aW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAKICAgICAg
ICAgICAgIG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgaWYgKCFjbGFzc2ljRW5hYmxlZCgpKQogICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5l
d0NhbGxGcmFtZSwgY29uc3RydWN0RGF0YVNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpOwogICAgICAg
ICAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2Fs
bEZyYW1lKTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICByZXN1
bHQgPSBsbGludENMb29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZy
YW1lLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAg
ICAgICAgfQogCkBAIC0xNTE0LDE4ICsxNTg0LDI3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxS
ZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIG1fcmVlbnRyeURlcHRo
Kys7ICAKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKKyNpZiAhRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQgTExJTlQg
ZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikKICAgICAgICAgaWYgKGNsb3N1cmUubmV3Q2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuY2Fu
VXNlSklUKCkpCiAjZW5kaWYKLSAgICAgICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJG
aWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSwgY2xvc3VyZS5nbG9iYWxEYXRhKTsKKyAgICAgICAg
Ly8qLworICAgICAgICByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdD
YWxsRnJhbWUsIGNsb3N1cmUuZ2xvYmFsRGF0YSk7CisgICAgICAgIC8vKiBtbGFtIFZFUklGWWlu
ZyB0aGF0IExMSU5UIGRvZXNuJ3QgdXNlIHByaXZhdGVFeGVjdXRlKCk6CiAjaWYgRU5BQkxFKENM
QVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIGVsc2UKICNlbmRpZgotI2VuZGlmCisgICAgICAg
IC8vKi8KKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICByZXN1bHQg
PSBsbGludENMb29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdD
YWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsgLy8gbWxhbSA/
Pz8KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyogbWxhbSBWRVJJ
RllpbmcgdGhhdCBMTElOVCBkb2Vzbid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgogI2lmIEVOQUJM
RShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1
dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lKTsKICNlbmRp
ZgorICAgICAgICAvLyovCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgfQogCkBAIC0x
NjE5LDE4ICsxNjk4LDI3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOwogICAgICAgICAKLSNpZiBFTkFCTEUoSklU
KQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAg
ICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQgTExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4
ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgaWYgKGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogI2VuZGlmCi0gICAgICAgICAgICBy
ZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUs
IG5ld0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7CisgICAgICAgIC8vKi8KKyAg
ICAgICAgcmVzdWx0ID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpLmV4ZWN1dGUoJm1fcmVnaXN0
ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpOworICAgICAgICAv
LyogbWxhbSBWRVJJRllpbmcgdGhhdCBMTElOVCBkb2Vzbid0IHVzZSBwcml2YXRlRXhlY3V0ZSgp
OgogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICBlbHNlCiAjZW5kaWYK
LSNlbmRpZgorICAgICAgICAvLyovCisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
ICAgICAgICAgcmVzdWx0ID0gbGxpbnRDTG9vcEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZp
bGUsIG5ld0NhbGxGcmFtZSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7IC8vIG1sYW0KKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyogbWxhbSBWRVJJRllpbmcgdGhhdCBM
TElOVCBkb2Vzbid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgogI2lmIEVOQUJMRShDTEFTU0lDX0lO
VEVSUFJFVEVSKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFsLCAm
bV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CiAjZW5kaWYKKyAgICAgICAgLy8qLwogICAg
ICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgIH0KIApAQCAtMTkwNiwxMiArMTk5NCwxNSBAQCBO
RVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dW5jYWNoZUdlCiAKICNlbmRpZiAvLyBFTkFC
TEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKIAorI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiBK
U1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJl
Z2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAv
LyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBvdXIgYWRkcmVzcyB0YWJsZXMuIFdlIGhhdmUg
dG8gcHV0IHRoaXMgY29kZQogICAgIC8vIGhlcmUgYmVjYXVzZSBvdXIgbGFiZWxzIGFyZSBvbmx5
IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9uLgogICAgIGlmIChVTkxJS0VMWShmbGFnID09
IEluaXRpYWxpemVBbmRSZXR1cm4pKSB7CiAgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19DTEFTU0lDX0lOVEVSUFJFVEVSKQorICAgICAgICAvLyBtbGFtICNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19PUENPREVTKQogICAgICAgICAgICAgI2RlZmluZSBMSVNUX09QQ09ERV9MQUJFTChp
ZCwgbGVuZ3RoKSAmJmlkLAogICAgICAgICAgICAgICAgIHN0YXRpYyBPcGNvZGUgbGFiZWxzW10g
PSB7IEZPUl9FQUNIX09QQ09ERV9JRChMSVNUX09QQ09ERV9MQUJFTCkgfTsKICAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobGFiZWxzKTsgKytp
KQpAQCAtMTk5MSw5ICsyMDgyLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1
dGUoRXhlYwogICAgICAgICAgICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOwogI2Vsc2UKICAg
ICAjZGVmaW5lIERFRklORV9PUENPREUob3Bjb2RlKSBvcGNvZGU6IFVQREFURV9CWVRFQ09ERV9P
RkZTRVQoKTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShPUENPREVfU1RBVFMpCiAgICAgTkVY
VF9JTlNUUlVDVElPTigpOwotI2Vsc2UKKyNlbHNlIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFNBTVBM
RShjb2RlQmxvY2ssIHZQQyk7IGdvdG8gaW50ZXJwcmV0ZXJMb29wU3RhcnQKICNpZiBFTkFCTEUo
T1BDT0RFX1NUQVRTKQogICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShvcGNvZGUpIFwKQEAgLTIw
MDYsNyArMjA5Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMK
ICAgICB3aGlsZSAoMSkgeyAvLyBpdGVyYXRvciBsb29wIGJlZ2lucwogICAgIGludGVycHJldGVy
TG9vcFN0YXJ0OjsKICAgICBzd2l0Y2ggKHZQQy0+dS5vcGNvZGUpCi0jZW5kaWYKKyNlbmRpZiAv
LyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICB7CiAgICAg
REVGSU5FX09QQ09ERShvcF9uZXdfb2JqZWN0KSB7CiAgICAgICAgIC8qIG5ld19vYmplY3QgZHN0
KHIpCkBAIC01MzE3LDYgKzU0MDgsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogI2VuZGlmIC8v
IEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogfQogCisjZW5kaWYgLy8gIUVOQUJMRShMTElO
VF9DX0xPT1ApCisKKwogSlNWYWx1ZSBJbnRlcnByZXRlcjo6cmV0cmlldmVBcmd1bWVudHNGcm9t
Vk1Db2RlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikgY29uc3QK
IHsKICAgICBDYWxsRnJhbWUqIGZ1bmN0aW9uQ2FsbEZyYW1lID0gZmluZEZ1bmN0aW9uQ2FsbEZy
YW1lRnJvbVZNQ29kZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsKQEAgLTUzODUsNyArNTQ3OSw3IEBA
IHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICBpZiAoIWNhbGxl
ckNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gMDsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJ
Q19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQogICAgIGlmICgh
Y2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
VlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiIC8vIG1sYW0KICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZp
bGUuaCIKIApAQCAtMTk0LDcgKzE5NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNv
ZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBS
RVRFUikgfHwgRU5BQkxFKExMSU5UKQorLy8gbWxhbSAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
Q0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX09QQ09ERVMpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAj
ZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMjA0LDYgKzIwNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICBBU1NF
UlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxl
LmdldChvcGNvZGUpOwpAQCAtMjEzLDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4ob3Bjb2RlKSk7CiAKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0
KG9wY29kZSk7CisjZW5kaWYgLy8gbWxhbSBuZXcKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4g
b3Bjb2RlOwogI2VuZGlmCkBAIC0yMjUsNyArMjI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCi0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShQ
cm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFNjb3BlQ2hhaW5Ob2RlKiwgSlNPYmplY3Qq
IHRoaXNPYmopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVfbWxhbVAoUHJvZ3JhbUV4ZWN1dGFi
bGUqLCBDYWxsRnJhbWUqLCBTY29wZUNoYWluTm9kZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKICAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24s
IENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdM
aXN0Jik7CiAgICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSosIEpT
T2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNv
bnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwg
Q2FsbEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIFNjb3BlQ2hhaW5Ob2RlKik7CkBAIC0yODAs
NyArMjg0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBDYWxsRnJhbWUq
IGZpbmRGdW5jdGlvbkNhbGxGcmFtZUZyb21WTUNvZGUoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiop
OwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgSlNWYWx1ZSBsbGludENMb29w
RXhlY3V0ZShFeGVjdXRpb25GbGFnLCBSZWdpc3RlckZpbGUqLCBDYWxsRnJhbWUqLCBMTEludE9w
Y29kZUlEIGJvb3RzdHJhcE9wY29kZUlkID0gbGxpbnRfdW51c2VkIC8qIG1sYW0gRklYTUUgKi8s
IExMSW50OjpEYXRhKiBkYXRhID0gMCk7CisjZWxzZQogICAgICAgICBKU1ZhbHVlIHByaXZhdGVF
eGVjdXRlKEV4ZWN1dGlvbkZsYWcsIFJlZ2lzdGVyRmlsZSosIENhbGxGcmFtZSopOworI2VuZGlm
CiAKICAgICAgICAgdm9pZCBkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSopOwogICAgICAgICAKQEAg
LTI5NCw2ICszMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUg
bV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09E
RVMpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJTlQpCiAgICAgICAgIE9wY29kZSogbV9vcGNvZGVU
YWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBI
YXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUg
PT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCkBAIC0zMDEsMTEgKzMxMCwxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8g
TWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9w
Y29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2Rl
SUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09U
T19PUENPREVTKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBib29sIG1faW5pdGlh
bGl6ZWQ7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2NsYXNzaWNFbmFibGVkOworCisgICAgICAg
IC8vIG1sYW0gQkVHSU4KKyAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOworICAgICAg
ICAvLyBtbGFtIEVORAogICAgIH07CiAKICAgICAvLyBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIGFu
IG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhpcyBjb252ZXJzaW9uIChXZWJDb3JlJ3MgZ2xv
YmFsIG9iamVjdCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1J
bnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9WTUluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEy
NCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBWTUluc3BlY3Rvcjo6Z2V0VGFnTmFtZShpbnRw
dHJfdCB2YWx1ZSkKK3sKKyAgICBjb25zdCBjaGFyKiB2UENUYWdEZWNvZGVTdHIgPSAiIjsKKyAg
ICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSBKU1ZhbHVlOjpJbnQzMlRhZzogICAgICAgICB2
UENUYWdEZWNvZGVTdHIgPSAiPEludDMyPiI7IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6Qm9v
bGVhblRhZzogICAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjxCb29sPiI7IGJyZWFrOworICAgIGNh
c2UgSlNWYWx1ZTo6TnVsbFRhZzogICAgICAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjxOdWxsPiI7
IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6VW5kZWZpbmVkVGFnOiAgICAgdlBDVGFnRGVjb2Rl
U3RyID0gIjxVbmRlZmluZWQ+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpDZWxsVGFnOiAg
ICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPENlbGw+IjsgYnJlYWs7CisgICAgY2FzZSBKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnOiAgICB2UENUYWdEZWNvZGVTdHIgPSAiPEVtcHR5PiI7IGJyZWFr
OworICAgIGNhc2UgSlNWYWx1ZTo6RGVsZXRlZFZhbHVlVGFnOiAgdlBDVGFnRGVjb2RlU3RyID0g
IjxEZWxldGVkPiI7IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHZQQ1RhZ0RlY29kZVN0
ciA9ICI8PiI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdlBDVGFnRGVjb2RlU3RyOworfQor
Cit2b2lkIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUwKENhbGxGcmFtZSogZnJhbWUpIHsKKyAgICBk
dW1wRnJhbWUoZnJhbWUsIDAsIDAsIDAsIDAsIDApOworfQorCit2b2lkIFZNSW5zcGVjdG9yOjpk
dW1wRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJlZml4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQqIHBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGZ1bmNOYW1lLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKK3sKKyAg
ICBpbnQgZnJhbWVDb3VudCA9IFZNSW5zcGVjdG9yOjpjb3VudEZyYW1lcyhmcmFtZSk7CisgICAg
aWYgKGZyYW1lQ291bnQgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnN0cnVjdGlvbiog
dlBDID0gZnJhbWUtPmN1cnJlbnRWUEMoKTsKKworICAgICNkZWZpbmUgQ0FTVCByZWludGVycHJl
dF9jYXN0CisKKyAgICBwcmludGYoIlxuIik7IC8vIG1sYW0gVEVTVAorICAgIGlmIChwcmVmaXgp
CisgICAgICAgIHByaW50ZigiJXMiLCBwcmVmaXgpOworICAgIHByaW50ZigiRlJBTUUgWyVkXSAl
cCAlcyBwYyAlcCB8IHZwYyAlcCVzIHwgY2IgJXA6JXMgcmV0UEMgJXA6JXMgc2NvcGUgJXA6JXMg
Y2FsbGVyRnJhbWUgJXA6JXMgYXJnYyAlZDolcyBjYWxsZWUgJXA6JXMiLAorICAgICAgICAgICBm
cmFtZUNvdW50LCBmcmFtZSwgIjx1bmtub3duPiIsIHBjLAorCisgICAgICAgICAgIHZQQywKKyAg
ICAgICAgICAgZ2V0VGFnTmFtZShDQVNUPGludHB0cl90Pih2UEMpKSwKKworICAgICAgICAgICBD
QVNUPHZvaWQqPihmcmFtZVtSZWdpc3RlckZpbGU6OkNvZGVCbG9ja10ucGF5bG9hZCgpKSwKKyAg
ICAgICAgICAgZ2V0VGFnTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkNvZGVCbG9ja10udGFnKCkp
LAorCisgICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENd
LnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFRhZ05hbWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpS
ZXR1cm5QQ10udGFnKCkpLAorCisgICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVy
RmlsZTo6U2NvcGVDaGFpbl0ucGF5bG9hZCgpKSwKKyAgICAgICAgICAgZ2V0VGFnTmFtZShmcmFt
ZVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dLnRhZygpKSwKKworICAgICAgICAgICBDQVNUPHZv
aWQqPihmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5wYXlsb2FkKCkpLAorICAgICAg
ICAgICBnZXRUYWdOYW1lKGZyYW1lW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdLnRhZygpKSwK
KworICAgICAgICAgICBmcmFtZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQo
KSwKKyAgICAgICAgICAgZ2V0VGFnTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291
bnRdLnRhZygpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtSZWdpc3RlckZpbGU6
OkNhbGxlZV0ucGF5bG9hZCgpKSwKKyAgICAgICAgICAgZ2V0VGFnTmFtZShmcmFtZVtSZWdpc3Rl
ckZpbGU6OkNhbGxlZV0udGFnKCkpKTsKKyAgICBpZiAoZnVuY05hbWUgfHwgZmlsZSkgeworICAg
ICAgICBwcmludGYoIiBAIik7CisgICAgICAgIGlmIChmdW5jTmFtZSkKKyAgICAgICAgICAgIHBy
aW50ZigiICVzIiwgZnVuY05hbWUpOworICAgICAgICBpZiAoZmlsZSkKKyAgICAgICAgICAgIHBy
aW50ZigiICVzIiwgZmlsZSk7CisgICAgICAgIHByaW50ZigiOiVkIiwgbGluZSk7CisgICAgfQor
ICAgIHByaW50ZigiXG4iKTsKKworICAgIHByaW50ZigiXG4iKTsgLy8gbWxhbSBURVNUCisKKyAg
ICAjdW5kZWYgQ0FTVAorfQorCitpbnQgVk1JbnNwZWN0b3I6OmNvdW50RnJhbWVzKENhbGxGcmFt
ZSogZnJhbWUpCit7CisgICAgaW50IGNvdW50ID0gLTE7CisgICAgLy8gbWxhbSBERUJVRyBBU1NF
UlQoISFmcmFtZSk7CisgICAgLy8gbWxhbSBGSVhNRTogRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGNo
YW5nZSB0aGlzIHNvIHRoYXQgd2UgYWxsb3cgdGhlIEhvc3QgZmxhZyB0bworICAgIC8vIGJlIHNl
dCBidXQgd2UgZ2V0IHRoZSBjYWxsZXIgd2l0aCB0aGUgSG9zdCBmbGFnIG1hc2tlZCBvdXQsIGFu
ZCBvbmx5IHRlcm1pbmF0ZQorICAgIC8vIHdoZW4gdGhlIGNhbGxlciBGcmFtZSBpcyBOVUxMLgor
ICAgIHdoaWxlIChmcmFtZSAmJiAhZnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIHsKKyAg
ICAgICAgY291bnQrKzsKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJhbWUoKTsKKyAg
ICAgICAgLy8gbWxhbSBERUJVRyBBU1NFUlQoISFmcmFtZSk7CisgICAgfQorICAgIHJldHVybiBj
b3VudDsKK30KKworY29uc3QgY2hhciogVk1JbnNwZWN0b3I6OmdldEZ1bmN0aW9uTmFtZShKU0Z1
bmN0aW9uKiBmdW5jLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVVN0cmluZyBuYW1lID0gZnVu
Yy0+Y2FsY3VsYXRlZERpc3BsYXlOYW1lKGV4ZWMpOworICAgIGNvbnN0IGNoYXIqIG5hbWVTdHIg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYW1lLmNoYXJhY3RlcnM4KCkpOworICAg
IGlmIChuYW1lU3RyKQorICAgICAgICByZXR1cm4gbmFtZVN0cjsKKyAgICByZXR1cm4gIjx1bmtu
b3duPiI7Cit9CisKKwordm9pZCBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIGludCBkZXB0aCA9IDA7CisgICAgcHJpbnRmKCJTdGFjayBzdGFydGlu
ZyBmcm9tIGZyYW1lICVwXG4iLCBjYWxsRnJhbWUpOworICAgIHdoaWxlIChjYWxsRnJhbWUpIHsK
KyAgICAgICAgSlNGdW5jdGlvbiogZnVuYyA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEZyYW1l
LT5jYWxsZWUoKSk7CisgICAgICAgIC8vaWYgKGZ1bmMpIHsKKyAgICAgICAgICAgIC8vY29uc3Qg
Y2hhciogZnVuY05hbWUgPSBnZXRGdW5jdGlvbk5hbWUoZnVuYywgY2FsbEZyYW1lKTsKKyAgICAg
ICAgICAgIC8vcHJpbnRmKCIgIFslZF0gJXMgQCVwIHwgZnJhbWUgJXBcbiIsIGRlcHRoKyssIGZ1
bmNOYW1lLCBmdW5jLCBjYWxsRnJhbWUpOworICAgICAgICAgICAgLy99IGVsc2UgeworICAgICAg
ICAgICAgcHJpbnRmKCIgIFslZF0gPG51bGw+IEAlcCB8IGZyYW1lICVwXG4iLCBkZXB0aCsrLCBm
dW5jLCBjYWxsRnJhbWUpOworICAgICAgICAgICAgLy99CisgICAgICAgIC8vIGR1bXBSZWdpc3Rl
cnMoY2FsbEZyYW1lKTsKKyAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZSgpOworICAgIH0KKyAgICBwcmludGYoIkVORCBvZiBzdGFjayBmcm9tIGZyYW1lICVwXG4iLCBj
YWxsRnJhbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMiBAQAorI2lmbmRlZiBWTUluc3BlY3Rvcl9oCisjZGVmaW5lIFZN
SW5zcGVjdG9yX2gKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgVk1JbnNwZWN0b3IgeworcHVibGljOiAgICAKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgY2hhciogZ2V0VGFnTmFtZShpbnRwdHJfdCB2YWx1ZSk7CisgICAgc3RhdGljIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcEZyYW1lMChDYWxsRnJhbWUqIGZyYW1lKTsKKyAgICBz
dGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSwg
Y29uc3QgY2hhciogcHJlZml4ID0gMCwgdm9pZCogcGMgPSAwLCBjb25zdCBjaGFyKiBmdW5jTmFt
ZSA9IDAsIGNvbnN0IGNoYXIqIGZpbGUgPSAwLCBpbnQgbGluZSA9IDApOworICAgIHN0YXRpYyBK
U19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRGcmFtZXMoQ2FsbEZyYW1lKiBmcmFtZSk7CisgICAg
c3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uTmFtZShKU0Z1
bmN0aW9uKiBmdW5jLCBFeGVjU3RhdGUqIGV4ZWMpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXBTdGFjayhDYWxsRnJhbWUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gVk1JbnNwZWN0b3IuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw4IEBACiAvLyBVbmZvcnR1bmF0ZWx5IHRoaXMgb25seSB3b3JrcyBv
biBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJlbnRseSBvbmx5IHVzZWQKIC8vIGJ5
IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3RyaWN0ZWQgdG8gR0NDLWxpa2UgY29t
cGlsZXJzLiBXZSBzaG91bGQKIC8vIHByb2JhYmx5IGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQuCi0j
aWYgQ09NUElMRVIoR0NDKQorLy8gbWxhbSBvcmlnICNpZiBDT01QSUxFUihHQ0MpCisjaWYgQ09N
UElMRVIoR0NDKSAmJiBFTkFCTEUoSklUKSAvLyBtbGFtCiAKICNpZiBDQUxMSU5HX0NPTlZFTlRJ
T05fSVNfU1REQ0FMTAogI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVD
TApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEyMzI4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgSklUQ29kZV9oCiAjZGVmaW5lIEpJVENvZGVfaAog
Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1i
bGVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZXIuaCIKLSNlbmRpZgorICAgLy8gbWxhbSBvcmlnICNlbmRpZgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNDEsMTMgKzQxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlZ2lz
dGVyRmlsZTsKICNlbmRpZgogICAgIAorLy8gbWxhbSBOT1RFUworLy8gSklUQ29kZSBzZWVtcyB0
byBiZSBhIG5hdGl2ZSBjb2RlIGNvbnRhaW5lci4gIExMSW50IG5lZWRzIGl0LiAgU28sIG1heWJl
IHdlCisvLyBuZWVkIHRvIGVuYWJsZSBpdCBhbGwgdGhlIHRpbWUuCisKICAgICBjbGFzcyBKSVRD
b2RlIHsKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBDb2RlUmVmOwogICAgICAgICB0eXBl
ZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwotI2Vsc2UKKy8qLyBtbGFtIG9yaWcg
I2Vsc2UKICAgICAgICAgSklUQ29kZSgpIHsgfQotI2VuZGlmCisvLyBtbGFtIG9yaWcgICNlbmRp
ZiAqLwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxU
aHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAK
QEAgLTc3LDcgKzgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gaml0
VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CiAgICAg
ICAgIH0KICAgICAgICAgCi0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgSklUQ29kZSgpCiAgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQog
ICAgICAgICB7CkBAIC0xMzAsOCArMTM0LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlIQogICAgICAgICBpbmxpbmUgSlNWYWx1ZSBleGVjdXRlKFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQogICAgICAgICB7CisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY3RpVHJhbXBvbGluZShtX3Jl
Zi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVnaXN0ZXJGaWxlLCBjYWxsRnJhbWUsIDAs
IDAsIGdsb2JhbERhdGEpKTsKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5leGNlcHRp
b24gPyBqc051bGwoKSA6IHJlc3VsdDsKKyAgICAgICAgICAgIC8vIG1sYW0gQkVHSU4KKyNlbHNl
IC8vICFFTkFCTEUoSklUKQorICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyRmlsZSk7
CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIENSQVNIKCk7IC8vIFNob3VsZCBuZXZl
ciBnZXQgaGVyZS4KKyAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKKyNlbmRpZiAvLyAhRU5B
QkxFKEpJVCkKKyAgICAgICAgICAgIC8vIG1sYW0gRU5ECiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkKiBzdGFydCgpIGNvbnN0CkBAIC0xODIsNyArMTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgQ29kZVJlZiBtX3JlZjsKICAgICAgICAgSklUVHlwZSBtX2ppdFR5cGU7Ci0jZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAg
ICB9OwogCiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzMCArMzEsNjcgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtIFRFU1Qgb25seQog
Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFC
TEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25l
ZCB2UENJbmRleCkKIHsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFsdWUpOworICAgICNpZiBtbGFt
X1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICAgbWxhbSA6
OiBnZW5lcmljVGhyb3cgQkVGT1JFIGhhbmRsZXI6ICIsICh2b2lkKil2UENJbmRleCwgX19GSUxF
X18sIF9fRlVOQ1RJT05fXyxfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAKICAgICBnbG9iYWxEYXRh
LT5leGNlcHRpb24gPSBKU1ZhbHVlKCk7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBnbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBleGNlcHRpb25W
YWx1ZSwgdlBDSW5kZXgpOyAvLyBUaGlzIG1heSB1cGRhdGUgY2FsbEZyYW1lICYgZXhjZXB0aW9u
VmFsdWUhCiAgICAgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CisgICAg
I2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIg
ICBtbGFtIDo6IGdlbmVyaWNUaHJvdyBBRlRFUiBoYW5kbGVyOiAiLCAodm9pZCopdlBDSW5kZXgs
IF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKIAogICAgIHZv
aWQqIGNhdGNoUm91dGluZTsKICAgICBJbnN0cnVjdGlvbiogY2F0Y2hQQ0ZvckludGVycHJldGVy
ID0gMDsKICAgICBpZiAoaGFuZGxlcikgewotICAgICAgICBjYXRjaFJvdXRpbmUgPSBoYW5kbGVy
LT5uYXRpdmVDb2RlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIGNhdGNoUENGb3JJbnRl
cnByZXRlciA9ICZjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtoYW5kbGVy
LT50YXJnZXRdOwotICAgIH0gZWxzZQorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAg
IGNhdGNoUm91dGluZSA9IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGNhdGNoUENGb3JJbnRl
cnByZXRlci0+dS5vcGNvZGUpOworI2Vsc2UKKyAgICAgICAgY2F0Y2hSb3V0aW5lID0gaGFuZGxl
ci0+bmF0aXZlQ29kZS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCisgICAgICAgIC8vIG1s
YW0gQkVHSU4KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiXG4gICAg
bWxhbSA6OiBnZW5lcmljVGhyb3coKSBTRVQgaGFuZGxlciAlcCB8IGNhdGNoUENGb3JJbnRlcnBy
ZXRlciA9ICVwIGNhdGNoUm91dGluZSAlcFxuIiwgaGFuZGxlciwgY2F0Y2hQQ0ZvckludGVycHJl
dGVyLCBjYXRjaFJvdXRpbmUpOworICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYKKyAgICAg
ICAgLy8gbWxhbSBFTkQKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAgICAgIC8vIG1sYW0gb3JpZyBjYXRjaFJvdXRpbmUgPSBMTElOVF9BRERSRVNTX09GX0dMVUUo
bGxpbnRfY3RpT3BUaHJvd05vdENhdWdodCk7CisgICAgICAgIC8vIG1sYW0gQ09NUFVURURfR09U
TyBjYXRjaFJvdXRpbmUgPSBjb25zdF9jYXN0PHZvaWQqPihMTEludDo6RGF0YTo6Z2V0T3Bjb2Rl
KGxsaW50X2N0aU9wVGhyb3dOb3RDYXVnaHQpKTsKKyAgICAgICAgY2F0Y2hSb3V0aW5lID0gTExJ
bnQ6OkRhdGE6OmdldE9wY29kZVB0cihsbGludF9jdGlPcFRocm93Tm90Q2F1Z2h0KTsKKyNlbHNl
CiAgICAgICAgIGNhdGNoUm91dGluZSA9IEZ1bmN0aW9uUHRyKGN0aU9wVGhyb3dOb3RDYXVnaHQp
LnZhbHVlKCk7CisjZW5kaWYKKyAgICAgICAgLy8gbWxhbSBCRUdJTgorICAgICAgICAjaWYgbWxh
bV9QUklOVEYKKyAgICAgICAgcHJpbnRmKCJcbiAgICBtbGFtIDo6IGdlbmVyaWNUaHJvdygpIFNF
VCBOTyBoYW5kbGVyIHwgY2F0Y2hSb3V0aW5lID0gJXBcbiIsIGNhdGNoUm91dGluZSk7CisgICAg
ICAgICNlbmRpZiAvLyBtbGFtX1BSSU5URgorICAgICAgICAvLyBtbGFtIEVORAorICAgIH0KICAg
ICAKICAgICBnbG9iYWxEYXRhLT5jYWxsRnJhbWVGb3JUaHJvdyA9IGNhbGxGcmFtZTsKKyAgICAj
aWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAg
IG1sYW0gOjogZ2VuZXJpY1Rocm93IFRBUkdFVCBjYWxsRnJhbWU6ICIsICh2b2lkKil2UENJbmRl
eCwgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgogICAgIGds
b2JhbERhdGEtPnRhcmdldE1hY2hpbmVQQ0ZvclRocm93ID0gY2F0Y2hSb3V0aW5lOwogICAgIGds
b2JhbERhdGEtPnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdyA9IGNhdGNoUENGb3JJbnRlcnBy
ZXRlcjsKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRm
KCJcbiAgICBtbGFtIDo6IGdlbmVyaWNUaHJvdygpIGNhdGNoUm91dGluZSAlcCBjYXRjaFBDRm9y
SW50ZXJwcmV0ZXIgPSAlcFxuIiwgY2F0Y2hSb3V0aW5lLCBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIp
OworICAgICNlbmRpZiAvLyBtbGFtX1BSSU5URgorICAgIC8vIG1sYW0gRU5ECiAgICAgCiAgICAg
QVNTRVJUKGNhdGNoUm91dGluZSk7CiAgICAgRXhjZXB0aW9uSGFuZGxlciBleGNlcHRpb25IYW5k
bGVyID0geyBjYXRjaFJvdXRpbmUsIGNhbGxGcmFtZSB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw4IEBACiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgogCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikKKy8vIG1sYW0gI2lmIEVOQUJMRShB
U1NFTUJMRVIpCisjaWYgRU5BQkxFKEFTU0VNQkxFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkg
Ly8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMxLDE3ICszNDMxLDE3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBKSVRUaHVua3M6OmN0aVN0dWIKICAgICByZXR1cm4gZW50
cnkuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpo
b3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQorTmF0aXZlRXhlY3V0YWJsZSog
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViX21sYW0xKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQog
ewogICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gbV9ob3N0RnVu
Y3Rpb25TdHViTWFwLT5nZXQoZnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gbmF0aXZlRXhlY3V0
YWJsZTsKIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVF
eGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwo
Z2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjb25zdHJ1Y3Rv
ciwgTm9JbnRyaW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUg
PSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVfbWxhbSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxl
Q1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qo
KSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rp
b25TdHViTWFwLCBmdW5jdGlvbiwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhl
Y3V0YWJsZSkpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCi1OYXRpdmVFeGVj
dXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViX21sYW0yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYykK
IHsKICAgICBpZiAoTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IG1faG9zdEZ1
bmN0aW9uU3R1Yk1hcC0+Z2V0KGZ1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1
dGFibGU7CkBAIC0zNDU1LDcgKzM0NTUsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6
Omhvc3RGdW5jdGlvCiAgICAgfSBlbHNlCiAgICAgICAgIGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElO
YXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKTsKIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEs
IGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLCBpbnRyaW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUg
PSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVfbWxhbSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rp
b24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5h
dGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNp
Yyk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBmdW5jdGlvbiwgUGFzc1dl
YWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhlY3V0YWJsZSkpOwogICAgIHJldHVybiBuYXRp
dmVFeGVjdXRhYmxlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAko
cmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisv
LyBtbGFtIG9yaWcgI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKEpJVCkKIAogICAgIHN0cnVj
dCBTdHJ1Y3R1cmVTdHViSW5mbzsKQEAgLTY0LDYgKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2VhazsKIAorLy8gbWxhbSAjaWYgRU5B
QkxFKEpJVCkgLy8gbWxhbQogICAgIHVuaW9uIEpJVFN0dWJBcmcgewogICAgICAgICB2b2lkKiBh
c1BvaW50ZXI7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzRW5jb2RlZEpTVmFsdWU7CkBAIC0y
OTUsMTEgKzI5NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYKIAorLy8gbWxh
bSAjZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQorCiAgICAgY2xhc3MgSklUVGh1bmtzIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEpJVFRodW5rcyhKU0dsb2JhbERhdGEqKTsKICAgICAgICAg
fkpJVFRodW5rcygpOwogCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgICAg
IHN0YXRpYyB2b2lkIHRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHRyeUNhY2hlUHV0QnlJRChDYWxs
RnJhbWUqLCBDb2RlQmxvY2sqLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIGJvb2wgZGlyZWN0KTsKIApAQCAtMzEwLDcgKzMxNSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpVmlydHVhbENvbnN0cnVjdCgp
IHsgcmV0dXJuIG1fdHJhbXBvbGluZVN0cnVjdHVyZS5jdGlWaXJ0dWFsQ29uc3RydWN0OyB9CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVDYWxsKCkKICAgICAgICAgewot
I2lmIEVOQUJMRShMTElOVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUo
TExJTlQpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgaWYgKCFtX2V4ZWN1
dGFibGVNZW1vcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOwogI2Vu
ZGlmCkBAIC0zMTgsMTcgKzMyNCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KCkKICAgICAgICAg
ewotI2lmIEVOQUJMRShMTElOVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShMTElOVCkKKyNpZiBFTkFC
TEUoTExJTlQpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgaWYgKCFtX2V4
ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGlu
ZSk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBtX3RyYW1wb2xpbmVTdHJ1Y3R1cmUuY3Rp
TmF0aXZlQ29uc3RydWN0OwogICAgICAgICB9CiAKKy8vIG1sYW0gI2VuZGlmIC8vIEVOQUJMRShK
SVQpIC8vIG1sYW0KICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGN0aVN0dWIoSlNHbG9i
YWxEYXRhKiwgVGh1bmtHZW5lcmF0b3IpOwogCi0gICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhv
c3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yKTsKLSAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9u
U3R1YihKU0dsb2JhbERhdGEqLCBOYXRpdmVGdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IsIEludHJp
bnNpYyk7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWJfbWxhbTEo
SlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
KTsKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1Yl9tbGFtMihKU0ds
b2JhbERhdGEqLCBOYXRpdmVGdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYyk7CiAK
ICAgICAgICAgdm9pZCBjbGVhckhvc3RGdW5jdGlvblN0dWJzKCk7CiAKQEAgLTMzNywxMSArMzQ1
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDVElTdHViTWFwIG1fY3RpU3R1Yk1hcDsK
ICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPE5hdGl2ZUZ1bmN0aW9uLCBXZWFrPE5hdGl2ZUV4ZWN1
dGFibGU+ID4gSG9zdEZ1bmN0aW9uU3R1Yk1hcDsKICAgICAgICAgT3duUHRyPEhvc3RGdW5jdGlv
blN0dWJNYXA+IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcDsKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQp
IC8vIG1sYW0KICAgICAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IG1fZXhlY3V0
YWJsZU1lbW9yeTsKIAogICAgICAgICBUcmFtcG9saW5lU3RydWN0dXJlIG1fdHJhbXBvbGluZVN0
cnVjdHVyZTsKKy8vIG1sYW0gI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KICAgICB9Owog
CisvLyBtbGFtICNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCisKIGV4dGVybiAiQyIgewogICAgIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9hZGQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBX
VEZfSU5URVJOQUw7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2JpdGFuZChT
VFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKQEAgLTQ2OCw3ICs0ODAsMTQgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgdm9pZCogSklUX1NUVUIgY3RpX3ZtX3Rocm93KFNUVUJfQVJHU19E
RUNMQVJBVElPTikgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiB9IC8vIGV4dGVy
biAiQyIKIAotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZWxzZSAvLyAhRU5BQkxFKEpJVCkKKwor
Ly8gTmVlZGVkIGZvciB0aGUgTExJbnQgQysrIEludGVycHJldGVyIGJhY2tlbmQ6CitzdHJ1Y3Qg
SklUU3RhY2tGcmFtZSB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOworfTsKKworI2Vu
ZGlmIC8vICFFTkFCTEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTIzMjg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KKwogICAgIGNsYXNzIEpTSW50ZXJm
YWNlSklUIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIC8v
IE5PVEVTOgpAQCAtMzMxLDYgKzMzNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gQWRkcmVzcyhiYXNlLCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1YWxSZWdpc3Rlcklu
ZGV4KSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9CiAKLX0KKyNlbmRpZiAvLyBFTkFCTEUo
SklUKSAvLyBtbGFtCisKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNJbnRlcmZh
Y2VKSVRfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5r
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIFNwZWNpYWxpemVkVGh1bmtKSVRfaAogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIG1s
YW0gI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKIAogI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgog
CiAjaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElO
VCkKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
OCBAQAogI2lmbmRlZiBUaHVua0dlbmVyYXRvcnNfaAogI2RlZmluZSBUaHVua0dlbmVyYXRvcnNf
aAogCi0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKKyNpZiBF
TkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpIC8vIG1sYW0KIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEV4ZWN1dGFibGVQb29sOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKQEAgLTM0LDYg
KzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OwogCiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgKCpUaHVua0dlbmVyYXRvciko
SlNHbG9iYWxEYXRhKik7CisKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
Kik7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOwpAQCAtNDUsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKSAvLyBtbGFtCiB9CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDEy
MzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMzcgQEAKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgot
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKy8vIG1sYW0gI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiIC8vIG1sYW0KKy8vIG1sYW0gI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJPcGNvZGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CiAKKy8vIG1sYW0gQkVHSU4KK2Jvb2wgRGF0YTo6c19pc0luaXRlZCA9IGZhbHNlOworSW5z
dHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gMDsKK0xMSW50T3Bjb2Rl
KiBEYXRhOjpzX29wY29kZU1hcCA9IDA7CisvLyBtbGFtIEVORAorCiBEYXRhOjpEYXRhKCkKKy8q
IG1sYW0gQkVHSU4gb3JpZwogICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3Ry
dWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQotICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29k
ZVtudW1PcGNvZGVJRHNdKQorICAgICAgLy8gbWxhbSBvcmlnICwgbV9vcGNvZGVNYXAobmV3IE9w
Y29kZVtudW1PcGNvZGVJRHNdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1MTElu
dE9wY29kZUlEc10pCisqLwogeworICAgIGlmICghc19pc0luaXRlZCkgeworICAgICAgICBzX2V4
Y2VwdGlvbkluc3RydWN0aW9ucyA9IG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAx
XTsKKyAgICAgICAgc19vcGNvZGVNYXAgPSBuZXcgTExJbnRPcGNvZGVbbnVtTExJbnRPcGNvZGVJ
RHNdOworI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQotICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
c1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lKTsKLSNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3Ro
KSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNv
ZGUpOworICAgICAgICBzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKTsK
KyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBzX29wY29kZU1hcFtvcGNvZGVd
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOwogICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChPUENPREVfRU5UUlkpOwogI3VuZGVmIE9QQ09ERV9FTlRSWQorICAgICAgICBzX2lz
SW5pdGVkID0gdHJ1ZTsKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICB9CiB9
CiAKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTEyMiw4ICsxMzksMTAgQEAgdm9pZCBEYXRhOjpw
ZXJmb3JtQXNzZXJ0aW9ucyhKU0dsb2JhbERhdAogCiBEYXRhOjp+RGF0YSgpCiB7CisgICAgLyog
bWxhbSBCRUdJTiBvcmlnCiAgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CiAg
ICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7CisgICAgKi8KIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShy
ZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIExMSW50RGF0YV9o
CiAjZGVmaW5lIExMSW50RGF0YV9oCiAKLSNpbmNsdWRlICJPcGNvZGUuaCIKKy8vIG1sYW0gb3Jp
ZyAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2LDE2ICs0OCw2NiBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgICAgIC8vIG1sYW0gb3JpZyByZXR1
cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgICAgIHJldHVybiBzX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKICAgICB9CiAgICAgCi0gICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIExM
SW50T3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgLy8gbWxhbSByZXR1cm4gbV9v
cGNvZGVNYXA7CisgICAgICAgIHJldHVybiBzX29wY29kZU1hcDsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBpc0luaXRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gc19pc0luaXRlZDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRJc0luaXRlZCgpCisgICAgeworICAgICAgICBzX2lz
SW5pdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgTExJbnRPcGNvZGUgZ2V0T3Bjb2Rl
KExMSW50T3Bjb2RlSUQgaWQpCisgICAgeworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09E
RVMpCisgICAgICAgIHJldHVybiBzX29wY29kZU1hcFtpZF07CisjZWxzZQorICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PExMSW50T3Bjb2RlPihpZCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBMTEludE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0T3Bjb2RlKGJpdHdpc2VfY2FzdDxMTEludE9wY29kZUlE
PihpZCkpOworICAgIH0KKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdm9pZCogZ2V0T3Bjb2RlUHRyKExMSW50T3Bjb2RlSUQgaWQpCisgICAgewor
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihnZXRPcGNvZGUoaWQpKTsKKyAgICB9
CisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQqIGdldE9wY29kZVB0cih2b2lk
IGdsdWVIZWxwZXIoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGdsdWVIZWxwZXIpOworICAgIH0KKyNlbmRpZgorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
dm9pZCogZ2V0T3Bjb2RlUHRyKE9wY29kZUlEIGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
b3Bjb2RlTWFwOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihnZXRPcGNvZGUo
aWQpKTsKICAgICB9CisKIHByaXZhdGU6CisgICAgLyogbWxhbSBCRUdJTiBvcmlnCiAgICAgSW5z
dHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwogICAgIE9wY29kZSogbV9vcGNvZGVN
YXA7CisgICAgKi8KKyAgICBzdGF0aWMgYm9vbCBzX2lzSW5pdGVkOworICAgIHN0YXRpYyBJbnN0
cnVjdGlvbiogc19leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgc3RhdGljIExMSW50T3Bjb2Rl
KiBzX29wY29kZU1hcDsKKyAgICAvLyBtbGFtIEVORCAqLwogfTsKICNlbHNlIC8vIEVOQUJMRShM
TElOVCkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCisvLyBtbGFtICNpZiAh
RU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQorCiB2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2lu
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
SklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQogewog
ICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewpAQCAtNTIsNiArNTQsNyBAQCB2b2lk
IGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CiAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CiAgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CkBAIC02MSw2ICs2
NCw3IEBAIHZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYKICAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9i
YWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CiAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERh
dGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpOworI2VuZGlmIC8vIG1sYW0KIH0KIAogdm9pZCBnZXRFdmFsRW50cnlwb2ludChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCkBAIC02OSw4ICs3Myw5
IEBAIHZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG8KICAgICAgICAgaml0
Q29kZSA9IEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAorI2lmIEVOQUJMRShKSVQpICAgIAogICAgIGppdENvZGUg
PSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworI2VuZGlmCiB9CiAKIHZvaWQgZ2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQpA
QCAtNzksMTAgKzg0LDEzIEBAIHZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiAKICAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorI2lmIEVOQUJMRShKSVQp
CiAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisjZW5kaWYKIH0K
IAorLy8gbWxhbSAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIgLy8gbWxhbQogCiAjaWYgRU5BQkxFKExMSU5UKQogCkBAIC00NCw5
ICs0NSwxNiBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqCiAjaWYg
TExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24g
JXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKKy8v
IG1sYW0gI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KICAgICBnZW5lcmljVGhyb3coCiAgICAgICAg
IGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMsIHBjKSk7CisvKiBtbGFtCisjZWxzZQor
ICAgIC8vIG1sYW0gRklYTUUKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVU5VU0VEX1BB
UkFNKHBjKTsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKSAvLyBtbGFtICovCiB9CiAKIEluc3RydWN0
aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKQEAg
LTYxLDggKzY5LDE1IEBAIEluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXgK
ICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwogICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2Vw
dGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3Jp
cHRpb24oKSk7CiAjZW5kaWYKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0gRklYTUUK
ICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
LCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKLSAgICAK
Ky8qIG1sYW0KKyNlbHNlCisgICAgLy8gbWxhbSBGSVhNRQorICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKKyAgICBVTlVTRURfUEFSQU0ocGMpOworI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vbWxhbSBG
SVhNRSAqLworCiAgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0
cnVjdGlvbnMoKTsKIH0KIApAQCAtNzMsOSArODgsMzMgQEAgdm9pZCogY2FsbFRvVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cgogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0
YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKKy8vIG1sYW0gI2lmIEVOQUJMRShK
SVQpIC8vIG1sYW0gRklYTUUKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKTsKLSAgICAKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CisvKiBtbGFtCisjZWxzZQorICAgIC8vIG1s
YW0gRklYTUUKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVU5VU0VEX1BBUkFNKHBjKTsK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKSAvL21sYW0gRklYTUUgKi8KKworLyogbWxhbSBOT1QgTkVF
REVECisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAvICogbWxhbQorICAgIC8vIG1sYW0g
RklYTUUgdmVyaWZ5IHRoYXQgdGhpcyB3b3Jrcy4KKyAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9
IGdsb2JhbERhdGEtPmludGVycHJldGVyLT50aHJvd0V4Y2VwdGlvbihleGVjLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkpOworICAgIC8vIG1sYW0gQVNTRVJUKGhhbmRsZXIpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gZXhlYzsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCk7CisgICAgSW5zdHJ1Y3Rpb24qIHZQQyA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSArIGhhbmRsZXItPnRhcmdldDsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQq
Pih2UEMpOworICAgICogLworICAgIHJldHVybiBOVUxMOyAvLyBUaGUgaW50ZXJwcmV0ZXIgbG9v
cCB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICAvLyBtbGFtIEZJWE1FIHZlcmlmeSB0aGF0IHRo
aXMgd29ya3MuCisjZWxzZQorLy8gbWxhbSBFTkQgTk9UIE5FRURFRCAqLworICAgIC8vIG1sYW0g
b3JpZyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxf
dHJhbXBvbGluZSk7CisgICAgcmV0dXJuIExMSU5UX0FERFJFU1NfT0ZfR0xVRShsbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKKy8vIG1sYW0gTk9UIE5FRURFRCAjZW5kaWYKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAxMjMy
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwyNiBAQAogI2luY2x1ZGUgPHd0Zi9Jbmxp
bmVBU00uaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIENQVShYODYpCisKKyNp
ZiBFTkFCTEUoTExJTlRfQ19MT09QKQorI2RlZmluZSBPRkZMSU5FX0FTTV9DX0xPT1AgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQ19MT09QIDAKKyNlbmRpZgorCisjaWYgQ1BVKFg4Nikg
JiYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAxCiAjZWxz
ZQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAogI2VuZGlmCiAKLSNpZiBDUFUoQVJNX1RIVU1C
MikKKyNpZiBDUFUoQVJNX1RIVU1CMikgJiYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0FSTXY3IDEKICNlbHNlCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAK
ICNlbmRpZgogCi0jaWYgQ1BVKFg4Nl82NCkKKyNpZiBDUFUoWDg2XzY0KSAmJiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0IDEKICNlbHNlCiAjZGVmaW5l
IE9GRkxJTkVfQVNNX1g4Nl82NCAwCkBAIC05MSw2ICs5OCwxMCBAQAogI2RlZmluZSBPRkZMSU5F
X0FTTV9WQUxVRV9QUk9GSUxFUiAwCiAjZW5kaWYKIAorLyogbWxhbSBUUlkgbW92aW5nIHRvIExv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwCisKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogLy8g
VGhlc2UgYXJlIGZvciBidWlsZGluZyBhbiBpbnRlcnByZXRlciBmcm9tIGdlbmVyYXRlZCBhc3Nl
bWJseSBjb2RlOgogI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJTiAgIGFzbSAoCiAjZGVmaW5lIE9G
RkxJTkVfQVNNX0VORCAgICAgKTsKQEAgLTEwOCw3ICsxMTksMjEgQEAKICAgICBISURFX1NZTUJP
TChsYWJlbCkgIlxuIiAgICAgICAgICAgICAgICAgICAgIFwKICAgICBTWU1CT0xfU1RSSU5HKGxh
YmVsKSAiOlxuIgogI2VuZGlmCisjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcGNv
ZGUpIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsbGludF8jI29wY29kZSkKIAogI2RlZmluZSBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChsYWJlbCkgICBMT0NBTF9MQUJFTF9TVFJJTkcobGFiZWwp
ICI6XG4iCiAKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisKKy8vIFRoZXNlIGFyZSBm
b3IgYnVpbGRpbmcgYSBDIExvb3AgaW50ZXJwcmV0ZXI6CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JF
R0lOCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VORAorI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVf
TEFCRUwob3Bjb2RlKSBERUZJTkVfT1BDT0RFKG9wY29kZSkKKyNkZWZpbmUgT0ZGTElORV9BU01f
R0xPQkFMX0xBQkVMKGxhYmVsKSAgbGFiZWw6CisjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKGxhYmVsKSAgIGxhYmVsOgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKwor
Ly8gbWxhbSBFTkQgdHJ5IG1vdmluZyB0byBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLworCiAj
ZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lv
biAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlN0
cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiVmFsdWVQ
cm9maWxlLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MSw3ICs2Miw4IEBA
IHB1YmxpYzoKIAogY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXko
KQogewotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJM
RShKSVQpIHx8IEVOQUJMRShMTElOVCkKIC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBv
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29k
ZQogLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBhIGhlYWRlciBp
ZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCiAvLyBQbGF0Zm9ybS5oIG1hY3JvcyB3ZSBo
YXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJbnRPZmZzZXRz
RXh0cmFjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAK
ICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlByb2ZpbGVyLmgiIC8v
IG1sYW0KKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogCkBAIC03Miw3ICs3NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgewogI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tp
bmRleF0udS5vcGVyYW5kKSkKIAogI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNv
bmQpIGRvIHsgICAgICAgXAotICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGZpcnN0LCBzZWNv
bmQpOyAgICAgICAgXAorICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHJlaW50ZXJwcmV0X2Nh
c3Q8SW5zdHJ1Y3Rpb24qPihmaXJzdCksIHNlY29uZCk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkK
IAogI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCkBA
IC0yMzEsOSArMjMzLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tf
Zm8KIAogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiB7Ci0gICAgZGF0YUxvZygiJXAgLyAl
cDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHNjb3BlICVwXG4iLAorICAgIC8vIFZNSW5zcGVjdG9y
OjpkdW1wRnJhbWUoZXhlYywgIiAgIG1sYW0gOjogVFJBQ0UgIiwgIHBjLCAiIiwgIiIsIDApOwor
ICAgIGRhdGFMb2coIiVwIC8gJXA6IGV4ZWN1dGluZyAlcCBiYyMlenUsICVzLCBzY29wZSAlcFxu
IiwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAotICAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgIGV4ZWMsIHBjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAogICAgICAgICAg
ICAgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChwY1swXS51Lm9wY29kZSldLAogICAgICAgICAgICAgZXhlYy0+c2NvcGVDaGFpbigpKTsKQEAg
LTI2NCw2ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQog
Ly8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCB0cnkgdG8gT1NSLgogaW5saW5lIGJvb2wgaml0
Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgY29kZUJsb2NrLT51cGRhdGVB
bGxQcmVkaWN0aW9ucygpOwogICAgIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmSklUVGhy
ZXNob2xkUmVhY2hlZCgpKSB7CkBAIC0yOTYsOCArMzAwLDE0IEBAIGlubGluZSBib29sIGppdENv
bXBpbGVBbmRTZXRIZXVyaXN0aWNzKEMKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UgLy8gIUVOQUJMRShKSVQpCisgICAgVU5VU0VEX1BB
UkFNKGNvZGVCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZiAvLyAhRU5BQkxFKEpJVCkKIH0KIAorI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0K
IGVudW0gRW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKIHN0YXRpYyBTbG93UGF0
aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKIHsK
QEAgLTM5MCw2ICs0MDAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQogICAgICAg
ICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwogICAgIExMSU5UX0VORF9JTVBMKCk7
CiB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogCiBMTElOVF9TTE9XX1BBVEhfREVD
TChyZWdpc3Rlcl9maWxlX2NoZWNrKQogewpAQCAtNDAzLDYgKzQxNCw5IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2sKICNlbmRpZgogICAgIEFTU0VSVCgmZXhlYy0+
cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwogICAg
IGlmIChVTkxJS0VMWSghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3Jv
dygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzXSkpKSB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBWTUluc3BlY3Rvcjo6
ZHVtcEZyYW1lKGV4ZWMsICIgICAqKiogbWxhbSBsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrOiAi
KTsKKyAgICAgICAgI2VuZGlmCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBl
eGVjLT5yZXR1cm5QQygpOwogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAg
ICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CkBAIC02MTAsNiArNjI0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25l
Z2F0ZSkKIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKIHsKKyAgICAvLyBt
bGFtQnJlYWsoInNsb3dfcGF0aF9hZGQiLCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgIExMSU5U
X0JFR0lOKCk7CiAgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAg
IEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKQEAgLTYzNyw2ICs2NTIsMTMg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX211bCkKICAgICBMTElOVF9CRUdJTigp
OwogICAgIGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7
CiAgICAgZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsK
KyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCJcbiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICBw
cmludGYoIiBsbGludCBzbG93X3BhdGhfbXVsICVlICogJWUgPT0+ICVlXG4iLCBhLCBiLCBhKmIp
OworICAgIHByaW50ZigiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT1cbiIpOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gRU5ECiAgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKGEgKiBiKSk7CiB9CiAKQEAgLTc5Miw3ICs4MTQsMTAgQEAgc3RhdGljIEpTVmFs
dWUgcmVzb2x2ZUdsb2JhbChFeGVjU3RhdGUqIAogICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKSk7CiAgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBpZiAocmVz
dWx0LmlzSW50MzIoKSkKKyAgICAgICAgICAgIHByaW50ZigiICAgbWxhbSBTTE9XIHJlc29sdmVH
bG9iYWwgfCBjb2RlQmxvY2sgJXAgb2JqICVwIHJlc3VsdCA9ICVkXG4iLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgcmVzdWx0LmFzSW50MzIoKSk7CisgICAgICAgICNlbmRpZgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTg5NiwxMCArOTIxLDIwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgIHBjWzRdLnUuc3Ry
dWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworLy8gbWxhbSAjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgICAgICAvLyBtbGFtIEZJWE1FCisvLyBt
bGFtICNlbHNlCisgICAgICAgICAgICAgICAgLy8gbWxhbSBvcmlncGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dl
dF9ieV9pZCk7CisvLyBtbGFtICNlbmRpZgogICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFu
ZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworLy8gbWxhbSAjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgICAgICAvLyBtbGFtIEZJWE1FCisvLyBtbGFt
ICNlbHNlCisgICAgICAgICAgICAgICAgLy8gbWxhbSBvcmlnIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9w
Y29kZShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworLy8gbWxhbSAjZW5kaWYKICAgICAgICAg
ICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTkyOSwxNSArOTY0LDI1IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOwotICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkg
ewogICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRl
bnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKLSAgICBlbHNlCisgICAgICAgIGlm
IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgIC8vIHBy
aW50ZigiICAgbWxhbSBQQVRIXzEgc2xvd19wYXRoX3B1dF9ieV9pZCB8IGNvZGVibG9jayAlcCBy
ZXN1bHQgPSAlZFxuIiwgY29kZUJsb2NrLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS5hc0ludDMy
KCkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKICAgICAgICAgYmFzZVZhbHVlLnB1dChleGVj
LCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgICAgICBpZiAoTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAvLyBwcmludGYo
IiAgIG1sYW0gUEFUSF8yIHNsb3dfcGF0aF9wdXRfYnlfaWQgfCBvYmogJXAgY29kZWJsb2NrICVw
IHJlc3VsdCA9ICVkXG4iLCBiYXNlVmFsdWUuZ2V0T2JqZWN0KCksIGNvZGVCbG9jaywgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkuYXNJbnQzMigpKTsKKyAgICAgICAgfQorICAgIH0KICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAKKyAgICBpZiAoTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkuaXNJbnQzMigpKSB7CisgICAgICAgIC8vIHByaW50ZigiICAgbWxhbSBOT19FWENFUFRJT04g
c2xvd19wYXRoX3B1dF9ieV9pZCB8IGNvZGVibG9jayAlcCByZXN1bHQgPSAlZFxuIiwgY29kZUJs
b2NrLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS5hc0ludDMyKCkpOworICAgIH0KKworI2lmIDEg
Ly8gbWxhbSBSZW1vdmUgdGVtcG9yYXJpbHkgZm9yIHRlc3RpbmcuCiAgICAgaWYgKGJhc2VWYWx1
ZS5pc0NlbGwoKQotICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKLSAgICAgICAgCisg
ICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeyAgICAgICAgCiAgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOwogICAgICAgICAKQEAgLTk1MSw3ICs5OTYsMTIg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBz
b21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKICAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cg
bWF5IEdDLgotICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgICAgICAgICAgICAgICAgICAvLyBtbGFtIEZJWE1FCisvLyBtbGFtICNlbHNl
CisgICAgICAgICAgICAgICAgICAgIC8vIG1sYW0gb3JpZyBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1
dF9ieV9pZCk7CisvLyBtbGFtICNlbmRpZgogCiAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKICAgICAgICAgICAgICAgICAgICAgCkBA
IC05NzAsMzAgKzEwMjAsNTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkgeworLy8gbWxhbSAjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKKyAgICAgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhNRQorLy8gbWxhbSAjZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtbGFtIG9yaWcgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xv
YmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG1sYW0gb3JpZyBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRh
LmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lKTsKKy8vIG1sYW0gI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAgICAgICAgICAgICAv
LyBtbGFtIEZJWE1FCisvL21sYW0gI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbWxhbSBvcmlmIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9v
Zl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtbGFtIG9yaWcgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisvLyBtbGFtICNlbmRpZgogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKy8vIG1sYW0gI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCisgICAgICAgICAgICAgICAgICAgIC8vIG1sYW0gRklYTUUKKy8vIG1sYW0gI2Vsc2UK
KyAgICAgICAgICAgICAgICAgICAgLy8gbWxhbSBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9p
ZCk7CisvLyBtbGFtICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworLy8gbWxhbSAj
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgICAgICAgICAgLy8gbWxhbSBGSVhN
RQorLy8gbWxhbSAjZWxzZQorICAgICAgICAgICAgICAgICAgICAvLyBtbGFtIG9yaWcgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmUpOworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEu
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworLy8gbWxh
bSAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5P
dXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyNlbmRp
ZiAvLyBtbGFtIEVORCB0ZXN0aW5nCiAgICAgCiAgICAgTExJTlRfRU5EKCk7CiB9CkBAIC0xMjkx
LDcgKzEzNjQsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5v
cGVyYW5kKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhl
Yy0+c2NvcGVDaGFpbigpKTsKLSAgICAKKyAgICAvL3ByaW50ZigiIG1sYW0gbmV3X2Z1bmNfZXhw
IGZ1bmMgKCVwKSBjb2RlQmxvY2sgJXBcbiIsIGZ1bmMsIGNvZGVCbG9jayk7CisKICAgICBpZiAo
IWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKICAgICAgICAgSlNTdGF0aWNTY29wZU9iamVj
dCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVj
LCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAg
ICBmdW5jLT5zZXRTY29wZShnbG9iYWxEYXRhLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9u
U2NvcGVPYmplY3QpKTsKQEAgLTEzMDIsNiArMTM3Niw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZnVuY18KIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVI
b3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBj
YWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKKyAgICAvLyBtbGFtIHByaW50
ZigiICAgbWxhbSBTTE9XIFBBVEggaGFuZGxlSG9zdENhbGwgZnAgJXAgcGMgJXAgY2FsbGVlICVw
IGtpbmQgJWQgQCAlczolZFxuIiwgZXhlY0NhbGxlZSwgcGMsIGNhbGxlZS5nZXRPYmplY3QoKSwg
a2luZCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAvLyBtbGFtQnJlYWsoX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOwogCkBAIC0xMzU5LDYgKzE0MzUsOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIHNldFVwQ2FsbChFeGVjCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRh
TG9nKCJQZXJmb3JtaW5nIGNhbGwgd2l0aCByZWNvcmRlZCBQQyA9ICVwXG4iLCBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpLT5jdXJyZW50VlBDKCkpOwogI2VuZGlmCisgICAgLy9wcmludGYoIlxu
IG1sYW0gU1RBUlQgb2Ygc2V0VXBDYWxsIHwgZnJhbWUoJXApLT5jdXJyZW50VlBDKCkgPSAlcFxu
IiwKKyAgICAvLyAgICAgICBleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLT5jdXJyZW50VlBDKCkpOwog
CiAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVl
QXNWYWx1ZSk7CiAgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKQEAgLTEzNzIsMjEgKzE0
NTAsNTcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gMDsKLSAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICAjaWYgbWxhbV9QUklOVEYK
KyAgICAgICAgcHJpbnRmKCJcbiBtbGFtIENBTExJTkcgSE9TVCBGVU5DVElPTiBAICVzICVzOiVk
XG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICNlbmRpZgor
I2lmIEVOQUJMRShKSVQpIC8vIG1sYW0gRklYTUUKICAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKLSAgICBlbHNl
IHsKKyNlbHNlCisgICAgICAgIGNvZGVQdHIgPSAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgPworICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZSkgOgorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5l
KTsKKyNlbmRpZiAvLyBtbGFtIEZJWE1FCisgICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7
Ci0gICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAj
aWYgbWxhbV9QUklOVEYKKyAgICAgICAgICAgIHByaW50ZigiXG4gbWxhbSBUSFJPVyBAICVzICVz
OiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICAj
ZW5kaWYKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJh
bWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgfQogICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rp
b25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKICAgICAgICAgQVNTRVJU
KGNvZGVCbG9jayk7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxu
IG1sYW0gQ09NUElMRUQgY29kZUJsb2NrPSAlcCBleGVjdXRhYmxlICVwIEAgJXMgJXM6JWRcbiIs
CisgICAgICAgICAgICAgICBjb2RlQmxvY2ssIGZ1bmN0aW9uRXhlY3V0YWJsZSwgX19GVU5DVElP
Tl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKKyNpZiBFTkFCTEUoSklU
KSAvLyBtbGFtIEZJWE1FCiAgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkpCiAgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2lu
ZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAg
ICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBj
b2RlUHRyID0gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8KKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjaykgOgorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gKGtpbmQgPT0gQ29kZUZv
ckNhbGwpID8KKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkgOgorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgfQotICAgIAorCisvKiAvIG1sYW0gQkVHSU4KKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgIC8vIEtlZXAgTExJTlQgYXNzZXJ0aW9ucyBhYm91dCBKSVQgdXNhZ2UgaGFw
cHksIGJ1dCBkbyBhbGxvdyBzdWNoIGNvZGUgdG8KKyAgICAvLyBiZSBjYWxsZWQuICBIZW5jZSwg
dGhlIGNvZGUgaXMgMHhiYWRkYmVlZi4KKyAgICBjb2RlUHRyID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkZGJlZWYpKTsKKyNlbmRpZgorLy8gbWxh
bSBFTkQgKi8KKwogICAgIGlmIChjYWxsTGlua0luZm8pIHsKICAgICAgICAgaWYgKGNhbGxMaW5r
SW5mby0+aXNPbkxpc3QoKSkKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CkBA
IC0xMzk4LDYgKzE1MTIsMTkgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwo
RXhlYwogICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5m
byk7CiAgICAgfQogICAgIAorLyogbWxhbSAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICBl
eGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRS
ZXR1cm5QQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihleGVjQ2FsbGVlLT5jdXJyZW50VlBDKCkp
KTsKKyAgICAvLyBtbGFtIGV4ZWNDYWxsZWUtPnNldEN1cnJlbnRWUEMocmVpbnRlcnByZXRfY2Fz
dDxJbnN0cnVjdGlvbio+KDB4ZmFkZGJlZWYpKTsKKyNlbmRpZiAqLworICAgIC8vIG1sYW0gQkVH
SU4gdGVzdAorICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUo
ZXhlY0NhbGxlZSwgIiAgPj4+IFBVU0hFRCB0byBuZXcgIiwgcGMsIF9fRlVOQ1RJT05fXywgX19G
SUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtIEVORCB0ZXN0CisgICAg
Ly9wcmludGYoIlxuIG1sYW0gRU5EIG9mIHNldFVwQ2FsbCB8IGZyYW1lKCVwKS0+Y3VycmVudFZQ
QygpID0gJXBcbiIsCisgICAgLy8gICAgICAgZXhlY0NhbGxlZSwgZXhlY0NhbGxlZS0+Y3VycmVu
dFZQQygpKTsKKwogICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQogCkBAIC0xNDA5LDYgKzE1MzYsMTEgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeAogICAgIC8vIC0gSWYgcG9zc2libGUs
IGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBv
ZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCiAg
ICAgCisgICAgLy9wcmludGYoIlxuIG1sYW0gU1RBUlQgb2YgZ2VuZXJpY0NhbGwgfCBmcmFtZSgl
cCktPmN1cnJlbnRWUEMoKSA9ICVwXG4iLAorICAgIC8vICAgICAgIGV4ZWMsIGV4ZWMtPmN1cnJl
bnRWUEMoKSk7CisgICAgLy8gbWxhbSBCRUdJTgorICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFt
ZShleGVjLCAibWxhbSBTTE9XIFBBVEggZ2VuZXJpY0NhbGwgIik7CisgICAgLy8gbWxhbSBFTkQK
ICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAg
ICAKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOwpA
QCAtMTQxNiwxMyArMTU0OCwyOSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWND
YWxsKEV4CiAgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNb
Ml0udS5vcGVyYW5kKTsKICAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUo
ZXhlYyk7Ci0gICAgCisvLyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorLy8gICAgcHJpbnRmKCJc
biBtbGFtIHNldFVwQ2FsbDogc2V0IGZyYW1lKCVwKS0+Y3VycmVudFZQQygpID0gJXBcbiIsIGV4
ZWNDYWxsZWUsIHBjICsgNik7CisvLyAgICBleGVjQ2FsbGVlLT5zZXRDdXJyZW50VlBDKHBjICsg
Nik7CisvLyNlbmRpZgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgZXhlY0NhbGxlZS0+
c2V0Q3VycmVudFZQQyhleGVjLT5jdXJyZW50VlBDKCkpOworI2VuZGlmCisKICAgICBBU1NFUlQo
cGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIC8vcHJpbnRmKCJcbiBtbGFtIEVORCBvZiBnZW5l
cmljQ2FsbCB8IGZyYW1lKCVwKS0+Y3VycmVudFZQQygpID0gJXBcbiIsCisgICAgLy8gICAgICAg
ZXhlY0NhbGxlZSwgZXhlY0NhbGxlZS0+Y3VycmVudFZQQygpKTsKKyAgICAvLyBtbGFtIEJFR0lO
CisgICAgLy9WTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKGV4ZWMpOworICAgIC8vIG1sYW0gRU5ECiAg
ICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwg
cGNbNF0udS5jYWxsTGlua0luZm8pOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY2FsbCkKIHsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIlxuXG4gbWxhbSAm
JiYmJiYmJiBsbGludF9zbG93X3BhdGhfY2FsbCB8IHBjICVwIGZyYW1lKCVwKS0+Y3VycmVudFZQ
QygpID0gJXAgQCAlczolZFxuXG4iLAorICAgICAgICAgICBwYywgZXhlYywgZXhlYy0+Y3VycmVu
dFZQQygpLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgogICAgIExMSU5UX0JFR0lO
X05PX1NFVF9QQygpOwogICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNh
bGwpOwogfQpAQCAtMTQ2Niw3ICsxNjE0LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jYWxsX2V2YWwKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKICAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFz
VmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkp
OwotICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIC8vIG1sYW0gQkVHSU4KKyAgICAv
LyBtbGFtIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIC8vIG1sYW0gVVNFRF9UT19XT1JL
IGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKExMSU5UX0FERFJFU1NfT0ZfR0xVRShsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKExMSW50OjpE
YXRhOjpnZXRPcGNvZGVQdHIobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICAvLyBt
bGFtIEVORAogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKICAgICBleGVjLT5zZXRD
dXJyZW50VlBDKHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKICAgICAKQEAgLTE1
MTIsNiArMTY2NCw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpCiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpCiB7CisgICAgI2lm
IG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShleGVjLCAiICAgPT09IGlu
c3BlY3QgIiwgcGMsIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5k
aWYKICAgICBMTElOVF9CRUdJTigpOwogICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDI2ICs0MywzMiBAQCBuYW1lc3BhY2UgTExJbnQgewogLy8gJ2V4dGVybiAiQyInKSBuZWVk
cyB0byBiZSBQT0Q7IGhlbmNlIHB1dHRpbmcgYW55IGNvbnN0cnVjdG9ycyBpbnRvIGl0IGNvdWxk
IGNhdXNlIGVpdGhlciBjb21waWxlcgogLy8gd2FybmluZ3MsIG9yIHdvcnNlLCBhIGNoYW5nZSBp
biB0aGUgQUJJIHVzZWQgdG8gcmV0dXJuIHRoZXNlIHR5cGVzLgogc3RydWN0IFNsb3dQYXRoUmV0
dXJuVHlwZSB7Ci0gICAgdm9pZCogYTsKLSAgICB2b2lkKiBiOworICAgIEluc3RydWN0aW9uKiBh
OworICAgIEV4ZWNTdGF0ZSogYjsKIH07CiAKLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5j
b2RlUmVzdWx0KHZvaWQqIGEsIHZvaWQqIGIpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVu
Y29kZVJlc3VsdChJbnN0cnVjdGlvbiogYSwgRXhlY1N0YXRlKiBiKQogewogICAgIFNsb3dQYXRo
UmV0dXJuVHlwZSByZXN1bHQ7CiAgICAgcmVzdWx0LmEgPSBhOwogICAgIHJlc3VsdC5iID0gYjsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQorCitpbmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCwgSW5zdHJ1Y3Rpb24qJiBhLCBFeGVjU3RhdGUqJiBiKQorewor
ICAgIGEgPSByZXN1bHQuYTsKKyAgICBiID0gcmVzdWx0LmI7Cit9CiAjZWxzZQogdHlwZWRlZiBp
bnQ2NF90IFNsb3dQYXRoUmV0dXJuVHlwZTsKIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBl
bmNvZGVSZXN1bHQodm9pZCogYSwgdm9pZCogYikKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUg
ZW5jb2RlUmVzdWx0KEluc3RydWN0aW9uKiBhLCBFeGVjU3RhdGUqIGIpCiB7CiAgICAgdW5pb24g
ewogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdm9pZCogYTsKLSAgICAgICAgICAgIHZv
aWQqIGI7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogYTsKKyAgICAgICAgICAgIEV4ZWNTdGF0
ZSogYjsKICAgICAgICAgfSBwYWlyOwogICAgICAgICBpbnQ2NF90IGk7CiAgICAgfSB1OwpAQCAt
NzAsNiArNzYsMjAgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodgog
ICAgIHUucGFpci5iID0gYjsKICAgICByZXR1cm4gdS5pOwogfQorCitpbmxpbmUgdm9pZCBkZWNv
ZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgSW5zdHJ1Y3Rpb24qJiBhLCBFeGVj
U3RhdGUqJiBiKQoreworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IEluc3RydWN0aW9uKiBhOworICAgICAgICAgICAgRXhlY1N0YXRlKiBiOworICAgICAgICB9IHBh
aXI7CisgICAgICAgIGludDY0X3QgaTsKKyAgICB9IHU7CisgICAgdS5pID0gcmVzdWx0OworICAg
IGEgPSB1LnBhaXIuYTsKKyAgICBiID0gdS5wYWlyLmI7Cit9CiAjZW5kaWYKIAogZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0
cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CiAKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworLyogLyBtbGFtICNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKSAvLyBtbGFtCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgT3Bjb2RlKiBsbGludFRo
dW5rLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERh
dGEpOworICAgIFVOVVNFRF9QQVJBTSh0aHVua0tpbmQpOworICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludFRodW5rKTsKK30KKy8vIG1sYW0g
I2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0gKi8KIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7CiAgICAg
SlNJbnRlcmZhY2VKSVQgaml0OwpAQCAtNDcsNiArNTcsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGdlbmVyYXRlVGh1CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFs
RGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCkpOwogfQor
Ly8gbWxhbSAjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KIAogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQogewpAQCAtNzgsNiArODksOCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHCiAgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIik7CiB9CiAK
KyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
cmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgzLDE1ICs4MywyMyBAQCBj
b25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKIAogCiAjIFV0aWxpdGllcworbWFjcm8g
anVtcFRvUEMoKQorICAgIGlmIENfTE9PUAorICAgICAgICBjeHhOZXh0T3Bjb2RlCisgICAgZWxz
ZQorICAgICAgICBqbXAgW1BDXSAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RS
VUNUSU9OOworICAgIGVuZAorZW5kCisKIG1hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCi0gICAgYWRk
cCBhZHZhbmNlICogNCwgUEMKLSAgICBqbXAgW1BDXQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBD
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CisgICAganVtcFRv
UEMoKQogZW5kCiAKIG1hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKICAg
ICBsc2hpZnRpIDIsIHBjT2Zmc2V0CiAgICAgYWRkcCBwY09mZnNldCwgUEMKLSAgICBqbXAgW1BD
XQorICAgIGp1bXBUb1BDKCkKIGVuZAogCiBtYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkK
QEAgLTEwMCwyMSArMTA4LDI1IEBAIG1hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQogZW5k
CiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCi0gICAgam1wIFtQQ10KKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1f
UFJJTlRGKSBwcmludGYoIlxuIG1sYW0gOjogUFJJTlQgZGlzcGF0Y2hBZnRlckNhbGwoKSB8IHBj
ID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnO1xuXG4iKTsKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAv
LyBSZWxvYWQgYSBwcmV2aW91c2x5IHN0YXNoZWQgcmV0dXJuUEMuCisgICAganVtcFRvUEMoKQog
ZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKICAgICBpZiBBUk12Nwot
ICAgICAgICBtb3ZlIGFyZzEsIHQwCi0gICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92
ZSBhcmcxLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAg
ICAgIG1vdmUgYXJnMiwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcyID0gLi4u
OworICAgICAgICBjYWxsIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fs
bCBDIGZ1bmN0aW9uOwogICAgIGVsc2lmIFg4NgotICAgICAgICBwb2tlIGFyZzEsIDAKLSAgICAg
ICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMSwgMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBhcmcxID0gLi4uOworICAgICAgICBwb2tlIGFyZzIsIDEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYXJnMiA9IC4uLjsKKyAgICAgICAgY2FsbCBmdW5jdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbjsKKyAgICBlbHNpZiBDX0xP
T1AKKyAgICAgICAgY3h4Q2FsbFNsb3dQYXRoIGZ1bmN0aW9uLCBhcmcxLCBhcmcyICAgIC8vIGNh
bGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICBlbHNlCiAgICAgICAgIGVycm9yCiAgICAg
ZW5kCi0gICAgY2FsbCBmdW5jdGlvbgogZW5kCiAKICMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMg
YW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCkBAIC0xMjksNiArMTQxLDEx
IEBAIG1hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywKICAgICAgICAgcG9r
ZSBhcmcyLCAxCiAgICAgICAgIHBva2UgYXJnMywgMgogICAgICAgICBwb2tlIGFyZzQsIDMKKyAg
ICBlbHNpZiBDX0xPT1AKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIs
IHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MwogICAgIGVs
c2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKQEAgLTEzNyw4ICsxNTQsOCBAQCBlbmQKIAogbWFj
cm8gY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykK
LSAgICBtb3ZlIHQwLCBQQwotICAgIG1vdmUgdDEsIGNmcgorICAgIG1vdmUgdDAsIFBDICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KKyAgICBtb3ZlIHQxLCBj
ZnIgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KIGVuZAogCiAj
IERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGlu
IHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQpAQCAtMTYyLDggKzE3OSw5IEBAIGVu
ZAogCiAjIENhbGwgYSBzbG93UGF0aCBmb3IgY2FsbCBvcGNvZGVzLgogbWFjcm8gY2FsbENhbGxT
bG93UGF0aChhZHZhbmNlLCBzbG93UGF0aCwgYWN0aW9uKQotICAgIGFkZHAgYWR2YW5jZSAqIDQs
IFBDLCB0MAotICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5Q
Qzx0MD4gPSBwYyArIGFkdmFuY2UqNDsKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHJldHVyblBDPHQwPjsK
KyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IFBSSU5U
IGNhbGxDYWxsU2xvd1BhdGgoKSB8IGNmciAlcCBwYyAlcCB8IHJldHVyblBDPHQwPiA9IHBjICsg
YWR2YW5jZSo0OyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSByZXR1cm5QQzx0MD47XG5cbiIsIGNh
bGxGcmFtZSwgclBDLnUudnApOwogICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykKICAgICBt
b3ZlIHQxLCBjZnIKICAgICBhY3Rpb24odDApCkBAIC0xNzMsMzAgKzE5MSwzMCBAQCBtYWNybyBj
aGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVCgKICAgICAgICAg
MSwKICAgICAgICAgbWFjcm8gKCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHBjOwogICAgICAg
ICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKICAgICAgICAgICAgIG1vdmUg
dDEsIGNmcgogICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKICAgICAgICAgICAgIGptcCB0
MAogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7CiAgICAgICAg
IGVuZCkKIGVuZAogCiAjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50
IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CiAjIGNoYW5nZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCi0gICAgam1wIC5kb25lCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgLmNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdv
dG8gLmNvbnN0YW50OworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsK
KyAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsK
IC5jb25zdGFudDoKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAotICAgIGxvYWRw
IENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXls
b2FkXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Y29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQg
ICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29u
c3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZp
bCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1
ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgotICAgIGxvYWRwIFRhZ09mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOworICAg
IGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IHZl
Y3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwogLmRvbmU6CiBlbmQKIApAQCAtMjE1
LDM1ICsyMzMsNDAgQEAgZW5kCiAKICMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1l
IHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKLSAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0s
IHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybzogbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgeworICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+
XS5QYXlsb2FkOworICAgIGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBn
b3RvIC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKLSAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdGFnXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENvZGVCbG9jazo6bV9j
b25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25z
dGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAogICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCi0gICAgbHNoaWZ0aSAzLCBpbmRl
eAotICAgIGFkZHAgaW5kZXgsIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5
bG9hZAotICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKyAgICBsc2hpZnRpIDMsIGluZGV4
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwor
ICAgIGFkZHAgaW5kZXgsIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4g
PSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsKKyAgICBsb2FkcCBQYXlsb2FkT2Zm
c2V0W3RhZ10sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9h
ZDsKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9
IGNvbnN0YW50PGExPi5UYWc7CiAuZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZy4KIGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4
LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgdGFnQ2hlY2soVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpIHsKKyAg
ICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICB0YWdDaGVjayhU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkID0gY2Zy
W2luZGV4XS5QYXlsb2FkOworICAgIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHByaW50Zigi
ICAgICAgbWxhbSBBU00gbG9hZCB2YXIgfCBvYmogJXAgY2ZyICVwW2luZGV4ICVsZF1cbiIsIHIw
LnUudnAsIGNhbGxGcmFtZSwgcjQudS5pKTsgbWxhbVByaW50PSBmYWxzZTsgfQorICAgIGptcCAu
ZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwogLmNvbnN0YW50
OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCi0gICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9j
azxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0
YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkICAgICAg
ICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2Fk
Pi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgICMgVGhlcmUgaXMgYSBiaXQg
b2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRv
ICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgotICAgIHRhZ0NoZWNr
KFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCi0gICAgbG9hZHAgUGF5bG9hZE9mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5UYWcp
OworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkID0g
dmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwogLmRvbmU6CisgICAgLy8gfSBF
TkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiBlbmQKIAog
IyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlz
IG5vdCBtdXRhdGVkLiBVc2UKQEAgLTI1MiwxMCArMjc1LDE0IEBAIGVuZAogIyBiZSBmYXN0ZXIg
dGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9u
IHRoZQogIyB0YWcuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwg
ZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCiAgICAgICAgIGluZGV4LAot
ICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBz
bG93IGVuZCwKLSAgICAgICAgcGF5bG9hZCkKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykKKyAg
ICAgICAgICAgIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgIC8vICAgaWYgKGFj
dHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKKyAgICAgICAgZW5kLAorICAgICAg
ICBwYXlsb2FkKSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSguLi4p
OworICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkLgogZW5k
CiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBw
YXlsb2FkKQpAQCAtMjcxLDggKzI5OCwxMCBAQCBlbmQKIAogbWFjcm8gdmFsdWVQcm9maWxlKHRh
ZywgcGF5bG9hZCwgcHJvZmlsZSkKICAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAgICAgICBzdG9y
ZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQotICAg
ICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zm
c2V0W3Byb2ZpbGVdCisgICAgLy8gbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJv
ZmlsZSBpLmUuIG9yYWNsZUNhY2hlSWQpIHsKKyAgICAgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9m
aWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0gICAgICAgICAgICAvLyAgIFZhbHVl
UHJvZmlsZTo6YnVja2V0c1tvcmFjbGVDYWNoZUlkXS5UYWcgPSB0YWc8YTA+OworICAgICAgICBz
dG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3By
b2ZpbGVdICAgIC8vICAgVmFsdWVQcm9maWxlOjpidWNrZXRzW29yYWNsZUNhY2hlSWRdLlBheWxv
YWQgPSBwYXlsb2FkPGExPjsKKyAgICAvLyB9IEVORCB2YWx1ZVByb2ZpbGUuCiAgICAgZW5kCiBl
bmQKIApAQCAtMjg4LDcgKzMxNyw4IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFi
ZWwsIHNsb3cKICAgICBidGl6IHQwLCAuY29udGludWUKICAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjpnbG9iYWxEYXRhW3NwXSwgdDEKICAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZv
clRocm93W3QxXSwgdDAKLSAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JU
aHJvd1t0MV0KKyAgICAjIG1sYW0gam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9y
VGhyb3dbdDFdCisgICAgaW5kaXJlY3RKdW1wKEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBD
Rm9yVGhyb3dbdDFdKQogLmNvbnRpbnVlOgogICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMs
IHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIGl0LgogICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MQpAQCAtMjk5LDYzMSArMzI5LDk2NSBAQCBlbmQKIAogIyBJbnN0cnVjdGlvbiBpbXBs
ZW1lbnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisvLyBmdW5jdGlvbjogZm9yIGVhY2gg
aWQgaW4gbG9jYWxzIHsgY2ZyW2lkXSA9IHVuZGVmaW5lZDsgfQorLy8KKy8vICAgSW5pdGlhbGl6
ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4gSWYgdGhlIGNvZGUgYmxvY2sgcmVxdWly
ZXMKKy8vICAgYW4gYWN0aXZhdGlvbiwgZW50ZXJfd2l0aF9hY3RpdmF0aW9uIGlzIHVzZWQgaW5z
dGVhZC4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2Yg
YSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfZW50ZXI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAgICAgICAgICAvLyB0MjxDb2RlQmxv
Y2s+ID0gY2ZyLkNvZGVCbG9jawotICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwg
dDIgICAgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKLSAgICBidGl6
IHQyLCAub3BFbnRlckRvbmUKLSAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKLSAgICBtb3ZlIDAs
IHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8vIGNvZGVC
bG9jazx0Mj4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJz
W3QyXSwgdDIgICAgICAvLyBudW1WYXJzPHQyPiA9IGNvZGVCbG9jazx0Mj4ubV9udW1WYXJzOwor
ICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZSAgICAgICAgICAgICAgICAgICAvLyBpZiAobnVtVmFy
czx0Mj4gPT0gMCkgZ290byAuZG9uZTsKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAgICAgICAg
ICAgICAgICAgICAgLy8ganNVbmRlZmluZWQ8dDA+ID0gVW5kZWZpbmVkVGFnOworICAgIG1vdmUg
MCwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB6ZXJvPHQxPiA9IDA7CiAub3BF
bnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0MgotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgYnRp
bnogdDIsIC5vcEVudGVyTG9vcAorICAgIHN1YmkgMSwgdDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIG51bVZhcnM8dDI+LS07CisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0gICAgICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5UYWcgPSBqc1VuZGVmaW5lZDx0
MD47CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgIC8vICAgY2Zy
W251bVZhcnM8dDI+XS5QYXlsb2FkID0gemVybzx0MT47CisgICAgYnRpbnogdDIsIC5vcEVudGVy
TG9vcCAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQyPiAhPSAwKSBnb3RvIC5sb29w
OwogLm9wRW50ZXJEb25lOgotICAgIGRpc3BhdGNoKDEpCisgICAgZGlzcGF0Y2goMSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRl
Y29kZTogY3JlYXRlX2FjdGl2YXRpb24gZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gbmV3IEFjdGl2YXRpb24oKSBpZiBub3QgYWxyZWFkeSBwcmVzZW50OworLy8KKy8vICAg
SWYgdGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxmcmFtZSBoYXMgbm90IHlldCBi
ZWVuIGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQgd3JpdGVzIGl0IGJhY2sgdG8g
ZHN0LgogCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAgICAgdHJhY2VFeGVjdXRpb24o
KQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKLSAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAgICBsb2FkaSA0W1BDXSwgdDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFj
dGl2YXRpb25SZWc8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUgLy8g
aWYgKGNmclthY3RpdmF0aW9uUmVnPHQwPl0uVGFnICE9IEVtcHR5VmFsdWVUYWcpIGdvdG8gLmRv
bmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24p
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbjsK
IC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2go
MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IGluaXRfbGF6eV9yZWcg
ZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gSlNWYWx1ZSgpOworLy8KKy8v
ICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8vICAgVGhpcyBvcGNvZGUgYXBw
ZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3Bf
aW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQw
Ci0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQotICAgIHN0
b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgc3RvcmVpIEVt
cHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnJbZHN0PHQwPl0uVGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAgICBzdG9yZWkgMCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltkc3Q8dDA+XS5QYXlsb2FkID0gMDsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKKwogCisvLyBieXRlY29kZTogY3JlYXRlX2FyZ3VtZW50cyBkc3RSZWdJZAorLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBuZXcgQXJndW1lbnRzKCkgaWYgbm90IGFscmVhZHkg
cHJlc2VudDsKKy8vCisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVudHMnIG9iamVjdCBhbmQgcGxh
Y2VzIGl0IGluIGJvdGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNhbGwgZnJhbWUgc2xvdCBhbmQg
dGhlIGxvY2FsICdhcmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBpZiBpdCBoYXMgbm90IGFscmVh
ZHkgYmVlbiBpbml0aWFsaXNlZC4KIAogX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCisgICAgbG9h
ZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZSAg
Ly8gaWYgKGNmcltkc3Q8dDA+XS5UYWcgIT0gRW1wdHlWYWx1ZVRhZykgZ290byAuZG9uZTsKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKSAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHM7CiAub3BDcmVh
dGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG9wX2NyZWF0ZV90aGlzIHRoaXNSZWdJ
ZAorLy8gZnVuY3Rpb246IGNmclt0aGlzUmVnSWRdID0gbmV3IE9iamVjdChjdXJyZW50IFByb3Rv
Pyk7CisvLyBtbGFtIEZJWE1FOiBIb3cgZG9lcyB0aGUgY2FjaGVkSW5oZXJpdG9yIGdldCBwb3B1
bGF0ZWQ/CisvLyAgICAgICBDbGFzc2ljIHNwZWNpZmllcyBhIDJuZCBvcGVyYW5kIHByb3RvKHIp
LCBidXQgb3VyIGRpc3BhdGNoIGJlbG93IGlnbm9yZXMgaXQuCisvLworLy8gICBBbGxvY2F0ZSBh
biBvYmplY3QgYXMgJ3RoaXMnLCBmb3IgdXNlIGluIGNvbnN0cnVjdGlvbi4KKy8vICAgVGhpcyBv
cGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9j
ay4KIAogX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVy
aXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpczx0MD4gPSBjZnIuQ2FsbGVlOworICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
Y2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5oZXJp
dG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOworICAgIGJ0cHogdDIsIC5vcENy
ZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgKGluaGVyaXRvciA9PSAwKSBnb3RvIC5zbG93OworICAgIC8vIGFsbG9jYXRlQmFzaWNKU09i
amVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9i
amVjdENsYXNzSW5mbywgaW5oZXJpdG9yPHQyPiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Ns
b3cpOwogICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5k
ZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMs
IC5vcENyZWF0ZVRoaXNTbG93KQotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIHN0b3JlaSBDZWxs
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpc0lEPHQx
PiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbdGhpc0lEPHQx
Pl0uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmclt0aGlzSUQ8dDE+XS5QYXls
b2FkID0gdGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2Ny
ZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfY3JlYXRlX3RoaXMpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3df
cGF0aF9jcmVhdGVfdGhpczsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
KwogCisvLyBieXRlY29kZTogY29udmVydF90aGlzIHRoaXNSZWdJZCBvcmFjbGVDYWNoZUlkCisv
LyBmdW5jdGlvbjogY2ZyW3RoaXNSZWdJZF0gPSBDb252ZXJ0VG9UaGlzKGNmclt0aGlzUmVnSWRd
KTsKKy8vCisvLyAgIFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3RoaXMnIHJlZ2lzdGVyLCBjb252
ZXJ0cyBpdCB0byBhCisvLyAgIHZhbHVlIHRoYXQgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUg
J3RoaXMnIHZhbHVlLCBhbmQKKy8vICAgc3RvcmVzIGl0IGluIHRoZSAndGhpcycgcmVnaXN0ZXIu
IFRoaXMgb3Bjb2RlIGlzIGVtaXR0ZWQKKy8vICAgdG8gYXZvaWQgZG9pbmcgdGhlIGNvbnZlcnNp
b24gaW4gdGhlIGNhbGxlciB1bm5lY2Vzc2FyaWx5LgorLy8KKy8vICAgVGhpcyBvcGNvZGUgc2hv
dWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZQorLy8gICBibG9jay4K
IAogX2xsaW50X29wX2NvbnZlcnRfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9h
ZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAu
b3BDb252ZXJ0VGhpc1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJiYiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29u
dmVydFRoaXNTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKENlbGxU
YWcsIHQwLCB0MSkKLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpc0lEPHQw
PiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgICAgICAgICAvLyBpZiAoY2ZyW3RoaXNJ
RDx0MD5dLlRhZyAhPSBDZWxsVGFnKSBnb3RvIC5zbG93OworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhp
czx0MD4gPSBjZnJbdGhpc0lEPHQwPl0uUGF5bG9hZDsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVj
dHVyZTx0MD4gPSB0aGlzPHQwPi5zdHJ1Y3R1cmU7CisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Ns
b3cgICAgLy8gaWYgKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlwZSA8IE9iamVjdFR5cGUpIGdv
dG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJZDx0MT4gPSBvcGVyYW5kc1tvcmFj
bGVDYWNoZUlkXTsKKyAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywgdDAsIHQxKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlUHJvZmlsZShDZWxsVGFnLCBzdHJ1
Y3R1cmU8dDA+LCBvcmFjbGVJZDx0MT4pOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOwogCiAub3BDb252ZXJ0VGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfY29udmVydF90aGlzKQotICAgIGRpc3BhdGNoKDMpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKSAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjYWxsIHNsb3dfcGF0aF9jb252ZXJ0X3RoaXM7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5ld19vYmplY3QgZHN0UmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IE9iamVjdCgpOworLy8KKy8vICAgQ29uc3RydWN0
cyBhIG5ldyBlbXB0eSBPYmplY3QgaW5zdGFuY2UgdXNpbmcgdGhlIG9yaWdpbmFsCisvLyAgIGNv
bnN0cnVjdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50
X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAot
ICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MCAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsT2JqZWN0
PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEgICAgLy8gZW1wdHlTdHJ1Y3R1cmU8
dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5lbXB0eU9iamVjdFN0cnVjdHVyZTsKKyAgICAvLyBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERh
dGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIGVtcHR5U3RydWN0dXJlPHQxPiwgdDAsIHQyLCB0
MywgLm9wTmV3T2JqZWN0U2xvdyk7CiAgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxP
YmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
LCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKLSAgICBsb2FkaSA0W1BDXSwgdDEK
LSAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0
W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElk
PHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlRhZyA9IENl
bGxUYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0gYWxsb2NhdGVkT2JqZWN0PHQw
PjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmV3T2JqZWN0U2xvdzoKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KQotICAgIGRpc3BhdGNoKDIp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X29iamVjdCkgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXdfb2JqZWN0OworICAgIGRpc3BhdGNoKDIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBtb3YgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9u
OiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY1JlZ0lkXTsKKy8vCisvLyAgIENvcGllcyByZWdpc3Rl
ciBzcmMgdG8gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbW92OgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAg
ICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAg
IGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZHN0SWQ8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDEsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzcmNJZDx0MT4gPT0+IHZhbHVlPHQyLCB0Mz4pOworICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQw
Pl0uVGFnID0gc3JjVGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlBheWxvYWQgPSBzcmNQ
YXlsb2FkPHQzPjsKKyAgICAjIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAg
bWxhbSBvcF9tb3YgfCBwYXlsb2FkPHQzPiA9ICVsZFxuIiwgcjQudS5pKTsKKyAgICBkaXNwYXRj
aCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogbm90IGRzdFJlZ0lkIHNyY1JlZ0lkCisv
LyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3JjcmVnSWRdOworLy8KKy8vICAgQ29t
cHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0ZXIgc3JjIChjb252ZXJ0ZWQgdG8KKy8vICAgYm9v
bGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3Bf
bm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2Fk
aSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCi0gICAg
YmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKLSAgICB4b3JpIDEsIHQzCi0gICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFu
ZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAg
Ly8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MD4gPT4gdGFnPHQyPiwgcGF5bG9hZDx0
Mz4pOworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93ICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gIT0gQm9vbGVhblRhZykgZ290byAuc2xvdzsKKyAgICB4
b3JpIDEsIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBheWxvYWQ8dDM+ID0gIXBheWxvYWQ8dDM+OworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdHhzSWQ8dDE+XS5UYWcg
PSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDM+Owor
ICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BOb3RTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25vdCkKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25vdCkgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93
X3BhdGhfbm90OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBl
cSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lk
XSA9IChjZnJbc3JjMVJlZ0lkXSA9PSBjZnJbc3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mg
d2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBlcXVhbCwKKy8vICAg
YXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPT0nIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0
CisvLyAgIGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9lcToKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgMTJbUENdLCB0MgotICAgIGxvYWRpIDhbUENd
LCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKLSAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQotICAgIGJpbmVxIHQyLCB0MywgLm9wRXFT
bG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93Ci0gICAgYmliIHQyLCBMb3dlc3RU
YWcsIC5vcEVxU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MgotICAgIGNpZXEgdDAsIHQxLCB0MAot
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRp
IDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Jj
MklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFu
ZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAg
ICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9
PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHNyYzFJZDx0MD4gPT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CisgICAgYmluZXEgdDIs
IHQzLCAub3BFcVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFn
MTx0Mj4gIT0gdGFnMjx0Mz4pIGdvdG8gLnNsb3c7CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9w
RXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gPT0gQ2Vs
bFRhZykgZ290byAuc2xvdzsKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPCBMb3dlc3RU
YWcpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07Cisg
ICAgY2llcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZXN1bHQ8dDA+ID0gKHBheWxvYWQyPHQxPiA9PSBwYXlsb2FkMTx0MD4pOworICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgLy8g
Y2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBh
eWxvYWQgPSBwYXlsb2FkMTx0MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcEVx
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9lcSkKLSAgICBkaXNwYXRj
aCg0KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2VxKSAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAKIAorLy8gYnl0ZWNvZGU6IGVxX251bGwgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9u
OiBjZnJbZHN0cmVnSWRdID0gKGNmcltzcmNSZWdJZF0gPT0gbnVsbCk7CisvLworLy8gICBDaGVj
a3Mgd2hldGhlciByZWdpc3RlciBzcmMgaXMgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAn
IT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiBy
ZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9lcV9udWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMKLSAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0gICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
Ci0gICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCi0gICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0
ZQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENd
LCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDM+
ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0Tm90Q29uc3RhbnQoc3JjSWQ8dDA+
KTsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRhZzx0MT4gPSBjZnJbc3JjSWQ8dDA+XS5UYWc7CisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAgICAgICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQw
PiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVx
TnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQxPiAhPSBDZWxsVGFn
KSBnb3RvIC5pbW1lZGlhdGU7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0MD4uc3Ry
dWN0dXJlOworICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MSAvLyByZXN1bHQ8dDE+ID0gKChzdHJ1
Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWcgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSAhPSAwKTsK
KyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gLm5vdEltbWVkaWF0ZTsKIC5vcEVxTnVsbEltbWVkaWF0ZToKLSAgICBjaWVx
IHQxLCBOdWxsVGFnLCB0MgotICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKLSAgICBvcmkg
dDIsIHQxCisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpc051bGw8dDI+ID0gKHRhZzx0MT4gPT0gTnVsbHRhZyk7CisgICAgY2ll
cSB0MSwgVW5kZWZpbmVkVGFnLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
c1VuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiA9PSBVbmRlZmluZWRUYWcpOworICAgIG9yaSB0Miwg
dDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0
PHQxPiA9IGlzTnVsbDx0Mj4gfCBpc1VuZGVmaW5lZDx0MT47CiAub3BFcU51bGxOb3RJbW1lZGlh
dGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAg
c3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAv
LyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0u
UGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8g
Ynl0ZWNvZGU6IG5lcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjog
Y2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPSBjZnJbc3JjMlJlZ0lkXSk7CisvLwor
Ly8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBu
b3QKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJyE9JyBvcGVyYXRvciwgYW5k
IHB1dHMgdGhlCisvLyAgIHJlc3VsdCBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgorCiBf
bGxpbnRfb3BfbmVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSAxMltQQ10sIHQy
Ci0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCi0gICAgYmlu
ZXEgdDIsIHQzLCAub3BOZXFTbG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdwot
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQyCi0g
ICAgY2luZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBk
aXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAg
bG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9h
ZDE8dDA+KTsKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSB0YWcyPHQzPikgZ290byAuc2xvdzsKKyAg
ICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlmICh0YWcxPHQyPiA9PSBDZWxsdGFnKSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93
ZXN0VGFnLCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNp
Z25lZCl0YWcxPHQyPiA8IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSA0W1BDXSwg
dDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBjaW5lcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MD4gPSAocGF5bG9hZDE8dDA+ICE9
IHBheWxvYWQyPHQxPik7CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOwor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHJlc3VsdDx0MD47CisgICAgZGlzcGF0Y2go
NCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAKIC5vcE5lcVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmVxKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmVxKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXE7Cisg
ICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICAgCiAKKy8vIGJ5dGVjb2RlOiBuZXFfbnVsbCBk
c3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyY1Jl
Z0lkXSAhPSBudWxsKTsKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYyBpcyBu
b3QgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQg
cHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9v
cF9uZXFfbnVsbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0g
ICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCi0gICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCi0gICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKLSAgICB0YnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCB0MQotICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisgICAgbG9hZGkgOFtQQ10sIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4gPSBv
cGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mz4gPSBvcGVyYW5kc1tkc3RSZWdJZF07
CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhc3NlcnROb3RDb25zdGFudChzcmNJZDx0MD4pOworICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQxPiA9IGNm
cltzcmNJZDx0MD5dLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MCAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDA+ID0gY2ZyW3NyY0lkPHQwPl0uUGF5
bG9hZDsKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZSAgICAgICAg
ICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IENlbGxUYWcpIGdvdG8gLmltbWVkaWF0ZTsKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAg
IC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQwPi5zdHJ1Y3R1cmU7CisgICAgdGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdDEgLy8gcmVzdWx0PHQxPiA9ICgoc3RydWN0dXJlPHQxPi50eXBlSW5mby5mbGFn
cyAmIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpID09IDApOworICAgIGptcCAub3BOZXFOdWxsTm90
SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byAubm90SW1tZWRp
YXRlOwogLm9wTmVxTnVsbEltbWVkaWF0ZToKLSAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKLSAg
ICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQotICAgIGFuZGkgdDIsIHQxCisgICAgY2luZXEg
dDEsIE51bGxUYWcsIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc05v
dE51bGw8dDI+ID0gKHRhZzx0MT4gIT0gTnVsbFRhZyk7CisgICAgY2luZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc05vdFVuZGVmaW5lZDx0
MT4gPSAodGFnPHQxPiAhPSBVbmRlZmluZWRUYWcpOworICAgIGFuZGkgdDIsIHQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IChpc05v
dE51bGw8dDI+ICYgaXNOb3RVbmRlZmluZWQ8dDE+KTsKIC5vcE5lcU51bGxOb3RJbW1lZGlhdGU6
Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAvLyBj
ZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5
bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAogbWFjcm8g
c3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxvYWRpIDEyW1BDXSwg
dDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBi
aW5lcSB0MiwgdDMsIC5zbG93Ci0gICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgYmlu
ZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKLSAgICBiYm5l
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlw
ZSwgLm5vdFN0cmluZwotICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93CisgICAgbG9hZGkgMTJbUENdLCB0MiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFu
ZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkgICAgICAgICAgICAgICAgICAg
ICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcyPHQzPiwgcGF5
bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAg
ICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4g
PT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIGJpbmVxIHQyLCB0MywgLnNsb3cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IHRhZzI8
dDM+KSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+IDwgTG93ZXN0VGFnKSBnb3RvIC5z
bG93OworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IENlbGxUYWcpIGdvdG8gLm5vdFN0cmluZzsKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIgICAgICAgICAgICAgICAgICAgICAg
IC8vIHN0cnVjdHVyZTE8dDI+ID0gcGF5bG9hZDE8dDA+LnN0cnVjdHVyZTsKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVj
dHVyZTI8dDM+ID0gcGF5bG9hZDI8dDE+LnN0cnVjdHVyZTsKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmlu
ZyAgLy8gaWYgKHN0cnVjdHVyZTE8dDI+LnR5cGVJbmZvLnR5cGUgIT0gU3RyaW5nVHlwZSkgZ290
byAubm90U3RyaW5nOworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93ICAgICAgICAvLyBpZiAoc3RydWN0dXJlMjx0
Mz4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKSBnb3RvIC5zbG93OwogLm5vdFN0cmluZzoK
LSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQot
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRp
IDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0
MSwgdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IHBheWxvYWQx
PHQwPiBDT01QQVJBVE9SIHBheWxvYWQyPHQxPjsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9
IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsK
KyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKHNs
b3dQYXRoKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQYXRoPGExPjsKKyAgICBk
aXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKIGVuZAogCisvLyBieXRlY29kZTogc3RyaWN0ZXEgZHN0UmVn
SWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2Zy
W3NyYzFSZWdkXSA9PT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIg
cmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgc3RyaWN0bHkKKy8vICAgZXF1YWws
IGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz09PScgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZQorLy8g
ICByZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX3N0cmlj
dGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAvLyBzdHJpY3RFcShtYWNybyAobGVmdCwg
cmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xs
aW50X3Nsb3dfcGF0aF9zdHJpY3RlcT4pOworICAgIC8vIENPTVBBUkFUT1IgPSAiPT0iCiAgICAg
c3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJl
c3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IG5z
dHJpY3RlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2Rz
dFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8vICAg
Q2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgbm90Cisv
LyAgIHN0cmljdGx5IGVxdWFsLCBhcyB3aXRoIHRoZSBFQ01BU2NyaXB0ICchPT0nIG9wZXJhdG9y
LCBhbmQKKy8vICAgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3Qu
CisKIF9sbGludF9vcF9uc3RyaWN0ZXE6CiAgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIC8vIHN0
cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVz
dWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXE+KTsKKyAgICAvLyBD
T01QQVJBVE9SID0gIiE9IgogICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0
ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IHByZV9pbmMgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBj
ZnJbc3JjRHN0cmVnSWRdID0gKytjZnJbc3JjRHN0cmVnSWRdOworLy8KKy8vICAgQ29udmVydHMg
cmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlciwgYWRkcyBvbmUsIGFuZCBwdXRzIHRoZSByZXN1bHQK
Ky8vICAgYmFjayBpbiByZWdpc3RlciBzcmNEc3QuCisKIF9sbGludF9vcF9wcmVfaW5jOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93Ci0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cK
LSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgy
KQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHJlZ0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93ICAgICAgICAv
LyBpZiAoY2ZyW3JlZ0lkPHQwPl0uVGFnICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHJlc3VsdDx0MT4gPSBjZnJbcmVnSWQ8dDA+XS5QYXlsb2FkOworICAgIGJhZGRpbyAxLCB0
MSwgLm9wUHJlSW5jU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgr
K3Jlc3VsdDx0MT4gb3Zlcmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3JlZ0lkPHQw
Pl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
CiAub3BQcmVJbmNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9p
bmMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
cmVfaW5jKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9wcmVfaW5jOwor
ICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogcHJlX2RlYyBz
cmNEc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltzcmNEc3RSZWdJZF0gPSAtLWNmcltzcmNEc3RS
ZWdJZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmNEc3QgdG8gbnVtYmVyLCBzdWJ0
cmFjdHMgb25lLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGJhY2sgaW4gcmVnaXN0ZXIgc3Jj
RHN0LgorCiBfbGxpbnRfb3BfcHJlX2RlYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9h
ZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywg
Lm9wUHJlRGVjU2xvdwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0g
ICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93Ci0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdJZDx0MD4gPSBv
cGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJ
bnQzMlRhZywgLm9wUHJlRGVjU2xvdyAgICAgICAgLy8gaWYgKGNmcltyZWdJZDx0MD5dLlRhZyAh
PSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDE+ID0gY2ZyW3JlZ0lk
PHQwPl0uUGF5bG9hZDsKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1yZXN1bHQ8dDE+IG92ZXJsb3dzKSBnb3Rv
IC5zbG93OworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltyZWdJZDx0MD5dLlBheWxvYWQgPSByZXN1bHQ8dDE+Owor
ICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUHJlRGVjU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQotICAgIGRpc3BhdGNoKDIpCisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2FsbCBzbG93X3BhdGhfcHJlX2RlYzsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAKIAorLy8gYnl0ZWNvZGU6IHBvc3RfaW5jIGRzdFJlZ0lkIHNyY0RzdFJlZ0lkCisvLyBm
dW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmNEc3RSZWdJZF0rKzsKKy8vCisvLyAgIENv
bnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBudW1iZXIgaXRzZWxmIGlzCisv
LyAgIHdyaXR0ZW4gdG8gcmVnaXN0ZXIgZHN0LCBhbmQgdGhlIG51bWJlciBwbHVzIG9uZSBpcyB3
cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0LgorCiBfbGxpbnRfb3BfcG9zdF9p
bmM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRp
IDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5v
cFBvc3RJbmNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCi0gICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBtb3ZlIHQyLCB0MwotICAgIGJhZGRp
byAxLCB0MywgLm9wUG9zdEluY1Nsb3cKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDhbUENdLCB0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQw
PiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5k
c1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywg
Lm9wUG9zdEluY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQzMlRh
ZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikgZ290
byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0MD5dLlBheWxv
YWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBiYWRk
aW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAoKytuZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVp
IEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0u
UGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltzcmNJZDx0MD5dLlBheWxv
YWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3RJbmNEb25lOgotICAgIGRpc3BhdGNoKDMpCisg
ICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0SW5jU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2luYykKLSAgICBkaXNwYXRjaCgzKQorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfaW5jKSAgICAgICAgICAgICAgICAg
ICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfaW5jOworICAgIGRpc3BhdGNoKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKKwogCisvLyBieXRlY29kZTogcG9zdF9kZWMgZHN0UmVnSWQgc3JjRHN0UmVnSWQKKy8v
IGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY0RzdFJlZ0lkXS0tOworLy8KKy8vICAg
Q29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlci4gVGhlIG51bWJlciBpdHNlbGYgaXMK
Ky8vICAgd3JpdHRlbiB0byByZWdpc3RlciBkc3QsIGFuZCB0aGUgbnVtYmVyIG1pbnVzIG9uZSBp
cyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcG9z
dF9kZWM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxv
YWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcs
IC5vcFBvc3REZWNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCi0gICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBtb3ZlIHQyLCB0MwotICAgIGJz
dWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQot
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDhbUENd
LCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lk
PHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVy
YW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUG9zdERlY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQz
MlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikg
Z290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0MD5dLlBh
eWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBi
c3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAoLS1uZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3Rv
cmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQx
Pl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltzcmNJZDx0MD5dLlBh
eWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3REZWNEb25lOgotICAgIGRpc3BhdGNoKDMp
CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0RGVjU2xvdzoKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2RlYykKLSAgICBkaXNwYXRjaCgzKQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVjKSAgICAgICAgICAgICAg
ICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfZGVjOworICAgIGRpc3BhdGNoKDMpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKKwogCisvLyBieXRlY29kZTogdG9fanNudW1iZXIgZHN0UmVnSWQgc3JjUmVnSWQK
Ky8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gTnVtYmVyKGNmcltkc3RSZWdJZF0pOworLy8K
Ky8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjIHRvIG51bWJlciwgYW5kIHB1dHMgdGhlIHJlc3Vs
dAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF90b19qc251bWJlcjoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQx
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQotICAgIGJpZXEgdDIsIElu
dDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKLSAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywg
Lm9wVG9Kc251bWJlclNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJ
ZF07CisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQz
Pik7CisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludCAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gPT0gSW50MzJUYWcpIGdvdG8gLmlzSW50OworICAg
IGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdyAgICAgICAgICAgICAg
ICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQyPiA+PSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5zbG93
OwogLm9wVG9Kc251bWJlcklzSW50OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCi0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0
Y2goMykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBwYXlsb2FkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAKIC5vcFRvSnNudW1iZXJTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3RvX2pzbnVtYmVyKQotICAgIGRpc3BhdGNoKDMpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIpICAgICAgICAgICAgICAgICAgLy8gY2Fs
bCBzbG93X3BhdGhfdG9fanNudW1iZXI7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CiAKKy8vIGJ5dGVjb2RlOiBuZWdhdGUgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBj
ZnJbZHN0UmVnSWRdID0gLWNmcltzcmNSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3Rl
ciBzcmMgdG8gbnVtYmVyLCBuZWdhdGVzIGl0LCBhbmQgcHV0cyB0aGUKKy8vICAgcmVzdWx0IGlu
IHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX25lZ2F0ZToKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVn
YXRlU3JjTm90SW50Ci0gICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwotICAg
IG5lZ2kgdDIKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisg
ICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENd
LCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElk
PHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQw
LCB0MSwgdDIpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNyY0lkPHQwPiA9PT4gdGFnPHQxPiwgcGF5bG9hZDx0Mj4pOworICAgIGJpbmVxIHQxLCBJ
bnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0
YWc8dDE+ICE9IEludDMyVGFnKSBnb3RvIC5zcmNOb3RJbnQ7CisgICAgYnRpeiB0MiwgMHg3ZmZm
ZmZmZiwgLm9wTmVnYXRlU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKChwYXls
b2FkPHQyPiAmIDB4N2ZmZmZmZmYpID09IDApIGdvdG8gLnNsb3c7IC8vIGlmIChpcyAwIG9yIElO
VF9NSU4pIC4uLgorICAgIG5lZ2kgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDI+ID0gLXBheWxvYWQ8dDI+OworICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAg
IC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEludDMyVGFnOworICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0
Mz5dLlBheWxvYWQgPSBwYXlsb2FkPHQyPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAub3BOZWdhdGVTcmNOb3RJbnQ6Ci0gICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNs
b3cKLSAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBk
aXNwYXRjaCgzKQorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQxPiA+IExvd2VzdFRhZykg
Z290byAuc2xvdzsKKyAgICAvLyBXZSBoYXZlIGFuIHVuYm94ZWQgZG91YmxlLCBqdXN0IGludmVy
dCBpdHMgc2lnbiBiaXQ6CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGlnaFdvcmQ8dGFnPHQxPj4uc2lnbkJpdCA9ICFo
aWdoV29yZDx0YWc8dDE+Pi5zaWduQml0OworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9
IHRhZzx0MT47CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDI+
OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmVnYXRlU2xvdzoKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCi0gICAgZGlzcGF0Y2goMykKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZWdhdGU7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAKIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0
b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAg
ICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0
MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKLSAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJ
bnQKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMs
IHQxLCB0MCwgLnNsb3csIHQyKQotICAgIGRpc3BhdGNoKDUpCisgICAgLy8gbWFjcm8gYmluYXJ5
T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwg
c2xvd1BhdGgpIHsKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsK
KyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0
MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApICAgICAgICAg
ICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT0+
IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJ
TiBPUCBzdGVwIDFcbiIpOworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSBJbnQzMlRhZykgZ290
byAub3AxTm90SW50OworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJbnQzMlRhZykgZ290byAu
b3AyTm90SW50OworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDIgfCB0
MSAlbGQsIHQwICVsZFxuIiwgcjEudS5pLCByMC51LmkpOworICAgIC8vIG9wMSBhbmQgb3AyIGFy
ZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBlbmQuCisgICAgbG9hZGkgNFtQ
Q10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9y
ZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpICAgICAgICAgICAgIC8vIGludGVnZXJPcGVyYXRpb25B
bmRTdG9yZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0MD4sIC5zbG93LCB0Mik7
CisgICAgIyBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiBtbGFtIEJJTiBPUCBp
bnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4iLCByMC51LmkpOworICAgIG1sYW1EbyAvLyBwcmludGYo
IiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4iLCByMC51LmkpOworICAgIGRp
c3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wMU5vdEludDoKLSAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUg
YW55dGhpbmcuCi0gICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgYmliIHQzLCBMb3dl
c3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKLSAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93
Ci0gICAgY2kyZCB0MSwgZnQxCi0gICAgam1wIC5vcDFOb3RJbnRSZWFkeQorICAgIG1sYW1EbyAv
LyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDNcbiIpOworICAgIC8vIEZpcnN0IG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55
dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA+IExvd2VzdFRhZykgZ290
byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgPz8/OiBj
aGVjayBvcDIuCisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA8IExvd2VzdFRhZykg
Z290byAub3AxTm90SW50T3AyRG91YmxlOworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghdGFnMjx0Mz4gIT0gSW50
MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3Ay
IGlzIGludDMyOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAgY2kyZCB0MSwgZnQxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4g
PSBEb3VibGUocGF5bG9hZDI8dDE+KTsKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIC5vcDFOb3RJbnRSZWFkeTsK
IC5vcDFOb3RJbnRPcDJEb3VibGU6Ci0gICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBtbGFtRG8g
Ly8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA0XG4iKTsKKyAgICAvLyBvcDEgaXMgaW50LWVu
Y29kZWQtZG91YmxlLCBvcDIgaXMgaW50LWVuY29kZWQtZG91YmxlOiBjb252ZXJ0IG9wMiB0byBk
b3VibGUuCisgICAgZmlpMmQgdDEsIHQzLCBmdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+LCB0YWcy
PHQzPik7CiAub3AxTm90SW50UmVhZHk6Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgZmlpMmQg
dDAsIHQyLCBmdDAKLSAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCi0gICAgc3RvcmVkIGZ0
MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goNSkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIg
bWxhbSBCSU4gT1Agc3RlcCA1XG4iKTsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91Ymxl
LCBvcDIgaXMgZG91YmxlOgorICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lk
XTsKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERvdWJsZShwYXlsb2FkMTx0MD4sIHRhZzE8dDI+
KTsKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQx
Piwgb3AxRGJsPGZ0MD4pOworICAgICMgbWxhbSBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBw
cmludGYoIiBtbGFtIEJJTiBPUCBkb3VibGUgfCByZXN1bHQ8ZnQwPiA9ICVlXG4iLCBkMC51LmQp
OworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBkb3VibGUgfCByZXN1bHQ8ZnQw
PiA9ICVlXG4iLCBkMC51LmQpOworICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLkRvdWJsZSA9IHJl
c3VsdERibDxmdDA+OworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wMk5vdElu
dDoKLSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQg
b3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBiaWEg
dDMsIExvd2VzdFRhZywgLnNsb3cKLSAgICBjaTJkIHQwLCBmdDAKLSAgICBmaWkyZCB0MSwgdDMs
IGZ0MQotICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBzdG9yZWQgZnQwLCBbY2Zy
LCB0MiwgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJ
TiBPUCBzdGVwIDZcbiIpOworICAgIC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBp
bnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BD
XSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJ
ZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcy
PHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50MzIsIG9wMiBp
cyBpbnQtZW5jb2RlZC1kb3VibGU6CisgICAgY2kyZCB0MCwgZnQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJsPGZ0MD4gPSBEb3VibGUocGF5
bG9hZDE8dDA+KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDJEYmw8ZnQx
PiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKKyAgICBkb3VibGVPcGVyYXRpb24o
ZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8
ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOworICAgICMg
bWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgbWxhbSBCSU4gT1AgZG91YmxlIHwg
cmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAudS5kKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxh
bSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAudS5kKTsKKyAgICBzdG9y
ZWQgZnQwLCBbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbZHN0SWQ8dDE+XS5Eb3VibGUgPSByZXN1bHREYmw8ZnQwPjsKKyAgICBkaXNwYXRjaCg1
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkKLSAg
ICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDdc
biIpOworICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgc2xvdyBwYXRoOworICAgIGRpc3BhdGNoKDUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKKyAgICAvLyB9IEVORCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlLiAKIGVuZAogCiBt
YWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRo
KQorICAgIC8vIG1hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlv
biwgc2xvd1BhdGgpIHsKICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKLSAgICAgICAgICAgIGludGVnZXJP
cGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCi0gICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcs
IGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykgICAgICAgICAgICAgICAgIC8vICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdyk7CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAgICAgLy8gICBjZnJbaW5kZXhdLlRhZyA9IGludDMy
VGFnOworICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdICAgICAgICAgIC8vICAgY2ZyW2luZGV4XS5QYXlsb2FkID0gcmlnaHQ7CisgICAgICAgICAg
ICAjIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHByaW50ZigiICAgICAgICBtbGFtIEFTTSBB
REQgfCBjZnIgJXBbaW5kZXggJWxkXSA9IHJlc3VsdCAlbGQgfCBjZnJbMV08JXA+ID0gJXBcbiIs
IGNhbGxGcmFtZSwgcjIudS5pLCByMC51LmksIENBU1Q8dm9pZCAqPihmcC51Lmk4cCArICgxIDw8
IDMpICsgMCksICpDQVNUPHZvaWQgKio+KGZwLnUuaThwICsgKDEgPDwgMykgKyAwKSk7IG1sYW1Q
cmludCA9IGZhbHNlOyB9CisgICAgICAgICAgICBtbGFtRG8gLy8geyBwcmludGYoIiAgICAgICAg
bWxhbSBBU00gQUREIHwgY2ZyICVwW2luZGV4ICVsZF0gPSByZXN1bHQgJWxkIHwgY2ZyWzFdPCVw
PiA9ICVwXG4iLCBjYWxsRnJhbWUsIHIyLnUuaSwgcjAudS5pLCBDQVNUPHZvaWQgKj4oZnAudS5p
OHAgKyAoMSA8PCAzKSArIDApLCAqQ0FTVDx2b2lkICoqPihmcC51Lmk4cCArICgxIDw8IDMpICsg
MCkpOyBtbGFtUHJpbnQgPSBmYWxzZTsgfQorICAgICAgICAgICAgLy8gfSBFTkQgbWFjcm8uCiAg
ICAgICAgIGVuZCwKLSAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkKKyAgICAgICAg
ZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkgLy8gICBiaW5hcnlPcEN1c3RvbVN0b3JlKCk7Cisg
ICAgLy8gfSBFTkQgbWFjcm8gYmluYXJ5T3AuCiBlbmQKIAorLy8gYnl0ZWNvZGU6IGFkZCBkc3RS
ZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNm
cltzcmMyUmVnSWRdICsgY2ZyW3NyYzFSZWdJZF07CisvLworLy8gICBBZGRzIHJlZ2lzdGVyIHNy
YzEgYW5kIHJlZ2lzdGVyIHNyYzIsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0
ZXIgZHN0LiAoSlMgYWRkIG1heSBiZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBvcgorLy8gICBudW1l
cmljIGFkZCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlcyBvZiB0aGUgb3BlcmFuZHMuKQorCiBfbGxp
bnRfb3BfYWRkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBtbGFtRG8gLy8gbWxhbVByaW50
ID0gdHJ1ZTsKICAgICBiaW5hcnlPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2FkZCkK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgbWxhbURvIC8v
IHByaW50ZigiICAgKioqIG1sYW0gQEBAIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBAICVzOiVk
XG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIGJhZGRpbyBsZWZ0LCBy
aWdodCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmICgocmlnaHQgKz0g
bGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICAgKioqIG1sYW0g
QEBAIGFkZGQgbGVmdCwgcmlnaHQgQCAlczolZFxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7
CisgICAgICAgICAgICBhZGRkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICByaWdodCA9IGxlZnQgKyByaWdodDsKKyAgICAgICAgZW5kLAorICAgICAg
ICBfbGxpbnRfc2xvd19wYXRoX2FkZCkgLy8gYmluYXJ5T3AoImJhZGRpbyBsZWZ0LCByaWdodCwg
c2xvdyIsICJhZGRkIGxlZnQsIHJpZ2h0IiwgX2xsaW50X3Nsb3dfcGF0aF9hZGQpIHsKKyAgICAv
LyB9IC8vIEVORCBiaW5hcnlPcCgpCiAKIAorLy8gYnl0ZWNvZGU6IG11bCBkc3RSZWdJZCBzcmMx
UmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVn
SWRdICogY2ZyW3NyYzJSZWdJZF0KKy8vCisvLyAgIE11bHRpcGxpZXMgcmVnaXN0ZXIgc3JjMSBh
bmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvCisvLyAgIG51bWJlcnMpLCBhbmQgcHV0cyB0
aGUgcHJvZHVjdCBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9tdWw6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQz
MlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgY29uc3Qgc2NyYXRj
aCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBpbnQzMlRhZyBy
ZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KLSAgICAgICAgICAgIG1vdmUgcmlnaHQs
IHNjcmF0Y2gKLSAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNoLCBzbG93Ci0gICAgICAg
ICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQotICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93
Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgICAgICAvLyBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAgICAgY29uc3Qg
c2NyYXRjaCA9IGludDMyVGFnICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0
IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3Rh
bnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzY3JhdGNoID0gcmlnaHQ7CisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2Ny
YXRjaCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHNjcmF0Y2ggKj0gbGVmdCkg
b3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc2NyYXRjaCAhPSAwKSBnb3RvIC5kb25l
OworICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKGxlZnQgPCAwKSBnb3RvIC5zbG93OworICAgICAgICAgICAgYmlsdCByaWdo
dCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkg
Z290byAuc2xvdzsKICAgICAgICAgLmRvbmU6Ci0gICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywg
VGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgIC8vIGNmcltpbmRleF0uVGFnID0gSW50MzJU
YWc7CisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4
LCA4XSAgICAvLyBjZnJbaW5kZXhdLlBheWxvYWQgPSBzY3JhdGNoOworICAgICAgICAgICAgLy8g
fSBFTkQgbWFjcm8uCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQor
ICAgICAgICAgICAgbXVsZCBsZWZ0LCByaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmlnaHQgPSBsZWZ0ICogcmlnaHQ7CiAgICAgICAgIGVuZCwKLSAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3df
cGF0aF9tdWwpCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfbXVsKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBiaW5hcnlPcEN1c3RvbVN0b3JlKC4uLiwgX2xsaW50X3Nsb3dfcGF0
aF9tdWwpOwogCiAKKy8vIGJ5dGVjb2RlOiBzdWIgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJ
ZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSAtIGNmcltzcmMy
UmVnSWRdOworLy8KKy8vICAgU3VidHJhY3RzIHJlZ2lzdGVyIHNyYzIgKGNvbnZlcnRlZCB0byBu
dW1iZXIpIGZyb20gcmVnaXN0ZXIKKy8vICAgc3JjMSAoY29udmVydGVkIHRvIG51bWJlciksIGFu
ZCBwdXRzIHRoZSBkaWZmZXJlbmNlIGluCisvLyAgIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29w
X3N1YjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYmluYXJ5T3AoCi0gICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKLSAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAg
ICAgICAgICAgIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgaWYgKChyaWdodCAtPSBsZWZ0KSBvdmVyZmxvd3MpIGdvdG8gc2xvdzsKKyAgICAgICAg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAgICAgICAgICBzdWJkIGxlZnQs
IHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHJpZ2h0ID0gcmlnaHQg
LSBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfc3ViKSAvLyBi
aW5hcnlPcCguLi4sIF9sbGludF9zbG93X3BhdGhfc3ViKSB7CisgICAgLy8gfSAvLyBFTkQgYmlu
YXJ5T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBkaXYgZHN0UmVnSWQgZGl2aWRlbmRSZWdJZCBkaXZp
c29yUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW2RpdmlkZW5kUmVnSWRd
IC8gY2ZyW2Rpdmlzb3JSZWdJZF07CisvLworLy8gICBEaXZpZGVzIHJlZ2lzdGVyIGRpdmlkZW5k
IChjb252ZXJ0ZWQgdG8gbnVtYmVyKSBieSB0aGUKKy8vICAgcmVnaXN0ZXIgZGl2aXNvciAoY29u
dmVydGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZQorLy8gICBxdW90aWVudCBpbiByZWdpc3Rl
ciBkc3QuCiAKIF9sbGludF9vcF9kaXY6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQotICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKLSAgICAgICAgICAgIGNpMmQg
cmlnaHQsIGZ0MQotICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQotICAgICAgICAgICAgYmNkMmkg
ZnQxLCByaWdodCwgLm5vdEludAotICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgICAgICAvLyBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAgICAg
Y2kyZCBsZWZ0LCBmdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVmdERi
bDxmdDA+ID0gRG91YmxlKGxlZnQpOworICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHREYmw8ZnQxPiA9IERvdWJsZShyaWdo
dCk7CisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByZXN1bHREYmw8ZnQxPiA9IHJpZ2h0RGJsPGZ0MD4gLyBsZWZ0RGJsPGZ0MT47
CisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50ICAgICAgICAgICAgICAgICAg
ICAgICAvLyByZXN1bHQ8cmlnaHQ+ID0gSW50KHJlc3VsdERibDxmdDE+KSBpZiAoKGRvdWJsZSko
aW50KXJlc3VsdERibCA9IHJlc3VsdERibCkgZWxzZSBnb3RvIC5ub3RJbnQ7CisgICAgICAgICAg
ICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAvLyBjZnJb
aW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgLy8gY2ZyW2luZGV4XS5QYXlsb2FkID0gcmlnaHQ7
CisgICAgICAgICAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIC5kb25lOwogICAgICAgICAubm90SW50OgotICAgICAgICAgICAgc3RvcmVk
IGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRl
eCwgOF0gICAgICAgICAgICAgICAgICAgICAvLyBjZnJbaW5kZXhdLkRvdWJsZSA9IHJlc3VsdERi
bDxmdDE+OwogICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIC8vIEVORCBtYWNyby4KICAgICAg
ICAgZW5kLAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5k
LAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KQorICAgICAgICAgICAgZGl2ZCBsZWZ0LCByaWdodCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcmlnaHQgPSByaWdodCAvIGxlZnQ7CisgICAgICAgIGVuZCwKKyAgICAgICAg
X2xsaW50X3Nsb3dfcGF0aF9kaXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJp
bmFyeU9wQ3VzdG9tU3RvcmUoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2Rpdik7CiAKIAogbWFjcm8g
Yml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKLSAgICBsb2FkaSAxMltQQ10sIHQy
Ci0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCi0gICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdwotICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKLSAg
ICBsb2FkaSA0W1BDXSwgdDIKLSAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKLSAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgLy8gbWFjcm8gYml0T3Ao
b3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkgeworICAgIGxvYWRpIDEyW1BDXSwgdDIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJ
ZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
cmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklk
PHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhz
cmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQorICAgIGJpbmVxIHQzLCBJbnQz
MlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzI8dDM+ICE9IEludDMyVGFn
KSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGxvYWRp
IDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3Bl
cmFuZHNbZHN0UmVnSWRdOworICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KSAgICAgICAgICAg
ICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlvbihwYXlsb2FkMjx0MT4sIHBheWxvYWQx
PHQwPiwgLnNsb3cpOworICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAg
ICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gdGFnMjx0Mz47CisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2Fk
ID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaChhZHZhbmNlKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgY2FsbFNsb3dQYXRoKHNsb3dQ
YXRoKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQYXRoOworICAgIGRpc3BhdGNo
KGFkdmFuY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OworICAgIC8vIEVORCBtYWNybyBtYWNybyBiaXRPcC4KIGVuZAogCisKKy8vIGJ5dGVjb2RlOiBs
c2hpZnQgZHN0UmVnSWQgdmFsUmVnSWQgc2hpZnRSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RS
ZWdJZF0gPSBJbnQzMihjZnJbdmFsUmVnSWRdKSA8PCBjZnJbc2hpZnRSZWdJZF0pOworLy8KKy8v
ICAgUGVyZm9ybXMgbGVmdCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRlZCB0byBpbnQz
MikgYnkKKy8vICAgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0byB1aW50MzIpLCBhbmQgcHV0
cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2xzaGlmdDoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGxzaGlmdGkgbGVmdCwgcmlnaHQgICAgICAgICAv
LyByaWdodCA9IChyaWdodCA8PCBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX2xzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAgNCkgLy8gYml0T3AoLi4uLCBf
bGxpbnRfc2xvd19wYXRoX2xzaGlmdCwgNCkgeworICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKIAog
CisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbFJlZ0lkXSA+PiBjZnJbc2hpZnRSZWdJZF07
CisvLworLy8gICBQZXJmb3JtcyBhcml0aG1ldGljIHJpZ2h0IHNoaWZ0IG9mIHJlZ2lzdGVyIHZh
bCAoY29udmVydGVkCisvLyAgIHRvIGludDMyKSBieSByZWdpc3RlciBzaGlmdCAoY29udmVydGVk
IHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0Lgor
CiBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKLSAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgcnNoaWZ0aSBs
ZWZ0LCByaWdodCAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0ID4+IGxlZnQpOworICAgICAgICBl
bmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0LAotICAgICAgICA0KQorICAgICAg
ICA0KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0LCA0KSB7CisgICAgLy8g
fSAvLyBFTkQgYml0T3AoKQogCisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZhbFJlZ0lk
IHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOgorLy8KKy8vICAgUGVyZm9ybXMgbG9naWNhbCByaWdo
dCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRlZAorLy8gICB0byB1aW50MzIpIGJ5IHJl
Z2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8KKy8vICAgdWludDMyKSwgYW5kIHB1dHMgdGhlIHJl
c3VsdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF91cnNoaWZ0OgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQot
ICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKLSAgICAgICAgICAgIGJpbHQgcmlnaHQs
IDAsIHNsb3cKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0ICAgICAgICAvLyByaWdo
dCA9ICgodW5zaWduZWQpcmlnaHQgPj4gbGVmdCk7CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCBzbG93ICAgICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkgZ290byBzbG93OwogICAgICAgICBlbmQs
CiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAg
NCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3Vyc2hpZnQsIDQpIHsKKyAgICAvLyB9
IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6IGJpdGFuZCBkc3RSZWdJZCBzcmMxUmVn
SWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVnSWRd
ICYgY2ZyW3NyYzJSZWdJZF07CisvLworLy8gICBDb21wdXRlcyBiaXR3aXNlIEFORCBvZiByZWdp
c3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisvLyAgIGFuZCByZWdpc3RlciBzcmMyIChj
b252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVy
IGRzdC4KIAogX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0
T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGFuZGkg
bGVmdCwgcmlnaHQgICAgICAgICAgICAvLyByaWdodCA9IChyaWdodCAmIGxlZnQpOworICAgICAg
ICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5kLAotICAgICAgICA1KQorICAg
ICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfYml0YW5kLCA1KSB7CisgICAg
Ly8gfSAvLyBFTkQgYml0T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBiaXR4b3IgZHN0UmVnSWQgc3Jj
MVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJl
Z0lkXSBeIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgYml0d2lzZSBYT1Igb2Yg
cmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8gICBhbmQgcmVnaXN0ZXIgc3Jj
MiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdp
c3RlciBkc3QuCiAKIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB4
b3JpIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgXiBsZWZ0KTsKKyAg
ICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKLSAgICAgICAgNSkK
KyAgICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwgNSkgewor
ICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKIAogCisvLyBieXRlY29kZTogYml0b3IgZHN0UmVnSWQg
c3JjMVJlZ0lkIHNyYzJSZWdJRAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3Jj
MVJlZ0lkXSB8IGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgYml0d2lzZSBPUiBv
ZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisvLyAgIGFuZCByZWdpc3RlciBz
cmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUKKy8vICAgcmVzdWx0IGluIHJl
Z2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2JpdG9yOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBv
cmkgbGVmdCwgcmlnaHQgICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgfCBsZWZ0KTsKKyAg
ICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdG9yLAotICAgICAgICA1KQor
ICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfYml0b3IsIDUpIHsKKyAg
ICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6IGNoZWNrX2hhc19pbnN0YW5j
ZSBjb25zdHJ1Y3RvclJlZ0lkCisvLyBmdW5jdGlvbjogYXNzZXJ0KHR5cGVvZiBjZnJbY29uc3Ry
dWN0b3JSZWdJZF0uSGFzSW5zdGFuY2UgPT0gImZ1bmN0aW9uIik7CisvLworLy8gICBDaGVjayAn
Y29uc3RydWN0b3InIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBpbnRlcm5hbCBwcm9wZXJ0eQorLy8g
ICBbSGFzSW5zdGFuY2VdIChpLmUuIGlzIGEgZnVuY3Rpb24gLi4uICpzaGFrZXMgaGVhZCBzYWRs
eSBhdAorLy8gICBKU0MgQVBJKikuIFJhaXNlcyBhbiBleGNlcHRpb24gaWYgcmVnaXN0ZXIgY29u
c3RydWN0b3IgaXMgbm90CisvLyAgIGEgdmFsaWQgcGFyYW1ldGVyIGZvciBpbnN0YW5jZW9mLgog
CiBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwg
Q2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5z
dGFuY2VTbG93Ci0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdHJ1
Y3RvcklkPHQxPiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9yUmVnSWRdOworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNs
b3cpIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNvbnN0cnVjdG9ySWQ8dDE+LCBD
ZWxsVGFnLCBvYmo8dDA+LCAub3BDaGVja0hhc0luc3RhbmNlU2xvdyk7CisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0dXJlOworICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93ICAvLyBpZiAhKHN0cnVjdHVyZTx0MD4u
dHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UpIGdvdG8gLnNsb3c7CisgICAg
ZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5z
dGFuY2UpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9jaGVja19oYXNfaW5zdGFuY2UpICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3df
cGF0aF9jaGVja19oYXNfaW5zdGFuY2U7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBpbnN0YW5jZW9mIGRzdFJlZ0lkIHZhbHVlUmVn
SWQgY29uc3RydWN0b3JSZWdJZCBjb25zdHJ1Y3RvclByb3RvUmVnSWQKKy8vIGZ1bmN0aW9uOiBj
ZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbHVlUmVnSWRdIGluc3RhbmNlb2YgY2ZyW2NvbnN0cnVjdG9y
UmVnaWRdOworLy8KKy8vICAgVGVzdHMgd2hldGhlciByZWdpc3RlciB2YWx1ZSBpcyBhbiBpbnN0
YW5jZSBvZiByZWdpc3RlcgorLy8gICBjb25zdHJ1Y3RvciwgYW5kIHB1dHMgdGhlIGJvb2xlYW4g
cmVzdWx0IGluIHJlZ2lzdGVyCisvLyAgIGRzdC4gUmVnaXN0ZXIgY29uc3RydWN0b3JQcm90byBt
dXN0IGNvbnRhaW4gdGhlICJwcm90b3R5cGUiCisvLyAgIHByb3BlcnR5IChub3QgdGhlIGFjdHVh
bCBwcm90b3R5cGUpIG9mIHRoZSBvYmplY3QgaW4KKy8vICAgcmVnaXN0ZXIgY29uc3RydWN0b3Iu
IFRoaXMgbG9va3VwIGlzIHNlcGFyYXRlZCBzbyB0aGF0CisvLyAgIHBvbHltb3JwaGljIGlubGlu
ZSBjYWNoaW5nIGNhbiBhcHBseS4KKy8vCisvLyAgIFJhaXNlcyBhbiBleGNlcHRpb24gaWYgcmVn
aXN0ZXIgY29uc3RydWN0b3IgaXMgbm90IGFuCisvLyAgIG9iamVjdC4KKwogX2xsaW50X29wX2lu
c3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFs
IGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgLy8gQ2hl
Y2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZp
b3IuCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KLSAgICBsb2FkaSAx
MltQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEs
IHQwKQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIAotICAgICMgQWN0dWFsbHkg
ZG8gdGhlIHdvcmsuCi0gICAgbG9hZGkgMTZbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0Mwot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5z
dGFuY2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCi0gICAg
YmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RU
eXBlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cp
Ci0gICAgCi0gICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUK
LSAgICBtb3ZlIDEsIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3Ry
dWN0b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lkXTsKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tl
ZChjb25zdHJ1Y3RvcklkPHQxPiwgb2JqPHQwPik7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0dXJlOworICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdyAvLyBpZiAhKHN0cnVjdHVyZTx0MD4u
dHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSBnb3RvIC5zbG93
OworCisgICAgLy8gQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY29uc3RydWN0b3JQcm90b0lkPHQwPiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9y
UHJvdG9SZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDM+
ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpICAgICAgICAgICAgICAgICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNvbnN0cnVjdG9yUHJvdG9JZDx0MD4sIENl
bGxUYWcsIHByb3RvT2JqPHQxPiwgLnNsb3cpOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDFdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHN0cnVjdHVyZTx0Mj4gPSBwcm90b09iajx0MT4uc3RydWN0dXJlOworICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwg
Lm9wSW5zdGFuY2VvZlNsb3cgICAgIC8vIGlmICgodW5zaWduZWQpc3RydWN0dXJlPHQyPi50eXBl
SW5mby50eXBlIDwgT2JqZWN0VHlwZSkgZ290byAuc2xvdzsKKyAgICBsb2FkaSA4W1BDXSwgdDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB2YWx1ZUlkPHQwPiA9IG9wZXJhbmRzW3ZhbHVlUmVnSWRdOworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2Vv
ZlNsb3cpICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHZhbHVlSWQ8dDA+LCBDZWxsVGFnLCBvYmo8dDI+LCAuc2xvdyk7CisKKyAgICAvLyBSZWdpc3Rl
ciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwcm90b1dhc0ZvdW5kPHQwPiA9IHRydWU7CiAub3BJbnN0YW5jZW9mTG9v
cDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKLSAgICBsb2FkaSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCi0gICAgYnBlcSB0Miwg
dDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzdHJ1Y3R1cmU8dDI+ID0gb2JqPHQy
Pi5zdHJ1Y3R1cmU7CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBvYmo8dDI+
ID0gc3RydWN0dXJlPHQyPi5wcm90b3R5cGUuUGF5bG9hZDsKKyAgICBicGVxIHQyLCB0MSwgLm9w
SW5zdGFuY2VvZkRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIGlmIChvYmo8dDI+ID09IHByb3RvT2JqKSBnb3RvIC5kb25lOworICAg
IGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChvYmo8dDI+ICE9IG51bGwpIGdvdG8g
Lmxvb3A7CiAKLSAgICBtb3ZlIDAsIHQwCisgICAgbW92ZSAwLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcHJvdG9XYXNGb3VuZDx0MD4gPSBmYWxzZTsKIC5vcEluc3RhbmNlb2ZEb25lOgotICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHBy
b3RvV2FzRm91bmQ7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogCiAub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDUpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfaW5zdGFuY2VvZjsKKyAgICBkaXNwYXRj
aCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNv
ZGU6IGlzX3VuZGVmaW5lZCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RS
ZWdJZF0gPSAodHlwZW9mIGNmcltzcmNSZWdJZF0gPT0gInVuZGVmaW5lZCIpOworLy8KKy8vICAg
RGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Igc3JjIGFjY29yZGluZyB0bwor
Ly8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAidW5kZWZpbmVkIiwgYW5kIHB1dHMgdGhlIHJl
c3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MQotICAgIGxvYWRpIDRbUENd
LCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKLSAgICBzdG9yZWkg
Qm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgYmllcSB0MiwgQ2VsbFRhZywg
Lm9wSXNVbmRlZmluZWRDZWxsCi0gICAgY2llcSB0MiwgVW5kZWZpbmVkVGFnLCB0MwotICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAg
bG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8
dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQwPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFnPHQyPiwgcGF5bG9hZDx0Mz4p
OworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgIC8v
IGNmcltkc3RJZDx0MD5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgYmllcSB0MiwgQ2VsbFRhZywg
Lm9wSXNVbmRlZmluZWRDZWxsICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gPT0gQ2VsbFRhZykg
Z290byAuY2VsbDsKKyAgICBjaWVxIHQyLCBVbmRlZmluZWRUYWcsIHQzICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpc1VuZGVmaW5lZDx0Mz4gPSAodGFnPHQyPiA9PSBVbmRlZmluZWRUYWcpOwor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0MD5dID0gaXNVbmRlZmluZWQ8dDM+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIC5vcElz
VW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKLSAg
ICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDNdLCB0MSAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQzPi5zdHJ1
Y3R1cmU7CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAo
KHN0cnVjdHVyZTx0MT4udHlwZUluZm8uZmxhZ3MgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSAh
PSAwKTsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAg
ICAvLyBjZnJbZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQxPjsKKyAgICBkaXNwYXRjaCgzKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAKIAorLy8gYnl0ZWNvZGU6IGlzX2Jvb2xlYW4gZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0
aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJib29sZWFuIik7
CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNj
b3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlzICJib29sZWFuIiwgYW5kIHB1
dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9pc19ib29s
ZWFuOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2Fk
aSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnKHQxLCB0MCkKLSAgICBj
aWVxIHQwLCBCb29sZWFuVGFnLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAg
ICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0
W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBv
cGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDAp
ICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNJZDx0MT4gPT0+
IHRhZzx0MD4pOworICAgIGNpZXEgdDAsIEJvb2xlYW5UYWcsIHQwICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlzQm9vbGVhbjx0MD4gPSAodGFnPHQwPiA9PSBCb29sZWFuVGFnKTsKKyAgICBz
dG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJbZHN0
SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc0Jvb2xl
YW48dDA+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogaXNfbnVtYmVyIGRz
dFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9ICh0eXBlb2YgY2Zy
W3NyY1JlZ0lkXSA9PSAibnVtYmVyIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhl
IHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1
bGVzIGlzICJudW1iZXIiLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRz
dC4KKwogX2xsaW50X29wX2lzX251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9h
ZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVRhZyh0MSwgdDApCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQotICAgIGFkZGkgMSwgdDAKLSAgICBjaWIgdDAsIExvd2VzdFRhZyArIDEsIHQxCi0gICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgZGlzcGF0Y2goMykKLQor
ICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNy
Y0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJ
ZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApICAgICAgICAgICAgICAg
Ly8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNSZWdJZDx0MT4gPT0+IHRhZzx0MD4pOwor
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgIC8vIGNm
cltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgYWRkaSAxLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQwPiArPSAxOworICAgIGNpYiB0MCwg
TG93ZXN0VGFnICsgMSwgdDEgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzTnVtYmVyPHQxPiA9
ICgodW5zaWduZWQpdGFnPHQwPiA8IExvd2VzdFRhZyArIDEpOworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxv
YWQgPSBpc051bWJlcjx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCisKKy8vIGJ5dGVjb2RlOiBp
c19zdHJpbmcgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0g
KHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJzdHJpbmciKTsKKy8vCisvLyAgIERldGVybWluZXMg
d2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBhY2NvcmRpbmcgdG8KKy8vICAgdGhlIEVD
TUFTY3JpcHQgcnVsZXMgaXMgInN0cmluZyIsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgaW4g
cmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQotICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAub3BJc1N0cmluZ05vdENl
bGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDAKLSAgICBjYmVxIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQot
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKDMp
CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAg
bG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFnPHQwPiwgcGF5
bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVh
blRhZzsKKyAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNTdHJpbmdOb3RDZWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDA+ICE9IENlbGxUYWcpIGdvdG8gLm5v
dENlbGw7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDA+ID0gcGF5bG9hZDx0Mz4uc3Ry
dWN0dXJlOworICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MF0sIFN0cmluZ1R5cGUsIHQxICAgLy8gaXNTdHJpbmc8dDE+ID0gKHN0cnVjdHVyZTx0MD4u
dHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0Mj5dLlBheWxvYWQgPSBpc1N0cmluZzx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAub3BJc1N0cmluZ05vdENlbGw6Ci0gICAgc3RvcmVwIDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIHN0b3JlcCAwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Zy
W2RzdElkPHQyPl0uUGF5bG9hZCA9IGZhbHNlOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5v
dEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisg
ICAgLy8gbWFjcm86IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHBy
b3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpIHsKICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0
eSwgb2sgZW5kKQotICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0
QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKLSAgICBsb2FkaSBUYWdPZmZzZXQgLSA4ICog
SW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4
XSwgdGFnCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0
QW5kU3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmFnZTxvYmplY3RBbmRT
dG9yYWdlPiA9IG9iamVjdDxvYmplY3RBbmRTdG9yYWdlPi5vdXRPZkxpbmVTdG9yYWdlOworICAg
IGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcgICAgICAgICAgIC8vIHRhZyA9IHN0b3JhZ2U8
b2JqZWN0QW5kU3RvcmFnZT5bb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHByb3BlcnR5T2Zmc2V0
KV0uVGFnOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFj
aXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZCAgIC8vIHBh
eWxvYWQgPSBzdG9yYWdlPG9iamVjdEFuZFN0b3JhZ2U+W29mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShwcm9wZXJ0eU9mZnNldCldLlBheWxvYWQ7CisgICAgLy8gfSBFTkQgbWFjcm8gbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwKIGVuZAogCiBtYWNybyBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcs
IHBheWxvYWQpCkBAIC05MzgsMzIgKzEzMDIsNTQgQEAgbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldChwcm9wZQogZW5kCiAKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykK
LSAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgotICAgICMgNFtQQ10gICBEZXN0aW5hdGlv
biBmb3IgdGhlIGxvYWQuCi0gICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXgg
aW4gdGhlIGNvZGUgYmxvY2suCi0gICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0
aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KLSAgICAjIDE2W1BDXSAgT2Zmc2V0
IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9y
LgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQotICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKLSAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwodDEsIHQwLCB0MiwgdDMp
Ci0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBsb2FkaSAo
c2l6ZSAtIDEpICogNFtQQ10sIHQwCi0gICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCi1lbmQK
KyAgICAvLyBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpIHsKKyAgICAvLyBPcGVyYW5k
cyBhcmUgYXMgZm9sbG93czoKKyAgICAvLyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KKyAgICAvLyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUg
YmxvY2suCisgICAgLy8gMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8g
MCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgLy8gMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFs
IG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgLy8g
Li4uCisgICAgLy8gb3JhY2xlQ2FjaGVJZFtQQ10gIE9mZnNldCBpbnRvIHRoZSBWYWx1ZVByb2Zp
bGU6OmJ1Y2tldHMgdGhhdCB3aWxsIHN0b3JlIHRoZSBvcmFjbGUgdmFsdWUgZm9yIHRoaXMgYnl0
ZWNvZGUuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQwPiA9IGNmci5Db2RlQmxvY2s7CisgICAgbWxh
bURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgICAgICBtbGFtIGNvZGVibG9jayAlcFxu
IiwgcjAudS52cCk7CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
ICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4u
Z2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBnbG9iYWxPYmplY3Q8dDA+
LnN0cnVjdHVyZTsKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3RydWN0dXJlPHQxPiAhPSBzdHJ1Y3R1cmVBcmc8
cGNbMTJdPikgZ290byAuc2xvdzsKKyAgICBsb2FkaSAxNltQQ10sIHQxICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDE+ID0gb2Zmc2V0QXJnW3Bj
WzE2XV0pOworCisgICAgIyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5h
bCh0MSwgdDAsIHQyLCB0MykgICAvLyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25O
b3RGaW5hbChvZmZzZXQ8dDE+LCBnbG9iYWxPYmplY3Q8dDA+ID09PiB0YWc8dDI+LCBwYXlsb2Fk
PHQzPik7CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgICAgICBtbGFt
IG9iaiAlcCIsIHIwLnUudnApOworICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3Jh
Z2VbdDBdLCB0MCAgICAgICAgICAgICAgICAgIC8vIHN0b3JhZ2U8b2JqZWN0QW5kU3RvcmFnZT4g
PSBvYmplY3Q8b2JqZWN0QW5kU3RvcmFnZT4ub3V0T2ZMaW5lU3RvcmFnZTsKKyAgICBtbGFtRG8g
Ly8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiBzdG9yYWdlICVwIiwgcjAudS52cCk7CisgICAg
bG9hZGkgVGFnT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVt0MCwgdDEsIDhdLCB0
MiAgICAvLyB0YWcgPSBzdG9yYWdlPG9iamVjdEFuZFN0b3JhZ2U+W29mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShwcm9wZXJ0eU9mZnNldCldLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0g
OCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVt0MCwgdDEsIDhdLCB0MyAgIC8vIHBheWxvYWQgPSBz
dG9yYWdlPG9iamVjdEFuZFN0b3JhZ2U+W29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShwcm9wZXJ0
eU9mZnNldCldLlBheWxvYWQ7CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRm
KCIgJnZhbHVlICVwIiwgKHIwLnUuaThwICsgKHIxLnUuaSA8PCAzKSArIC00OCkpOworCisgICAg
bG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZHN0SWQ8dDA+ID0gcGNbNF07CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQwPl0uVGFnID0g
dGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XS5QYXlsb2FkID0gcGF5bG9hZDx0Mz47
CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgICBtbGFtIHJlc29sdmVn
bG9iYWwgfCBwYXlsb2FkPHQzPiA9ICVsZFxuIiwgcjQudS5pKTsKKyAgICBsb2FkaSAoc2l6ZSAt
IDEpICogNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJ
ZDx0MD4gPSBwY1tvcmFjbGVDYWNoZUlkXTsKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZVByb2ZpbGUodGFnPHQy
PiwgcGF5bG9hZDx0Mz4sIG9yYWNsZUlkPHQwPik7CisgICAgLy8gfSBFTkQgbWFjcm8gcmVzb2x2
ZUdsb2JhbC4KK2VuZAorCisvLyBieXRlY29kZTogZHN0UmVnSWQgZ2xvYmFsT2JqZWN0KGMpIHBy
b3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBvZmZzZXQobikgb3JhY2xlQ2FjaGVJZAorLy8gZnVu
Y3Rpb246IGNmcltkc3RSZWdJZF0gPSBnbG9iYWxPYmplY3Rbb2Zmc2V0XTsKKy8vCisvLyAgIFBl
cmZvcm1zIGEgZHluYW1pYyBwcm9wZXJ0eSBsb29rdXAgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwg
b24gdGhlIHByb3ZpZGVkCisvLyAgIGdsb2JhbCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUgbWF0Y2hl
cyB0aGUgU3RydWN0dXJlIG9mIHRoZSBnbG9iYWwgdGhlbiBwZXJmb3JtCisvLyAgIGEgZmFzdCBs
b29rdXAgdXNpbmcgdGhlIGNhc2Ugb2Zmc2V0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIGEgZnVs
bCByZXNvbHZlIGFuZAorLy8gICBjYWNoZSB0aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zmc2V0CiAK
IF9sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgcmVz
b2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykKLSAgICBkaXNwYXRjaCg2KQorICAg
IHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpICAvLyByZXNvbHZlR2xvYmFs
KDYsIC5zbG93KTsKKyAgICBkaXNwYXRjaCg2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BSZXNvbHZlR2xvYmFsU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbCkKLSAgICBkaXNwYXRjaCg2
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsKSAgIC8v
IGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsOworICAgIGRpc3BhdGNoKDYpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiAj
IEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25h
bGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCkBAIC05NzEsNTQgKzEzNTcsNjkg
QEAgX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgogIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEg
cmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9l
cyBub3QKICMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4K
IG1hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKLSAgICBs
b2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAotICAgIGxvYWRpIGRlQnJ1
aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAvLyBtYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRl
eE9wZXJhbmQsIHNjb3BlQ2hlY2spIHsKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAvLyBzY29wZU9iajx0MD4gPSBjZnIuU2Nv
cGVDaGFpbi5QYXlsb2FkOworICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlQnJ1aWppbkluZGV4PHQyPiA9IFtkZUJydWlq
aW5JbmRleE9wZXJhbmRdOwogICAgIAotICAgIGJ0aXogdDIsIC5kb25lCisgICAgYnRpeiB0Miwg
LmRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KGRlQnJ1aWppbkluZGV4PHQyPiA9PSAwKSBnb3RvIC5kb25lOwogICAgIAotICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQotICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1
bmN0aW9uQ29kZSwgLmxvb3AKLSAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNo
YWluW3QxXSwgLmxvb3AKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2RlQmxvY2s8dDE+ID0gY2ZyLkNvZGVCbG9jazsK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
ICAgICAgICAvLyBpZiAoY29kZUJsb2NrPHQxPi5jb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUpIGdv
dG8gLmxvb3A7CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0s
IC5sb29wICAgICAgICAgICAgLy8gaWYgKCFjb2RlQmxvY2s8dDE+Lm5lZWRzRnVsbFNjb3BlQ2hh
aW4pIGdvdG8gLmxvb3A7CiAgICAgCi0gICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25S
ZWdpc3Rlclt0MV0sIHQxCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rl
clt0MV0sIHQxICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0MT4gPSBjb2RlQmxvY2s8
dDE+LmFjdGl2YXRpb25SZWdpc3RlcjsKIAotICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNr
aXAgb3ZlciBvbmUgc2NvcGUuCi0gICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KLSAgICBzY29wZUNoZWNrKHQwLCB0MSkKLSAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgLy8gTmVlZCB0byBjb25kaXRpb25h
bGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24gICAgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVn
PHQxPl0uVGFnID09IEVtcHR5VmFsdWVUYWcpIGdvdG8gLm5vQWN0aXZhdGlvbjsKKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBzY29wZUNoZWNrKHNjb3BlT2JqPHQwPiwgYWN0aXZhdGlvblJlZzx0MT4pOworICAgIGxvYWRw
IFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHNjb3BlT2JqPHQwPiA9IHNjb3BlT2JqPHQwPi5uZXh0OwogLm5vQWN0aXZhdGlvbjoKLSAgICBz
dWJpIDEsIHQyCisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZGVCcnVpamluSW5kZXg8dDI+LS07CiAgICAgCi0gICAgYnRp
eiB0MiwgLmRvbmUKKyAgICBidGl6IHQyLCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ID09IDApIGdvdG8g
LmRvbmU7CiAubG9vcDoKLSAgICBzY29wZUNoZWNrKHQwLCB0MSkKLSAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6bmV4dFt0MF0sIHQwCi0gICAgc3ViaSAxLCB0MgotICAgIGJ0aW56IHQyLCAubG9v
cAorICAgIHNjb3BlQ2hlY2sodDAsIHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgc2NvcGVDaGVjayhzY29wZU9iajx0MD4sIGFjdGl2YXRpb25SZWc8dDE+
KTsKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIHNjb3BlT2JqPHQwPiA9IHNjb3BlT2JqPHQwPi5uZXh0OworICAgIHN1
YmkgMSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgZGVCcnVpamluSW5kZXg8dDI+LS07CisgICAgYnRpbnogdDIsIC5sb29wICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4
PHQyPiAhPSAwKSBnb3RvIC5sb29wOwogCiAuZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBnZXRT
Y29wZS4KIGVuZAogCisvLyBieXRlY29kZTogcmVzb2x2ZV9za2lwIGRzdChyKSBnbG9iYWxPYmpl
Y3QoYykgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIG9mZnNldChuKSBvcmFjbGVDYWNoZUlk
CisvLyBmdW5jdGlvbjogCisvLworLy8gICBQZXJmb3JtcyBhIGR5bmFtaWMgcHJvcGVydHkgbG9v
a3VwIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIG9uIHRoZSBwcm92aWRlZAorLy8gICBnbG9iYWwg
b2JqZWN0LiAgSWYgc3RydWN0dXJlIG1hdGNoZXMgdGhlIFN0cnVjdHVyZSBvZiB0aGUgZ2xvYmFs
IHRoZW4gcGVyZm9ybQorLy8gICBhIGZhc3QgbG9va3VwIHVzaW5nIHRoZSBjYXNlIG9mZnNldCwg
b3RoZXJ3aXNlIGZhbGwgYmFjayB0byBhIGZ1bGwgcmVzb2x2ZSBhbmQKKy8vICAgY2FjaGUgdGhl
IG5ldyBzdHJ1Y3R1cmUgYW5kIG9mZnNldC4KKy8vICAgICAgICAgCisvLyAgIFRoaXMgd2Fsa3Mg
dGhyb3VnaCBuIGxldmVscyBvZiB0aGUgc2NvcGUgY2hhaW4gdG8gdmVyaWZ5IHRoYXQgbm9uZSBv
ZiB0aG9zZSBsZXZlbHMKKy8vICAgaW4gdGhlIHNjb3BlIGNoYWluIGluY2x1ZGUgZHluYW1pY2Fs
bHkgYWRkZWQgcHJvcGVydGllcy4KKwogX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MwotICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0
M10sIHQzCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4g
PSBzcC5nbG9iYWxEYXRhOworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVj
dHVyZVt0M10sIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2
YXRpb25TdHJ1Y3R1cmU8dDM+ID0gZ2xvYmFsRGF0YTx0Mz4uYWN0aXZhdGlvblN0cnVjdHVyZTsK
ICAgICBnZXRTY29wZSgKICAgICAgICAgMjBbUENdLAogICAgICAgICBtYWNybyAoc2NvcGUsIHNj
cmF0Y2gpCi0gICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwg
c2NyYXRjaAotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwg
dDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93Ci0gICAgICAgIGVuZCkKLSAgICBy
ZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKLSAgICBkaXNwYXRj
aCg3KQorICAgICAgICAvLyBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIHsKKyAgICAgICAgICAgIGxv
YWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBvYmo8c2NyYXRjaD4gPSBzY29wZS5vYmplY3Q7CisgICAgICAg
ICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUds
b2JhbER5bmFtaWNTdXBlclNsb3cgICAgLy8gaWYgKG9iajxzY3JhdGNoPi5zdHJ1Y3R1cmUgIT0g
YWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4pIGdvdG8gLnN1cGVyU2xvdzsKKyAgICAgICAgLy8gfSBF
TkQgbWFjcm8uCisgICAgICAgIGVuZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0U2NvcGUob3Bl
cmFuZHNbb2Zmc2V0XSwgLi4uKTsKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9i
YWxEeW5hbWljU2xvdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBy
ZXNvbHZlR2xvYmFsKDcsIC5zbG93KTsKKyAgICBkaXNwYXRjaCg3KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMpCi0gICAgZGlzcGF0Y2goNykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSAgICAgICAgICAg
ICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5h
bWljOworICAgIGRpc3BhdGNoKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKIAogLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCi0gICAgZGlzcGF0Y2goNykKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljOworICAgIGRpc3BhdGNoKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKIAogCiBfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CkBAIC0xMDY0LDYgKzE0
NjUsNyBAQCBtYWNybyBnZXRHbG9iYWxWYXIoc2l6ZSkKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQog
ICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDMKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1f
UFJJTlRGKSBwcmludGYoIiAgICBtbGFtIGdldEdsb2JhbFZhcjogPHQzPiA9ICVsZCAgfCBwYXls
b2FkPHQxPiA9ICVsZFxuIiwgcjQudS5pLCByMS51LmkpOwogICAgIHZhbHVlUHJvZmlsZSh0Miwg
dDEsIHQzKQogICAgIGRpc3BhdGNoKHNpemUpCiBlbmQKQEAgLTExNjMsNiArMTU2NSw3IEBAIG1h
Y3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbWxhbURvIC8vIG1s
YW1QcmludD0gdHJ1ZTsKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2Vs
bFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKICAgICBnZXRQ
cm9wZXJ0eVN0b3JhZ2UoCkBAIC0xMTc0LDExICsxNTc3LDIzIEBAIG1hY3JvIHB1dEJ5SWQoZ2V0
UHJvcGVydHlTdG9yYWdlKQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDIsIHNjcmF0Y2gsIHQyKQogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQog
ICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQx
XQorICAgICAgICAgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgICBtbGFt
IEFTTSBwdXRCeUlkIHJlc3VsdDx0Mj4gPSAlbGRcbiIsIHIyLnUuaSk7CiAgICAgICAgICAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KICAgICAgICAgICAg
IGRpc3BhdGNoKDkpCiAgICAgICAgIGVuZCkKIGVuZAogCisvLyBieXRlY29kZTogcHV0X2J5X2lk
IGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChu
KSBkaXJlY3QoYikKKy8vCisvLyAgIEdlbmVyaWMgcHJvcGVydHkgYWNjZXNzOiBTZXRzIHRoZSBw
cm9wZXJ0eSBuYW1lZCBieSBpZGVudGlmaWVyCisvLyAgIHByb3BlcnR5LCBiZWxvbmdpbmcgdG8g
cmVnaXN0ZXIgYmFzZSwgdG8gcmVnaXN0ZXIgdmFsdWUuCisvLworLy8gICBVbmxpa2UgbWFueSBv
cGNvZGVzLCB0aGlzIG9uZSBkb2VzIG5vdCB3cml0ZSBhbnkgb3V0cHV0IHRvCisvLyAgIHRoZSBy
ZWdpc3RlciBmaWxlLgorLy8KKy8vICAgVGhlICJkaXJlY3QiIGZsYWcgc2hvdWxkIG9ubHkgYmUg
c2V0IHRoaXMgcHV0X2J5X2lkIGlzIHRvIGluaXRpYWxpemUKKy8vICAgYW4gb2JqZWN0IGxpdGVy
YWwuCisKIF9sbGludF9vcF9wdXRfYnlfaWQ6CiAgICAgcHV0QnlJZCh3aXRoSW5saW5lU3RvcmFn
ZSkKIApAQCAtMTQzNSwyNSArMTg1MCwzNCBAQCBtYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJl
LCBkb3VibGVDb21wCiAgICAgbG9hZGkgOFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDAsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0Miwg
dDMpCisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDFcbiIp
OwogICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAogICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLm9wMk5vdEludAorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENPTVBB
UkUgc3RlcCAyXG4iKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDb21wYXJp
bmcgaWYgKHQxICVsZCBhbmQgdDIgJWxkKTogYnJhbmNoIC4uLlxuIiwgcjEudS5pLCByNC51Lmkp
OwogICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgbWxhbURvIC8v
IHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDNcbiIpOworICAgIG1sYW1EbyAvLyBw
cmludGYoIiAgIEBAQCBtbGFtIERJRCBOT1QgYnJhbmNoXG4iKTsKICAgICBkaXNwYXRjaCg0KQog
CiAub3AxTm90SW50OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENPTVBBUkUg
c3RlcCA0XG4iKTsKICAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKICAgICBiaWIgdDIsIExv
d2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQogICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNs
b3cKICAgICBjaTJkIHQzLCBmdDEKICAgICBqbXAgLm9wMU5vdEludFJlYWR5CiAub3AxTm90SW50
T3AyRG91YmxlOgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENPTVBBUkUgc3Rl
cCA1XG4iKTsKICAgICBmaWkyZCB0MywgdDIsIGZ0MQogLm9wMU5vdEludFJlYWR5OgorICAgIG1s
YW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENPTVBBUkUgc3RlcCA2XG4iKTsKICAgICBmaWky
ZCB0MSwgdDAsIGZ0MAogICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQog
ICAgIGRpc3BhdGNoKDQpCiAKIC5vcDJOb3RJbnQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICAg
QEBAIG1sYW0gQ09NUEFSRSBzdGVwIDdcbiIpOwogICAgIGNpMmQgdDEsIGZ0MAogICAgIGJpYSB0
MiwgTG93ZXN0VGFnLCAuc2xvdwogICAgIGZpaTJkIHQzLCB0MiwgZnQxCkBAIC0xNDYxLDkgKzE4
ODUsMTIgQEAgbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcAogICAgIGRp
c3BhdGNoKDQpCiAKIC5qdW1wVGFyZ2V0OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBt
bGFtIENPTVBBUkUgc3RlcCA4XG4iKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxh
bSBCUkFOQ0hFRFxuIik7CiAgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQogCiAuc2xvdzoKKyAg
ICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAgOVxuIik7CiAgICAg
Y2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGRpc3BhdGNoKDApCiBlbmQKQEAgLTE1NDUsMzIg
KzE5NzIsNjggQEAgX2xsaW50X29wX25ld19mdW5jOgogLm9wTmV3RnVuY0RvbmU6CiAgICAgZGlz
cGF0Y2goNCkKIAorbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uQnlDYWxsZWUoY2FsbGVlKQorICAg
IGlmIENfTE9PUAorICAgICAgICBjeHhDYWxsSlNGdW5jdGlvbiBjYWxsZWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUYXJnZXQgaXMgaW4gdGhlIENhbGxGcmFtZS4KKyAg
ICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZGlzcGF0Y2hBZnRlckNhbGwoKTsgICAgICAgIAorICAgIGVsc2UKKyAgICAg
ICAgY2FsbCBjYWxsZWUKKyAgICAgICAgLy8gUmVsb2FkIHRoZSByZXR1cm4gUEMgZnJvbSB3aGVy
ZSB3ZSBzdGFzaGVkIGl0LCBhbmQgZ28gdGhlcmU6CisgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3Vt
ZW50Q291bnQuVGFnOyAgZ290byAqcGM7CisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3BhdGNoQWZ0ZXJDYWxs
KCk7CisgICAgZW5kCitlbmQKKworbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKGNhbGxMaW5rSW5m
bykKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgY3h4Q2FsbEpTRnVuY3Rpb24gTExJbnRDYWxsTGlu
a0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10gICAgIC8vIGNhbGwgY2FsbExp
bmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0OworICAgICAgICAjIG1sYW0gY3h4Q2FsbEpTRnVuY3Rp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGFyZ2V0IGlz
IGluIHRoZSBDYWxsRnJhbWUuCisgICAgZWxzZQorICAgICAgICBjYWxsIExMSW50Q2FsbExpbmtJ
bmZvOjptYWNoaW5lQ29kZVRhcmdldFtjYWxsTGlua0luZm9dICAgICAvLyBjYWxsIGNhbGxMaW5r
SW5mby5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICAgICAgLy8gUmVsb2FkIHRoZSByZXR1cm4gUEMg
ZnJvbSB3aGVyZSB3ZSBzdGFzaGVkIGl0LCBhbmQgZ28gdGhlcmU6CisgICAgICAgIC8vIHBjID0g
Y2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAgZ290byAqcGM7CisgICAgICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3BhdGNo
QWZ0ZXJDYWxsKCk7CisgICAgZW5kCitlbmQKIAogbWFjcm8gZG9DYWxsKHNsb3dQYXRoKQotICAg
IGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAgICBsb2FkcCBMTEludENh
bGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQotICAgIGJpbmVxIHQzLCB0MiwgLm9w
Q2FsbFNsb3cKLSAgICBsb2FkaSAxMltQQ10sIHQzCi0gICAgYWRkcCAyNCwgUEMKLSAgICBsc2hp
ZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUg
b2YgY2ZyCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKLSAgICBz
dG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgc3RvcmVpIHQwLCBTY29w
ZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgotICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCi0gICAgc3RvcmVwIGNm
ciwgQ2FsbGVyRnJhbWVbdDNdCi0gICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9h
ZE9mZnNldFt0M10KLSAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQot
ICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQotICAgIG1vdmUg
dDMsIGNmcgotICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3Qx
XQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAvLyBtYWNybyBkb0NhbGwoc2xvd1BhdGgp
IHsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZnVuY0lkPHQwPiA9IHBjWzFdOworICAgIGxvYWRpIDE2W1BDXSwgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsTGlua0luZm88dDE+ID0gcGNbNF07Cisg
ICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyICAgICAgICAgICAgIC8v
IGNhbGxlZTx0Mj4gPSBDYWxsTGlua0luZm88dDE+LmNhbGxlZTsKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KSAvLyBsb2FkKGZ1
bmNJZDx0MD4gPT0+IGZ1bmM8dDM+LCAuLi4pOworICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNs
b3cgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZnVuYzx0Mz4gIT0gY2FsbGVlPHQy
PiBpLmUuIGlzQnl0ZWNvZGUoKT8pIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgMTJbUENdLCB0MyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBwY1szXTsK
KworICAgIGFkZHAgMjQsIFBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyArPSAyNCBpLmUuIHBvaW50IHRvIHRoZSByZXR1cm4gYWRkcmVzcy4KKworICAgIC8v
IG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9IHNpemVv
ZiBjdXJyZW50IGZyYW1lOworICAgIGxzaGlmdGkgMywgdDMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDM+ID0gb2Zmc2V0PHQzPiA8PCAzOworICAgIGFk
ZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmciAgICAvLyBuZXdG
cmFtZTx0Mz4gPSBvZmZzZXQ8dDM+ICsgY2ZyOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV3
RnJhbWU6CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAgICAgICAg
ICAgICAgIC8vIHNjb3BlPHQwPiA9IGNhbGxlZTx0Mj4uc2NvcGVDaGFpbjsKKyAgICBzdG9yZWkg
dDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8
dDM+LkNhbGxlZS5QYXlsb2FkID0gY2FsbGVlPHQyPjsKKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hh
aW4gKyBQYXlsb2FkT2Zmc2V0W3QzXSAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hh
aW4uUGF5bG9hZCA9IHNjb3BlPHQwPjsKKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gPHQyPiA9IC4uLjsKKyAgICBtbGFtRG8gIC8vIGlm
IChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IFBSSU5UIGRvQ2FsbCgpIHwgY2ZyLkFy
Z3VtZW50Q291bnQuVGFnID0gcGMgJXA7XG5cbiIsIHZQQyk7CisgICAgc3RvcmVpIFBDLCBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0gICAgICAgICAgIC8vIGNmci5Bcmd1bWVudENvdW50
LlRhZyA9IHBjOyAvLyBTdGFzaCB0aGUgcmV0dXJuUEMuCisgICAgc3RvcmVwIGNmciwgQ2FsbGVy
RnJhbWVbdDNdICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5DYWxsZXJG
cmFtZSA9IGNmcjsKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W3QzXSAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkFyZ3VtZW50Q291bnQuUGF5bG9hZCA9IDx0Mj47
CisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10gICAgICAgICAgICAg
IC8vIG5ld0ZyYW1lPHQzPi5DYWxsZWUuVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10gICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNj
b3BlQ2hhaW4uVGFnID0gQ2VsbFRhZzsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikg
cHJpbnRmKCJcbiBtbGFtIDo6IEJFRk9SRSBwdXNoIHwgY2ZyKCVwKS0+dlBDKCkgPSAlcDtcblxu
IiwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmN1cnJlbnRWUEMoKSk7CisgICAgbW92ZSB0MywgY2Zy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1l
PHQzPjsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6
IEFGVEVSIHB1c2ggfCBjZnIoJXApLT52UEMoKSA9ICVwO1xuXG4iLCBjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+Y3VycmVudFZQQygpKTsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgVk1J
bnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgID4+PiBQVVNIRUQgdG8gbmV3ICIsIHZQ
QywgImRvQ2FsbCIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICAvLyBDYWxsIHRoZSB0YXJn
ZXQgYXMgaWYgaXQncyBhIGNvbXBpbGVkIG1ldGhvZDoKKyAgICAjIG1sYW0gY2FsbCBMTEludENh
bGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdICAgICAgIC8vIGNhbGwgY2FsbExpbmtJ
bmZvPHQxPi5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24odDEpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxsTGlu
a0luZm88dDE+KTsKIAogLm9wQ2FsbFNsb3c6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dQ
YXRoKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBzbG93UGF0aCkgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dQYXRoOworICAgIC8vIH0gRU5EIGRvQ2FsbC4KIGVuZAogCiAKQEAg
LTE1OTYsMTIgKzIwNTksMjEgQEAgX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKICAgICBk
aXNwYXRjaCgyKQogCiAKKy8vIGJ5dGVjb2RlOiByZXQgcmVzdWx0UmVnSWQKKy8vIGZ1bmN0aW9u
OiByZXR1cm4gY2ZyW3Jlc3VsdFJlZ0lkXTsKKy8vCisvLyAgIFJldHVybiByZWdpc3RlciByZXN1
bHQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY3VycmVudAorLy8gICBmdW5jdGlvbiBjYWxs
LCB3cml0aW5nIGl0IGludG8gZnVuY3Rpb25SZXR1cm5WYWx1ZS4KKy8vICAgSW4gYWRkaXRpb24s
IHVud2luZCBvbmUgY2FsbCBmcmFtZSBhbmQgcmVzdG9yZSB0aGUgc2NvcGUKKy8vICAgY2hhaW4s
IGNvZGUgYmxvY2sgaW5zdHJ1Y3Rpb24gcG9pbnRlciBhbmQgcmVnaXN0ZXIgYmFzZQorLy8gICB0
byB0aG9zZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbi4KKwogX2xsaW50X29wX3JldDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKLSAgICBs
b2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCi0g
ICAgZG9SZXR1cm4oKQorICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgIC8v
IHJlc3VsdElkPHQyPiA9IG9wZXJhbmRzW3Jlc3VsdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSwgdDApICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGNmcltyZXN1
bHRJZDx0Mj5dID09PiB0YWc8dDE+LCBwYXlsb2FkPHQwPik7CisgICAgZG9SZXR1cm4oKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZG9SZXR1cm4oKTsKIAogCiBfbGxpbnRfb3BfY2FsbF9w
dXRfcmVzdWx0OgpAQCAtMTY4OCw2ICsyMTYwLDEyIEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgog
ICAgIGRpc3BhdGNoKDApCiAKIAorLy8gYnl0ZWNvZGU6IGNhdGNoIGV4KHIpCisvLworLy8gICBS
ZXRyaWV2ZXMgdGhlIFZNJ3MgY3VycmVudCBleGNlcHRpb24gYW5kIHB1dHMgaXQgaW4gcmVnaXN0
ZXIKKy8vICAgZXguIFRoaXMgaXMgb25seSB2YWxpZCBhZnRlciBhbiBleGNlcHRpb24gaGFzIGJl
ZW4gcmFpc2VkLAorLy8gICBhbmQgdXN1YWxseSBmb3JtcyB0aGUgYmVnaW5uaW5nIG9mIGFuIGV4
Y2VwdGlvbiBoYW5kbGVyLgorCiBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgIyBUaGlzIGlzIHdoZXJl
IHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQog
ICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9v
cF9jYXRjaCksIGFuZCBmcm9tCkBAIC0xNjk1LDE4ICsyMTczLDE4IEBAIF9sbGludF9vcF9jYXRj
aDoKICAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8g
YmUgaW4gdDAuIFRoZSB0aHJvd2luZwogICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3
ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKICAgICAjIHNldCBK
U0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KLSAgICBtb3ZlIHQwLCBj
ZnIKLSAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKLSAgICBsb2Fk
aSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCi0gICAg
bG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKLSAg
ICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCi0gICAg
c3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KLSAg
ICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZz
ZXRbdDNdICAgICAgIAotICAgIGxvYWRpIDRbUENdLCB0MgotICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgbW92ZSB0MCwgY2ZyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnIgPSBjYXRjaGVyRnJhbWU8dDA+OworICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAg
IGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMg
ICAgICAgICAgICAgLy8gcGMgPSBnbG9iYWxEYXRhLnRhcmdldEludGVycHJldGVyUENGb3JUaHJv
dzsKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNd
LCB0MCAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDA+ID0gZ2xvYmFsRGF0YS5leGNlcHRpb24u
UGF5bG9hZDsKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0
M10sIHQxICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MT4gPSBnbG9iYWxEYXRhLmV4Y2VwdGlv
bi5UYWc7CisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9m
ZnNldFt0M10gICAgICAgICAgICAgICAvLyBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5QYXlsb2FkID0g
MDsKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBU
YWdPZmZzZXRbdDNdICAgICAgIC8vIGdsb2JhbERhdGEuZXhjZXB0aW9uLlRhZyA9IEVtcHR5VmFs
dWVUYWc7CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBleFJlZ0lkPHQyPiA9IG9wZXJhbmRzWzBdOworICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyW2V4UmVnSWQ8dDI+XS5QYXlsb2FkID0gcGF5bG9hZDx0MD47Cisg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnJbZXhSZWdJZDx0Mj5dLlRhZyA9IHRhZzx0MT47CiAgICAgdHJh
Y2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3
YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCi0gICAgZGlzcGF0Y2goMikKKyAg
ICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRfb3BfZW5kOgpA
QCAtMTcxOSwzMyArMjE5Nyw0NCBAQCBfbGxpbnRfb3BfZW5kOgogICAgIGRvUmV0dXJuKCkKIAog
CisjIG1sYW0gaWYgQ19MT09QCisjIG1sYW0gZWxzZSAjIG5vdCBDX0xPT1AKKwogX2xsaW50X3Ro
cm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BS
SU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF90aHJv
d19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lXG5cbiIpOwogICAgICMgV2hlbiB0aHJvd2luZyBm
cm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50U2xvd1BhdGhzKSwg
c28KICAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVk
IGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KICAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMg
dGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgotICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omds
b2JhbERhdGFbc3BdLCB0MQotICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhy
b3dbdDFdLCB0MAotICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
W3QxXQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MSAgICAgICAg
ICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0MT4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRh
OworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MCAgICAg
ICAgICAgLy8gY2FsbEZyYW1lPHQwPiA9IGdsb2JhbERhdGE8dDE+LmNhbGxGcmFtZUZvclRocm93
OworICAgICMgbWxhbSBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0
MV0KKyAgICBpbmRpcmVjdEp1bXAoSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJv
d1t0MV0pIC8vIGptcCBnbG9iYWxEYXRhPHQxPi50YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKIAog
CiBfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBtbGFtRG8gLy8gaWYg
KG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmVcblxuIik7CiAgICAgcHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQogICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MQogICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFd
LCB0MAotICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
ICAgICMgbWxhbSBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0K
KyAgICBpbmRpcmVjdEp1bXAoSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0
MV0pCiAKIAorIyBtbGFtIGlmIENfTE9PUAorIyBtbGFtIGVsc2UgIyBub3QgQ19MT09QCisKIG1h
Y3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQotICAg
IHN0b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXQotICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIHQw
Ci0gICAgbG9hZGkgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDBdLCB0MQotICAgIHN0b3Jl
aSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W2Nmcl0KLSAgICBzdG9yZWkgdDEsIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0KKyAgICAvLyBJbml0IGNmcltDb2RlQmxvY2ss
IFNjb3BlQ2hhaW4sIFJldHVyblBDXToKKyAgICBzdG9yZXAgMCwgQ29kZUJsb2NrW2Nmcl0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLkNvZGVCbG9jayA9IDA7CisgICAgbG9hZHAg
Q2FsbGVyRnJhbWVbY2ZyXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlckZy
YW1lPHQwPiA9IGNmci5DYWxsZXJGcmFtZTsKKyAgICBsb2FkaSBTY29wZUNoYWluICsgUGF5bG9h
ZE9mZnNldFt0MF0sIHQxICAgICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVyRnJhbWU8dDA+
LlNjb3BlQ2hhaW4uUGF5bG9hZDsKKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRh
Z09mZnNldFtjZnJdICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4uVGFnID0gQ2VsbFRhZzsKKyAg
ICBzdG9yZWkgdDEsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0gICAgICAgICAgLy8g
Y2ZyLlNjb3BlQ2hhaW4uUGF5bG9hZCA9IHNjb3BlPHQxPjsKICAgICBpZiBYODYKICAgICAgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YSArIDRbc3BdLCB0MyAjIEFkZGl0aW9uYWwg
b2Zmc2V0IGZvciByZXR1cm4gYWRkcmVzcwogICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERh
dGE6OnRvcENhbGxGcmFtZVt0M10KICAgICAgICAgcGVlayAwLCB0MQotICAgICAgICBzdG9yZXAg
dDEsIFJldHVyblBDW2Nmcl0KKyAgICAgICAgc3RvcmVwIHQxLCBSZXR1cm5QQ1tjZnJdICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQxPjsKICAgICAgICAgbW92ZSBj
ZnIsIHQyICAjIHQyID0gZWN4CiAgICAgICAgIHN1YnAgMTYgLSA0LCBzcAogICAgICAgICBsb2Fk
aSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCkBAIC0xNzU1LDI3ICsyMjQ0LDUwIEBA
IG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICAgICAgYWRkcCAx
NiAtIDQsIHNwCiAgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA0W3Nw
XSwgdDMKICAgICBlbHNpZiBBUk12NwotICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDMKLSAgICAgICAgc3RvcmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0b3BDYWxs
RnJhbWVbdDNdCi0gICAgICAgIG1vdmUgdDAsIHQyCi0gICAgICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MykKLSAgICAgICAgc3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdCi0gICAg
ICAgIG1vdmUgY2ZyLCB0MAotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nm
cl0sIHQxCi0gICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCi0g
ICAgICAgIG1vdmUgdDIsIGNmcgotICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uW3QxXQotICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKLSAg
ICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgICAgIC8v
IFNldCBnbG9iYWxEYXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xvYmFsRGF0
YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgICAgICBzdG9yZXAgY2Zy
LCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFtZVt0M10gICAgICAvLyBnbG9iYWxEYXRhPHQzPi50
b3BDYWxsRnJhbWUgPSBjZnI7CisgICAgICAgIG1vdmUgdDAsIHQyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNhdmVkQ2FsbGVyRnJhbWU8dDI+ID0gY2FsbGVyRnJhbWU8
dDA+OworICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDMpICAgICAgICAg
ICAgICAvLyBzYXZlZFJldHVyblBDPHQzPiA9IHJldHVyblBDOworICAgICAgICBzdG9yZXAgdDMs
IFJldHVyblBDW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8
dDM+OworICAgICAgICAvLyBQYXNzIGN1cnJlbnRGcmFtZSBhcyBhbiBhcmcgdG8gdGhlIHRhcmdl
dDoKKyAgICAgICAgbW92ZSBjZnIsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gYXJnMDogYXJnMDx0MD4gPSBjZnI7CisgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9u
IHdpdGggcjAgPSBjdXJyZW50RnJhbWUsIGNmciA9IG9sZEZyYW1lOiBXaHk/Pz8KKyAgICAgICAg
bG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MSAgICAgICAgICAgLy8ganNmdW5j
PHQxPiA9IGNmci5DYWxsZWUuUGF5bG9hZDsKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9l
eGVjdXRhYmxlW3QxXSwgdDEgICAgICAgICAgLy8gYXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1
bmM8dDE+LmV4ZWN1dGFibGU7CisgICAgICAgIG1vdmUgdDIsIGNmciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OworICAgICAg
ICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAgICAgICAgICAgICAvLyBjYWxs
IGV4ZWN1dGFibGU8dDE+LkNhbGxPckNvbnN0cnVjdDsKKworICAgICAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybih0MykgICAgICAgICAgICAvLyByZXR1cm5QQyA9IHNhdmVkUmV0
dXJuUEM8dDM+OworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwg
dDMgICAgICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2JhbERh
dGE7CisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIC8vIFNldCBnbG9iYWxEYXRhLnRvcENhbGxG
cmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNw
Pi5nbG9iYWxEYXRhOworICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxG
cmFtZVt0M10gICAgICAvLyBnbG9iYWxEYXRhPHQzPi50b3BDYWxsRnJhbWUgPSBjZnI7CisgICAg
ICAgIG1vdmUgdDAsIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNh
dmVkQ2FsbGVyRnJhbWU8dDI+ID0gY2FsbGVyRnJhbWU8dDA+OworICAgICAgICBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwodDMpICAgICAgICAgICAgICAvLyBzYXZlZFJldHVyblBDPHQz
PiA9IHJldHVyblBDOworICAgICAgICBzdG9yZXAgdDMsIFJldHVyblBDW2Nmcl0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDM+OworICAgICAgICAvLyBQYXNzIGN1
cnJlbnRGcmFtZSBhcyBhbiBhcmcgdG8gdGhlIHRhcmdldDoKKyAgICAgICAgbW92ZSBjZnIsIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMDogYXJnMDx0MD4gPSBj
ZnI7CisgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggcjAgPSBjdXJyZW50RnJhbWUs
IGNmciA9IG9sZEZyYW1lOiBXaHk/Pz8KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MSAgICAgICAgICAgLy8ganNmdW5jPHQxPiA9IGNmci5DYWxsZWUuUGF5bG9h
ZDsKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEgICAgICAg
ICAgLy8gYXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7CisgICAg
ICAgIG1vdmUgdDIsIGNmciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
ciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OworICAgICAgICAjIG1sYW0gY2FsbCBleGVjdXRhYmxl
T2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgICAgICAgICAgLy8gY2FsbCBleGVjdXRhYmxlPHQxPi5D
YWxsT3JDb25zdHJ1Y3Q7CisgICAgICAgIGN4eENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRv
RnVuY3Rpb25bdDFdICAgIC8vIGNhbGwgZXhlY3V0YWJsZTx0MT4uQ2FsbE9yQ29uc3RydWN0Owor
CisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQzKSAgICAgICAgICAg
IC8vIHJldHVyblBDID0gc2F2ZWRSZXR1cm5QQzx0Mz47CisgICAgICAgIGxvYWRwIEpJVFN0YWNr
RnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0
U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKICAgICBlbHNlICAKICAgICAgICAgZXJyb3IKICAg
ICBlbmQKLSAgICBiaW5lcSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10s
IEVtcHR5VmFsdWVUYWcsIC5leGNlcHRpb24KLSAgICByZXQKKyAgICBiaW5lcSBKU0dsb2JhbERh
dGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIEVtcHR5VmFsdWVUYWcsIC5leGNlcHRpb24g
Ly8gaWYgKGdsb2JhbERhdGE8dDM+LmV4Y2VwdGlvbixUYWcgIT0gRW1wdHlWYWx1ZVRhZykgZ290
byAuZXhjZXB0aW9uOworICAgIHJldF9tbGFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyByZXR1cm47CiAuZXhjZXB0aW9uOgogICAgIHByZXNlcnZlUmV0dXJu
QWRkcmVzc0FmdGVyQ2FsbCh0MSkgIyBUaGlzIGlzIHJlYWxseSBvbmx5IG5lZWRlZCBvbiBYODYK
LSAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgbG9hZGkg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQyAgICAgICAgICAgIC8vIHBjID0gY2Zy
LkFyZ3VtZW50Q291bnQuVGFnOwogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdGhyb3dfZnJvbV9u
YXRpdmVfY2FsbCkKLSAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xp
bmUKKyAgICBqdW1wVG9HbHVlKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
KQogZW5kCiAKKyMgbWxhbSBlbmQgIyBub3QgQ19MT09QCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywzNSBAQCBjb25zdCBWYWx1
ZVVuZGVmaW5lZCAgPSBUYWdCaXRUeXBlT3RoZXIgCiBjb25zdCBWYWx1ZU51bGwgICAgICAgPSBU
YWdCaXRUeXBlT3RoZXIKIAogIyBVdGlsaXRpZXMuCittYWNybyBqdW1wVG9QQygpCisgICAgaWYg
Q19MT09QCisgICAgICAgIGN4eE5leHRPcGNvZGUKKyAgICBlbHNlCisgICAgICAgIGptcCBbUEIs
IFBDLCA4XSAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CisgICAgZW5kCitl
bmQKKwogbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKLSAgICBhZGRwIGFkdmFuY2UsIFBDCi0gICAg
am1wIFtQQiwgUEMsIDhdCisgICAgYWRkcCBhZHZhbmNlLCBQQyAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKKyAgICBqdW1wVG9QQygpCiBlbmQKIAogbWFj
cm8gZGlzcGF0Y2hJbnQoYWR2YW5jZSkKICAgICBhZGRpIGFkdmFuY2UsIFBDCi0gICAgam1wIFtQ
QiwgUEMsIDhdCisgICAganVtcFRvUEMoKQogZW5kCiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxs
KCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9u
c1tQQl0sIFBCCi0gICAgam1wIFtQQiwgUEMsIDhdCisgICAganVtcFRvUEMoKQogZW5kCiAKIG1h
Y3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKLSAgICBtb3ZlIGFyZzEsIHQ1Ci0gICAg
bW92ZSBhcmcyLCB0NAotICAgIGNhbGwgZnVuY3Rpb24KKyAgICBtb3ZlIGFyZzEsIHQ1ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAgbW92ZSBhcmcyLCB0
NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcyID0gLi4uOworICAgIGNhbGwg
ZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9u
OwogZW5kCiAKICMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2Jh
Ymx5IGJlIGltbWVkaWF0ZXMuCkBAIC03MSw4ICs3OSw4IEBAIG1hY3JvIHByZXBhcmVTdGF0ZUZv
ckNDYWxsKCkKIGVuZAogCiBtYWNybyByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKLSAgICBtb3Zl
IHQwLCBQQwotICAgIG1vdmUgdDEsIGNmcgorICAgIG1vdmUgdDAsIFBDICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KKyAgICBtb3ZlIHQxLCBjZnIgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgIG1vdmUgdDMsIFBCCiAg
ICAgc3VicCBQQiwgUEMKICAgICB1cnNoaWZ0cCAzLCBQQwpAQCAtMTgwLDU4ICsxODgsODYgQEAg
ZW5kCiAKICMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCiAKKy8vIGJ5dGVjb2RlOiBlbnRl
cgorLy8KKy8vICAgSW5pdGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4gSWYg
dGhlIGNvZGUgYmxvY2sgcmVxdWlyZXMKKy8vICAgYW4gYWN0aXZhdGlvbiwgZW50ZXJfd2l0aF9h
Y3RpdmF0aW9uIGlzIHVzZWQgaW5zdGVhZC4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5
IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfZW50ZXI6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAg
ICAgICAgICAvLyB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNvZGVCbG9jawogICAgIGxvYWRpIENvZGVC
bG9jazo6bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2Nr
Pi5tX251bVZhcnMKLSAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKLSAgICBtb3ZlIFZhbHVlVW5k
ZWZpbmVkLCB0MAorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZSAgICAgICAgICAgICAgICAgICAv
LyBpZiAobnVtVmFyczx0Mj4gPT0gMCkgZ290byAuZG9uZTsKKyAgICBtb3ZlIFZhbHVlVW5kZWZp
bmVkLCB0MCAgICAgICAgICAgICAgICAgLy8ganNVbmRlZmluZWQ8dDA+ID0gVW5kZWZpbmVkOwog
Lm9wRW50ZXJMb29wOgotICAgIHN1YmkgMSwgdDIKLSAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4
XQotICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKyAgICBzdWJpIDEsIHQyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBudW1WYXJzPHQyPi0tOworICAgIHN0b3JlcCB0MCwgW2Nm
ciwgdDIsIDhdICAgICAgICAgICAgICAgICAvLyAgIGNmcltudW1WYXJzPHQyPl0gPSBqc1VuZGVm
aW5lZDx0MD47CisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcCAgICAgICAgICAgICAgICAgIC8v
IGlmIChudW1WYXJzPHQyPiAhPSAwKSBnb3RvIC5sb29wOwogLm9wRW50ZXJEb25lOgotICAgIGRp
c3BhdGNoKDEpCisgICAgZGlzcGF0Y2goMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogY3JlYXRlX2FjdGl2YXRpb24g
ZHN0KHIpCisvLworLy8gICBJZiB0aGUgYWN0aXZhdGlvbiBvYmplY3QgZm9yIHRoaXMgY2FsbGZy
YW1lIGhhcyBub3QgeWV0IGJlZW4gY3JlYXRlZCwKKy8vICAgdGhpcyBjcmVhdGVzIGl0IGFuZCB3
cml0ZXMgaXQgYmFjayB0byBkc3QuCiAKIF9sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBicG5l
cSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCi0gICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pCisgICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
Y3RpdmF0aW9uUmVnPHQwPiA9IG9wZXJhbmQ8ZHN0UmVnSWQ+OworICAgIGJwbmVxIFtjZnIsIHQw
LCA4XSwgVmFsdWVFbXB0eSwgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUgLy8gaWYgKGNmclthY3Rp
dmF0aW9uUmVnPHQwPl0gIT0gRW1wdHkpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pICAgICAgICAvLyBjYWxsIHNsb3dfcGF0
aF9jcmVhdGVfYWN0aXZhdGlvbjsKIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgotICAgIGRpc3Bh
dGNoKDIpCisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGluaXRf
bGF6eV9yZWcgZHN0KHIpCisvLworLy8gICBJbml0aWFsaXNlcyBkc3QocikgdG8gSlNWYWx1ZSgp
LgorLy8gICBUaGlzIG9wY29kZSBhcHBlYXJzIG9ubHkgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNv
ZGUgYmxvY2suCiAKIF9sbGludF9vcF9pbml0X2xhenlfcmVnOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIHN0b3JlcCBWYWx1ZUVtcHR5LCBb
Y2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQw
ICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kPGRzdFJlZ0lkPjsKKyAgICBzdG9yZXAg
VmFsdWVFbXB0eSwgW2NmciwgdDAsIDhdICAgICAvLyBjZnJbZHN0PHQwPl0gPSBFbXB0eTsKKyAg
ICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CisKIAorLy8gYnl0ZWNvZGU6IGNyZWF0ZV9hcmd1bWVudHMgZHN0KHIpCisvLworLy8gICBD
cmVhdGVzIHRoZSAnYXJndW1lbnRzJyBvYmplY3QgYW5kIHBsYWNlcyBpdCBpbiBib3RoIHRoZQor
Ly8gICAnYXJndW1lbnRzJyBjYWxsIGZyYW1lIHNsb3QgYW5kIHRoZSBsb2NhbCAnYXJndW1lbnRz
JworLy8gICByZWdpc3RlciwgaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQu
CiAKIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIGJwbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVF
bXB0eSwgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCisgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZDxkc3RSZWdJ
ZD47CisgICAgYnBuZXEgW2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVhdGVBcmd1bWVu
dHNEb25lICAvLyBpZiAoY2ZyW2RzdDx0MD5dICE9IEVtcHR5KSBnb3RvIC5kb25lOworICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpICAgICAgICAgLy8g
Y2FsbCBzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50czsKIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6
Ci0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRl
Y29kZTogb3BfY3JlYXRlX3RoaXMgdGhpcyhyKSBwcm90byhyKQorLy8KKy8vICAgQWxsb2NhdGUg
YW4gb2JqZWN0IGFzICd0aGlzJywgZm9yIHVzZSBpbiBjb25zdHJ1Y3Rpb24uCisvLyAgIFRoaXMg
b3Bjb2RlIHNob3VsZCBvbmx5IGJlIHVzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNvZGUgYmxv
Y2suCiAKIF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9jYWNoZWRJbmhl
cml0b3JJRFt0MF0sIHQyCi0gICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpczx0
MD4gPSBjZnIuQ2FsbGVlOworICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9y
SURbdDBdLCB0MiAgICAgICAvLyBpbmhlcml0b3I8dDI+ID0gdGhpczx0MD4uY2FjaGVkSW5oZXJp
dG9ySUQ7CisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlmIChpbmhlcml0b3IgPT0gMCkgZ290byAuc2xvdzsKKyAgICAvLyBhbGxvY2F0
ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBqc0ZpbmFsT2JqZWN0
LmNsYXNzLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpOwogICAgIGFsbG9jYXRl
QmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93
KQotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCi0gICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwg
OF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGlzSUQ8dDE+ID0gb3BlcmFuZDx0aGlzUmVnSWQ+Owor
ICAgIHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbdGhpc0lEPHQxPl0gPSB0aGlzPHQwPjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAu
b3BDcmVhdGVUaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVh
dGVfdGhpcykKLSAgICBkaXNwYXRjaCgyKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2NyZWF0ZV90aGlzKSAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfdGhpczsK
KyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIF9sbGludF9vcF9jb252ZXJ0X3RoaXM6CkBAIC01
MDIsMTYgKzUzOCwxNiBAQCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRp
CiAgICAgYnBhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDFOb3RJbnRPcDJJbnQKICAgICBidHB6
IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAg
ICBmcDJkIHQxLCBmdDEKKyMgbWxhbSAgICBmcDJkIHQxLCBmdDEKICAgICBqbXAgLm9wMU5vdElu
dFJlYWR5CiAub3AxTm90SW50T3AySW50OgogICAgIGNpMmQgdDEsIGZ0MQogLm9wMU5vdEludFJl
YWR5OgogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQyCiAgICAgYWRkcCB0YWdUeXBlTnVtYmVy
LCB0MAotICAgIGZwMmQgdDAsIGZ0MAorIyBtbGFtICAgIGZwMmQgdDAsIGZ0MAogICAgIGRvdWJs
ZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBmZDJwIGZ0MCwgdDAKKyMgbWxhbSAgICBmZDJwIGZ0
MCwgdDAKICAgICBzdWJwIHRhZ1R5cGVOdW1iZXIsIHQwCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0
MiwgOF0KICAgICBkaXNwYXRjaCg1KQpAQCAtNTIyLDkgKzU1OCw5IEBAIG1hY3JvIGJpbmFyeU9w
Q3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGkKICAgICBidHB6IHQxLCB0YWdUeXBlTnVtYmVyLCAu
c2xvdwogICAgIGNpMmQgdDAsIGZ0MAogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBm
cDJkIHQxLCBmdDEKKyMgbWxhbSAgICBmcDJkIHQxLCBmdDEKICAgICBkb3VibGVPcGVyYXRpb24o
ZnQxLCBmdDApCi0gICAgZmQycCBmdDAsIHQwCisjIG1sYW0gICAgZmQycCBmdDAsIHQwCiAgICAg
c3VicCB0YWdUeXBlTnVtYmVyLCB0MAogICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCiAgICAg
ZGlzcGF0Y2goNSkKQEAgLTEyOTAsMTAgKzEzMjYsMTAgQEAgbWFjcm8gY29tcGFyZShpbnRlZ2Vy
Q29tcGFyZSwgZG91YmxlQ29tcAogLm9wMU5vdEludE9wMk5vdEludDoKICAgICBidHB6IHQxLCB0
YWdUeXBlTnVtYmVyLCAuc2xvdwogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBmcDJk
IHQxLCBmdDEKKyMgbWxhbSAgICBmcDJkIHQxLCBmdDEKIC5vcDFOb3RJbnRSZWFkeToKICAgICBh
ZGRwIHRhZ1R5cGVOdW1iZXIsIHQwCi0gICAgZnAyZCB0MCwgZnQwCisjIG1sYW0gICAgZnAyZCB0
MCwgZnQwCiAgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCiAgICAgZGlz
cGF0Y2goNCkKIApAQCAtMTMwMSw3ICsxMzM3LDcgQEAgbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29t
cGFyZSwgZG91YmxlQ29tcAogICAgIGNpMmQgdDAsIGZ0MAogICAgIGJ0cHogdDEsIHRhZ1R5cGVO
dW1iZXIsIC5zbG93CiAgICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0
MQorIyBtbGFtICAgIGZwMmQgdDEsIGZ0MQogICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5q
dW1wVGFyZ2V0KQogICAgIGRpc3BhdGNoKDQpCiAKQEAgLTE1NjIsNiArMTU5OCw4IEBAIF9sbGlu
dF9vcF9lbmQ6CiAgICAgbG9hZHAgW2NmciwgdDAsIDhdLCB0MAogICAgIGRvUmV0dXJuKCkKIAor
IyBtbGFtIE9CU09MRVRFIGlmIENfTE9PUAorIyBtbGFtIE9CU09MRVRFIGVsc2UgIyBub3QgQ19M
T09QCiAKIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOgogICAgICMgV2hl
biB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50
U2xvd1BhdGhzKSwgc28KQEAgLTE1ODcsNyArMTYyNSw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFt
cG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICBsb2FkcCBTY29wZUNoYWluW3QwXSwgdDEKICAgICBz
dG9yZXAgdDEsIFNjb3BlQ2hhaW5bY2ZyXQogICAgIHBlZWsgMCwgdDEKLSAgICBzdG9yZXAgdDEs
IFJldHVyblBDW2Nmcl0KKyAgICBzdG9yZXAgdDEsIFJldHVyblBDW2Nmcl0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDE+OwogICAgIG1vdmUgY2ZyLCB0NSAgIyB0
NSA9IHJkaQogICAgIHN1YnAgMTYgLSA4LCBzcAogICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0NCAj
IHQ0ID0gcnNpCkBAIC0xNTk3LDcgKzE2MzUsNyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGlu
ZShleGVjdXRhYmxlT2ZmCiAgICAgYWRkcCAxNiAtIDgsIHNwCiAgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YSArIDhbc3BdLCB0MwogICAgIGJ0cG56IEpTR2xvYmFsRGF0YTo6ZXhj
ZXB0aW9uW3QzXSwgLmV4Y2VwdGlvbgotICAgIHJldAorICAgIHJldF9tbGFtCiAuZXhjZXB0aW9u
OgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkKICAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCkBAIC0xNjA4LDQgKzE2NDYsNSBAQCBtYWNy
byBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF90aHJvd19mcm9tX25hdGl2ZV9jYWxsKQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZQogZW5kCisjIG1sYW0gT0JTT0xFVEUgZW5kICMgbm90IENfTE9P
UAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTExMCwy
MSArMTEwLDQzIEBAIGVuZAogCiAjIFNvbWUgY29tbW9uIHV0aWxpdGllcy4KIG1hY3JvIGNyYXNo
KCkKLSAgICBzdG9yZWkgdDAsIDB4YmJhZGJlZWZbXQotICAgIG1vdmUgMCwgdDAKLSAgICBjYWxs
IHQwCisgICAgLy8gbWFjcm8gY3Jhc2goKSB7CisgICAgaWYgQ19MT09QCisgICAgICAgIGN4eENy
YXNoCisgICAgZWxzZQorICAgICAgICBzdG9yZWkgdDAsIDB4YmJhZGJlZWZbXQorICAgICAgICBt
b3ZlIDAsIHQwCisgICAgICAgIGNhbGwgdDAKKyAgICBlbmQKKyAgICAvLyB9IEVORCBjcmFzaC4K
IGVuZAogCiBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQogICAgIGlmIEFTU0VSVF9FTkFCTEVECisg
ICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgICAgICBhc3NlcnRpb24oLm9rKQog
ICAgICAgICBjcmFzaCgpCiAgICAgLm9rOgorICAgIC8vIH0gRU5EIGFzc2VydC4KKyAgICBlbmQK
K2VuZAorCittYWNybyBpbmRpcmVjdEp1bXAodGFyZ2V0KQorICAgIGlmIENfTE9PUAorICAgICAg
ICBjeHhJbmRpcmVjdEp1bXAgdGFyZ2V0CisgICAgZWxzZQorICAgICAgICBqbXAgdGFyZ2V0CiAg
ICAgZW5kCiBlbmQKIAogbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3Rp
bmF0aW9uUmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4KKyAgICBpZiBD
X0xPT1AKKyAgICAgICAgIyBJbiBvdXIgY2FzZSwgd2UncmUgb25seSBwcmVzZXJ2aW5nIHRoZSBi
eXRlY29kZSB2UEMuIAorICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAg
ICAgIG1sYW1EbyAvLyBwcmludGYoIiAgICoqKiBtbGFtIDo6IEdldHRpbmcgUmV0dXJuUEMgJXAg
KioqXG4iLCByUmV0VlBDLnUudnApOworICAgICAgICBtbGFtRG8gLy8gQVNTRVJUKHJSZXRWUEMu
dS52cCAhPSAwKTsKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlv
blJlZ2lzdGVyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl82NAogICAgICAgICBwb3AgZGVzdGluYXRp
b25SZWdpc3RlcgpAQCAtMTM0LDcgKzE1NiwxMyBAQCBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoZGVzCiBlbmQKIAogbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4oc291cmNlUmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4gICAg
CisgICAgaWYgQ19MT09QCisgICAgICAgICMgSW4gb3VyIGNhc2UsIHdlJ3JlIG9ubHkgcmVzdG9y
aW5nIHRoZSBieXRlY29kZSB2UEMuIAorICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgor
ICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICAqKiogbWxhbSA6OiBTZXR0aW5nIFJldHVyblBD
ICVwICoqKlxuIiwgclJldFZQQy51LnZwKTsKKyAgICAgICAgbWxhbURvIC8vIEFTU0VSVChyUmV0
VlBDLnUudnAgIT0gMCk7CisgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbW92ZSBzb3VyY2VSZWdp
c3RlciwgbHIKICAgICBlbHNpZiBYODYgb3IgWDg2XzY0CiAgICAgICAgIHB1c2ggc291cmNlUmVn
aXN0ZXIKQEAgLTE0NCw2ICsxNzIsOSBAQCBtYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybihzCiBlbmQKIAogbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgICMgbWxhbSBOT1Qg
TkVFREVEIGlmIENfTE9PUAorICAgICMgICAgY3h4VHJhY2UgICMgbWFrZSBzdXJlIHRvIHJlbW92
ZSB0aGlzIG9wY29kZSBmcm9tIHRoZSBpbnN0cnVjdGlvbnMuCisgICAgI2VuZAogICAgIGlmIEVY
RUNVVElPTl9UUkFDSU5HCiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdHJhY2UpCiAgICAg
ZW5kCkBAIC0xNTQsOCArMTg1LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNs
b3dQYXRoKQogICAgICAgICBhZHZhbmNlLAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgbWFj
cm8gKGNhbGxlZSkKLSAgICAgICAgICAgIGNhbGwgY2FsbGVlCi0gICAgICAgICAgICBkaXNwYXRj
aEFmdGVyQ2FsbCgpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb25CeUNhbGxlZShjYWxs
ZWUpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0xNzcsNyArMjA3LDcgQEAgbWFjcm8gY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKIGVuZAogCiBtYWNybyBhc3NlcnROb3RDb25zdGFudChp
bmRleCkKLSAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgb2sgZW5kKQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpIC8vIGFzc2VydChpbmRleDxhMD4gPCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CiBlbmQKIAogbWFjcm8gZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQpAQCAtMjA0LDMyICsyMzQsNTggQEAgbWFj
cm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUgogICAgICMgTm90aGluZyB0byBk
byEKIGVuZAogCisjIG1sYW0gQkVHSU4KK21hY3JvIGp1bXBUb0dsdWUoZ2x1ZUNvZGVUYXJnZXQp
CisgICAgaWYgKENfTE9PUCkKKyAgICAgICAgY3h4SnVtcFRvR2x1ZSBnbHVlQ29kZVRhcmdldAor
ICAgIGVsc2UKKyAgICAgICAgam1wIGdsdWVDb2RlVGFyZ2V0CisgICAgZW5kCitlbmQKKyMgbWxh
bSBFTkQKKwogIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4g
U2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCiAjIGluIHQxLiBNYXkgYWxzbyB0
cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKLSAgICBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgbWxhbURvIC8vIHByaW50ZigiXG5c
biAgID09PT09PT09PT09PT09PT09PT09PT09PT09IFxuICAgKioqIG1sYW0gOjogSW4gcHJvbG9n
dWUgKioqXG4iKTsKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpICAgICAg
ICAgICAgICAgICAgLy8gZ2V0IHJldHVyblBDPHQyPjsKICAgICAKICAgICAjIFNldCB1cCB0aGUg
Y2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICBzdG9yZXAgdDIsIFJl
dHVyblBDW2Nmcl0KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQyPjsKICAgICBpZiBFWEVDVVRJT05fVFJB
Q0lORwogICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0aCkKICAgICBlbmQKLSAgICBj
b2RlQmxvY2tHZXR0ZXIodDEpCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGdldCBjb2RlQmxvY2s8dDE+OwogICAgIGlmIEpJVF9FTkFC
TEVECiAgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlciAr
IEV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlclt0MV0sIC5jb250aW51ZQogICAgICAgICBjQ2Fs
bDIob3NyU2xvd1BhdGgsIGNmciwgUEMpCisKKyAgICAgICAgIyBVcGRhdGUgdGhlIGN1cnJlbnRG
cmFtZVBvaW50ZXI6CiAgICAgICAgIG1vdmUgdDEsIGNmcgorCisgICAgICAgICMgdDAgbXVzdCBl
aXRoZXIgYmUgMCBvciBwb2ludHMgdG8gZXhlY3V0YWJsZSBjb2RlIGUuZy4gSklUdGVkIGNvZGUu
CisgICAgICAgICMgSWYgaXQgaXMgMCwgdGhlbiB3ZSBkb24ndCBoYXZlIGEgbmF0aXZlIGNvZGUg
dGFyZ2V0IHRvIGV4ZWN1dGUuCisgICAgICAgICMgR28gcmVjb3ZlciBvdXIgc3RhdGUgYW5kIHN0
YXJ0IGludGVycHJldGluZyB0aGlzIGZ1bmN0aW9uLgogICAgICAgICBidHB6IHQwLCAucmVjb3Zl
cgotICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgotICAgICAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybih0MikKLSAgICAgICAgam1wIHQwCisKKyAgICAgICAgIyBJZiBp
dCBpcyBub3QgMCwgdGhlbiwgd2UgaGF2ZSBhIG5hdGl2ZSBmdW5jdGlvbiB0byBjYWxsIChKSVR0
ZWQgb3IKKyAgICAgICAgIyBvdGhlcndpc2UpLiBEbyBhIHRhaWxjYWxsIHRvIHRoZSB0YXJnZXQg
Y29kZS4KKyAgICAgICAgZG9UYWlsQ2FsbCh0MCkKKyAgICAgICAgIyBtbGFtIGxvYWRwIFJldHVy
blBDW2Nmcl0sIHQyCisgICAgICAgICMgbWxhbSByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybih0MikKKyAgICAgICAgIyBtbGFtIGptcCB0MAorCisgICAgICAgICMgSWYgd2UgZ2V0IGhl
cmUsIHRoZW4gdGhlIG9zciBsb2dpYyBoYXMgZGV0ZXJtaW5lZCB0aGF0IHRoZXJlIGlzbid0IGFu
eQorICAgICAgICAjIEpJVHRlZCBjb2RlIHRvIGludm9rZSBhdCB0aGlzIHRpbWUuICBSZWZldGNo
IHRoZSBjdXJyZW50IGNvZGVibG9jayAoYXMKKyAgICAgICAgIyBpdCBtYXkgaGF2ZSBjaGFuZ2Vk
KSwgYW5kIGZhbGwgdGhydSB0byAuY29udGludWUgdG8gZ28gaW50ZXJwcmV0IHRoZQorICAgICAg
ICAjIGZ1bmN0aW9uLgogICAgIC5yZWNvdmVyOgogICAgICAgICBjb2RlQmxvY2tHZXR0ZXIodDEp
CiAgICAgLmNvbnRpbnVlOgogICAgIGVuZAotICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICBj
b2RlQmxvY2tTZXR0ZXIodDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAg
ICAKLSAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgIyBTZXQgdXAgdGhlIFBDLiAgVGhlIGNhbGxl
ciB3aWxsIGRpc3BhdGNoL2p1bXAgdG8gdGhpcyBieXRlY29kZSBQQyBhZGRyLgogICAgIGlmIEpT
VkFMVUU2NAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
ICAgICAgICAgbW92ZSAwLCBQQwpAQCAtMjg5LDcgKzM0NSw3IEBAIGVuZAogCiBtYWNybyBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0
dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCiAgICAgaWYgQUxXQVlT
X0FMTE9DQVRFX1NMT1cKLSAgICAgICAgam1wIHNsb3dDYXNlCisgICAgICAgIGptcCBzbG93Q2Fz
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGdvdG8gLnNsb3dD
YXNlOwogICAgIGVsc2UKICAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9CiAgICAg
ICAgICAgICBKU0dsb2JhbERhdGE6OmhlYXAgKwpAQCAtMzAzLDUwICszNTksNzggQEAgbWFjcm8g
YWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZAogICAgICAgICAgICAgTWFya2VkQmxv
Y2s6OkZyZWVMaXN0OjpoZWFkCiAKICAgICAgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xv
YmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCi0gICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBzY3JhdGNoMQotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3Jh
dGNoMSAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhND4gPSBjZnIuQ29kZUJs
b2NrOworICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNj
cmF0Y2gxICAgLy8gICBnbG9iYWxEYXRhPGE0PiA9IGNvZGVCbG9jazxhND4uZ2xvYmFsRGF0YTsK
ICAgICAgICAgCi0gICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAg
IAotICAgICAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXSwgcmVzdWx0Ci0gICAgICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAg
ICAgICAvLyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCisgICAgICAgIGxv
YWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFd
LCByZXN1bHQgLy8gICByZXN1bHQ8YTM+ID0gZ2xvYmFsRGF0YTxhND4uTXlTaXplQ2xhc3MuRmly
c3RGcmVlQ2VsbDsKKyAgICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgaWYgKCFyZXN1bHQ8YTM+IGkuZS4gbm8gZnJlZSBjZWxsKSBn
b3RvIC5zbG93Q2FzZTsKICAgICAgICAgCi0gICAgICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJv
bSB0aGUgZnJlZSBsaXN0LgotICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKLSAgICAg
ICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZy
ZWVDZWxsW3NjcmF0Y2gxXQorICAgICAgICAvLyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBm
cmVlIGxpc3QuCisgICAgICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIG5leHQ8YTU+ID0gcmVzdWx0PGEzPi5wdHI7CisgICAgICAgIHN0
b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9mRmlyc3RGcmVlQ2Vs
bFtzY3JhdGNoMV0gLy8gICBnbG9iYWxEYXRhPGE0Pi5NeVNpemVDbGFzcy5GaXJzdEZyZWVDZWxs
ID0gbmV4dDxhNT47CiAgICAgCi0gICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAg
ICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgotICAgICAgICBz
dG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQotICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5o
ZXJpdG9ySURbcmVzdWx0XQotICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fb3V0T2ZMaW5l
U3RvcmFnZVtyZXN1bHRdCisgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICAg
ICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIgICAgICAgICAgIC8v
ICAgY2xhc3NJbmZvPGE1PiA9IGdsb2JhbERhdGE8YTQ+LmNsYXNzSW5mb09mZnNldDsKKyAgICAg
ICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgcmVzdWx0PGEzPi5wdHIgPSBjbGFzc0luZm88YTU+OworICAgICAgICBzdG9yZXAgc3RydWN0
dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0gICAgICAgLy8gICByZXN1bHQ8YTM+LnN0
cnVjdHVyZSA9IHN0cnVjdHVyZTxhMj47CisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9p
bmhlcml0b3JJRFtyZXN1bHRdICAgICAgICAgICAvLyAgIHJlc3VsdDxhMz4uaW5oZXJpdG9ySUQg
PSAwOworICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtyZXN1
bHRdICAgICAgLy8gICByZXN1bHQ8YTM+Lm91dE9mTGluZVN0b3JhZ2UgPSAwOwogICAgIGVuZAog
ZW5kCiAKIG1hY3JvIGRvUmV0dXJuKCkKLSAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgotICAg
IGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIG1sYW1EbyAgLy8gaWYgKG1sYW1fUFJJ
TlRGKSBwcmludGYoIlxuIG1sYW0gOjogUFJJTlQgZG9SZXR1cm4oKSB8IHJldHVyblBDPHQyPiA9
IGNmci5SZXR1cm5QQztcblxuIik7CisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5QQzx0Mj4gPSBjZnIuUmV0dXJuUEM7
CisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjZnIgPSBjZnIuQ2FsbGVyRnJhbWU7CiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4odDIpCi0gICAgcmV0CisgICAgcmV0X21sYW0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyByZXR1cm47CiBlbmQKIAorbWFjcm8g
ZG9UYWlsQ2FsbChjYWxsVGFyZ2V0KQorICAgIGlmIENfTE9PUAorICAgICAgICAjIEZvciBjKysg
Y29kZSwgd2UgZG9uJ3QgbWFuYWdlIHRoZSByZXR1cm4gUEMgZGlyZWN0bHkuICBFbWl0IGEKKyAg
ICAgICAgIyB0YWlsY2FsbCBpZGlvbSBhbmQgbGV0IHRoZSBjb21waWxlciBvcHRpbWl6ZSBpdCBp
bnRvIGEgcmVhbCB0YWlsIGNhbGwKKyAgICAgICAgIyBpZiBwb3NzaWJsZS4KKyAgICAgICAgY3Jh
c2goKQorICAgICAgICAjY3h4VGFpbENhbGwgdDAKKyAgICBlbHNlCisgICAgICAgICMgVG8gZG8g
YSB0YWlsIGNhbGwsIHdlIG5lZWQgdG8gcmVzdG9yZSB0aGUgcmV0dXJuUEMgYmVmb3JlIHdlIGp1
bXAgdG8KKyAgICAgICAgIyB0aGUgY2FsbCB0YXJnZXQgc28gdGhhdCBpdCBsb29rcyBsaWtlIHdl
IGNhbGxlZCBpdCBkaXJlY3RseSBmcm9tIG91cgorICAgICAgICAjIGNhbGxlci4gIFRoaXMgd2F5
LCB0aGUgbmF0aXZlIGNvZGUgY2FuIGJ5cGFzcyB1cyB3aGVuIHJldHVybmluZyB0byBvdXIKKyAg
ICAgICAgIyBjYWxsZXIuCisgICAgICAgIG1sYW1EbyAgLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmlu
dGYoIlxuIG1sYW0gOjogUFJJTlQgZG9UYWlsQ2FsbCgpIHwgPHQyPiA9IGNmci5SZXR1cm5QQztc
blxuIik7CisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyA8dDI+ID0gY2ZyLlJldHVyblBDOworICAgICAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgZW5kCitlbmQKKwor
IyBtbGFtIGlmIENfTE9PUAorIyBtbGFtIGVsc2UgIyBub3QgQ19MT09QCiAKICMgSW5kaWNhdGUg
dGhlIGJlZ2lubmluZyBvZiBMTEludC4KIF9sbGludF9iZWdpbjoKICAgICBjcmFzaCgpCiAKKyMg
bWxhbSBlbmQgIyBub3QgQ19MT09QCisjIG1sYW0gV2UncmUgZ29pbmcgdG8gdHJ5IHRvIHVzZSB0
aGUgZm9sbG93aW5nIGFzIGFyaXR5IGZpeCB1cCBkaXNwYXRjaGVzOgogCiBfbGxpbnRfcHJvZ3Jh
bV9wcm9sb2d1ZToKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoq
KioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X3Byb2dyYW1fcHJvbG9ndWVcblxuIik7
CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAg
ICAgZGlzcGF0Y2goMCkKIAogCiBfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBtbGFtRG8gLy8g
aWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0g
X2xsaW50X2V2YWxfcHJvbG9ndWVcblxuIik7CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2Rl
QmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3Ny
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIAogCiBfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CisgICAgbWxhbURvIC8vIHByaW50ZigiXG5cbiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBcbiAgICoqKiBtbGFt
IDo6IEluIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlICoqKlxuIik7CisgICAgbWxh
bURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioqKioqKioqKioq
KiBtbGFtIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZVxuXG4iKTsKICAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCiAuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CiAgICAgZnVu
Y3Rpb25Jbml0aWFsaXphdGlvbigwKQpAQCAtMzU0LDYgKzQzOCw3IEBAIF9sbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9wcm9sb2d1ZToKICAgICAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAq
KioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdCkKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlh
bGl6YXRpb24oMSkKQEAgLTM2MSwxNCArNDQ2LDE4IEBAIF9sbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlOgogICAgIAogCiBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2s6CisgICAgbWxhbURvIC8vIHByaW50ZigiXG5cbiA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSBcbiAgICoqKiBtbGFtIDo6IEluIGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrICoqKlxuIik7CisgICAgbWxhbURvIC8vIGlmIChtbGFt
X1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1xuXG4iKTsKICAgICBwcm9sb2d1ZShmdW5jdGlv
bkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxs
QmVnaW4sIF9sbGludF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogCiAKIF9sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9Q
UklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1xuXG4iKTsKICAgICBwcm9sb2d1ZShmdW5j
dGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxp
bnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlDaGVj
ayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X3Nsb3dfcGF0aF9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaykKIAorIyBtbGFtIGVuZCAjIG5vdCBDX0xPT1AKIAogIyBWYWx1ZS1yZXByZXNl
bnRhdGlvbi1zcGVjaWZpYyBjb2RlLgogaWYgSlNWQUxVRTY0CkBAIC01MzYsNiArNjI1LDcgQEAg
X2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKICAgICBub3AKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJc
biA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
XG5cbiIpOwogICAgIGp1bXBUcnVlT3JGYWxzZSgKICAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJn
ZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2p0
cnVlKQpAQCAtNTQ1LDYgKzYzNSw3IEBAIF9sbGludF9vcF9sb29wX2lmX2ZhbHNlOgogICAgIG5v
cAogX2xsaW50X29wX2pmYWxzZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8v
IGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG5cbiIpOwogICAgIGp1bXBUcnVlT3JGYWxzZSgK
ICAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCiAg
ICAgICAgIF9sbGludF9zbG93X3BhdGhfamZhbHNlKQpAQCAtNTYwLDYgKzY1MSwxMyBAQCBfbGxp
bnRfb3Bfamxlc3M6CiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfamxlc3MpCiAKIAorLy8gYnl0
ZWNvZGU6IGpubGVzcyBzcmMxKHIpIHNyYzIocikgdGFyZ2V0KG9mZnNldCkKKy8vCisvLyAgIENo
ZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgbGVzcyB0aGFuIHJlZ2lzdGVyIHNyYzIsIGFz
CisvLyAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJzwnIG9wZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0
byBvZmZzZXQKKy8vICAgdGFyZ2V0IGZyb20gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFu
ZCBvbmx5IGlmIHRoZSAKKy8vICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLgor
CiBfbGxpbnRfb3Bfam5sZXNzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjb21wYXJlKApA
QCAtNjQwLDYgKzczOCwxNSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGRpc3BhdGNo
KDMpCiAKIAorLy8gYnl0ZWNvZGU6IGNhbGwgZnVuYyhyKSBhcmdDb3VudChuKSByZWdpc3Rlck9m
ZnNldChuKQorLy8KKy8vICAgUGVyZm9ybSBhIGZ1bmN0aW9uIGNhbGwuCisvLyAgICAgICAgICAg
CisvLyAgIHJlZ2lzdGVyT2Zmc2V0IGlzIHRoZSBkaXN0YW5jZSB0aGUgY2FsbEZyYW1lIHBvaW50
ZXIgc2hvdWxkIG1vdmUKKy8vICAgYmVmb3JlIHRoZSBWTSBpbml0aWFsaXplcyB0aGUgbmV3IGNh
bGwgZnJhbWUncyBoZWFkZXIuCisvLyAgICAgICAgICAgCisvLyAgIGRzdCBpcyB3aGVyZSBvcF9y
ZXQgc2hvdWxkIHN0b3JlIGl0cyByZXN1bHQuCisKIF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBkb0NhbGwoX2xsaW50X3Nsb3dfcGF0aF9jYWxsKQpAQCAtNjkzLDEw
ICs4MDAsMTMgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICAKICAgICBzbG93UGF0aEZvckNh
bGwoNCwgX2xsaW50X3Nsb3dfcGF0aF9jYWxsX2V2YWwpCiAKKyMgbWxhbSBpZiBDX0xPT1AKKyMg
bWxhbSBlbHNlICMgbm90IENfTE9PUAogCiBfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6CiAg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoKQogCisjIG1sYW0gZW5kICMgbm90IENfTE9PUAogCiBfbGxp
bnRfb3Bfc3RyY2F0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKQEAgLTc2MywxNCArODczLDE5IEBA
IF9sbGludF9vcF9kZWJ1ZzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWJ1
ZykKICAgICBkaXNwYXRjaCg0KQogCisjIG1sYW0gaWYgQ19MT09QCisjIG1sYW0gZWxzZSAjIG5v
dCBDX0xPT1AKIAogX2xsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmU6CisgICAgbWxhbURvIC8v
IGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioqKioqKioqKioqKiBtbGFt
IF9sbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lXG5cbiIpOwogICAgIG5hdGl2ZUNhbGxUcmFt
cG9saW5lKE5hdGl2ZUV4ZWN1dGFibGU6Om1fZnVuY3Rpb24pCiAKIAogX2xsaW50X25hdGl2ZV9j
b25zdHJ1Y3RfdHJhbXBvbGluZToKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmlu
dGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X25hdGl2ZV9jb25zdHJ1
Y3RfdHJhbXBvbGluZVxuXG4iKTsKICAgICBuYXRpdmVDYWxsVHJhbXBvbGluZShOYXRpdmVFeGVj
dXRhYmxlOjptX2NvbnN0cnVjdG9yKQogCisjIG1sYW0gZW5kICMgbm90IENfTE9PUAogCiAjIExh
c3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3Vw
cG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hl
biB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKQEAgLTgzNSw4ICs5NTAsMTEg
QEAgX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgogX2xsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uOgogICAgIG5vdFN1cHBvcnRlZCgpCiAKKyMgbWxhbSBpZiBDX0xPT1AKKyMgbWxhbSBl
bHNlICMgbm90IENfTE9PUAogCiAjIEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCiBfbGxpbnRf
ZW5kOgogICAgIGNyYXNoKCkKIAorIyBtbGFtIGVuZCAjIG5vdCBDX0xPT1AKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNTgyIEBACiAjaW5j
bHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5o
PgogCisvLyBtbGFtIEJFR0lOCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxMaW50U2xv
d1BhdGhzLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQorI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkxMSW50OworCisvLyBUaGUg
c2hhcGUgb2Ygb3Bjb2RlcworLy8gPT09PT09PT09PT09PT09PT09PT0KKy8vIEluIHRoZSBMTElu
dCBzeXN0ZW0sIG9wY29kZXMgbWFuaWZlc3QgaW4gdmFyaW91cyBmb3JtcyB0aGF0IHdvcmsgdG9n
ZXRoZXIuCisvLyBUaGVzZSBmb3JtcyBhcmU6CisvLyAgIDEuIFRoZSBlbnVtZXJhdGlvbgorLy8g
ICAgICA9PT09PT09PT09PT09PT0KKy8vICAgICAgQnl0ZWNvZGUgb3Bjb2RlcyBhcmUgZW51bWVy
YXRlZCBhcyBPcGNvZGVJRCdzIGluIGJ5dGVjb2RlL09wY29kZS5oCisvLworLy8gICAgICBUaGUg
TExpbnQgdXNlcyBzb21lIGhlbHBlciBnbHVlIGNvZGUuICBXaXRoIHRoZSBDIGxvb3AgaW50ZXJw
cmV0ZXIsCisvLyAgICAgIHdlIG5lZWQgdG8gcmVwcmVzZW50IHRoZXNlIGhlbHBlciBnbHVlIGNv
ZGUgYXMgcHNldWRvIG9wY29kZSBoYW5kbGVycworLy8gICAgICBhcyB3ZWxsIHRvIGFsbG93IHVz
IHRvIGVtcGxveSBhIHVuaWZpZWQgZGlzcGF0Y2ggbWVjaGFuaXNtIHRvIGludm9rZQorLy8gICAg
ICB0aGVzZSBoZWxwZXJzIGFzIHdlIGRvIHdpdGggb3Bjb2RlIGhhbmRsZXJzLiAgSGVuY2UsIHdp
dGggdGhlIEMgbG9vcCwKKy8vICAgICAgd2UgYWNjZXNzIG5lZWQgdG8gcHJlc2VudCB0aGUgZ2x1
ZSBjb2RlIGFzIHBzZXVkbyBvcGNvZGVzIGFzIHdlbGwuCisvLyAgICAgIFRoZXNlIGFyZSBlbnVt
ZXJhdGVkIGFzIExMaW50T3Bjb2RlSUQncyBpbiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgu
CisvLworLy8gICAgICBOT1RFOiBUaGUgT3Bjb2RlSURzIGFyZSB1c2VkIGluIENvZGVCbG9ja3Mg
Z2VuZXJhdGVkIGJ5IHRoZQorLy8gICAgICBCeXRlY29kZUNvbXBpbGVyLCBidXQgdGhlIExMSW50
T3Bjb2RlSURzIG5ldmVyIHdpbGwuICBMTEludE9wY29kZUlEcworLy8gICAgICBhcmUgb25seSB1
c2VkIGluIHRoZSBpbnRlcm5hbCBwbHVtYmluZyBvZiB0aGUgaW50ZXJwcmV0ZXIuCisvLworLy8g
ICAyLiBUaGUgaGFuZGxlcgorLy8gICAgICA9PT09PT09PT09PQorLy8gICAgICBVbHRpbWF0ZWx5
LCB0aGUgaW50ZXJwcmV0ZXIgbmVlZHMgdG8gZGlzcGF0Y2ggdG8gc29tZSBoYW5kbGVyIGNvZGUg
dG8KKy8vICAgICAgZXhlY3V0ZSB0aGUgYWN0aW9ucyBvZiB0aGUgb3Bjb2RlIChvciBwc2V1ZG8g
b3Bjb2RlKS4gIFRoZSBoYW5kbGVycworLy8gICAgICBhcmUgcHJlc2VudGVkIGluIG9uZSBvZiB0
aGUgZm9sbG93aW5nIGZvcm1zOgorLy8KKy8vICAgICAgYS4gZ2xvYmFsIGxhYmVscyB3aGVuIHdl
IGNhbiB1c2UgY29tcHV0ZWQgZ290b3MuCisvLyAgICAgIGIuIGNhc2Ugc3RhdGVtZW50cyBpbiBh
IEMgc3dpdGNoIHdoZW4gd2UgY2Fubm90IHVzZSBjb21wdXRlZCBnb3Rvcy4KKy8vCisvLyAgICAg
IFdoZW4gdXNpbmcgdGhlIEFTTSBsb29wLCB3ZSB3aWxsIHVzZSBjb21wdXRlZCBnb3Rvcy4gIFRo
ZXJlIGlzIG5vCisvLyAgICAgIHJlYXNvbiB0byB1c2UgYSBDIHN3aXRjaCBzdGF0ZW1lbnQgaW4g
dGhhdCBjYXNlLgorLy8KKy8vICAgICAgV2hlbiB1c2luZyB0aGUgQyBsb29wLCB3ZSB3aWxsIHVz
ZSBvbmUgb2YgdGhlIGFib3ZlIDIgZm9ybXMuICBJbgorLy8gICAgICBhZGRpdGlvbiwgTExJbnQg
aGVscGVyIGdsdWUgY29kZSBhcmUgYWxzbyByZXByZXNlbnRlZCBhcyBieXRlY29kZQorLy8gICAg
ICBoYW5kbGVycyAoY29ycmVzcG9uZGluZyB0byB0aGVpciByZXNwZWN0aXZlIExMSW50T3Bjb2Rl
SURzKSwgYW5kCisvLyAgICAgIGhlbmNlLCB3aWxsIGJlIHByZXNlbnRlZCBpbiBvbmUgb2YgdGhl
IGFib3ZlIDIgZm9ybXMgYXMgd2VsbC4KKy8vCisvLyBIb3cgYXJlIHRoZSBvcGNvZGUgZm9ybXMg
bmFtZWQ/CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEhlcmUgaXMgYSB0
YWJsZSB0byBzaG93IGV4YW1wbGVzIG9mIGhvdyBlYWNoIG9mIHRoZSBtYW5pZmVzdGF0aW9uIG9m
IHRoZQorLy8gb3Bjb2RlcyBhcmUgbmFtZWQ6CisvLworLy8gICBUeXBlOiAgICAgICAgICAgICAg
ICAgICAgICAgIE9wY29kZSAgICAgICAgICAgIEhlbHBlcgorLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID09PT09PSAgICAgICAgICAgID09PT09PQorLy8gICBMTGludCBsYWJlbHM6
ICAgICAgICAgICAgICAgIGxsaW50X29wX2VudGVyICAgIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUK
Ky8vICAgT3Bjb2RlIGVudW1lcmF0aW9uOiAgICAgICAgICBvcF9lbnRlciAgICAgICAgICBvcF9s
bGludF9wcm9ncmFtIChmb3IgQyBsb29wIG9ubHkpCisvLworLy8gICBVc2luZyBhIHN3aXRjaCBz
dGF0ZW1lbnQgZGlzcGF0Y2g6CisvLyAgICAgT3Bjb2RlIGRpc3BhdGNoIGhhbmRsZXJzOiAgY2Fz
ZSBvcF9lbnRlcjogICAgY2FzZSBvcF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOiAoZm9yIEMgbG9v
cCBvbmx5KQorLy8gICBVc2luZyBjb21wdXRlZCBnb3RvJ3M6CisvLyAgICAgT3Bjb2RlIGRpc3Bh
dGNoIGhhbmRsZXJzOiAgaGFuZGxlX29wX2VudGVyOiAgaGFuZGxlX2xsaW50X3Byb2dyYW1fcHJv
bG9ndWU6IChmb3IgQyBsb29wIG9ubHkpCisvLworLy8gICBMTEludCBnbHVlIGhlbHBlciBlbnRy
eXBvaW50czoKKy8vICAgICBBU00gbG9vcCBnbHVlIGVudHJ5OiAgICAgICBOL0EgICAgICAgICAg
ICAgICB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKKy8vICAgICBDIGxvb3AgZ2x1ZSBl
bnRyeTogICAgICAgICBOL0EgICAgICAgICAgICAgICBPcGNvZGUgbGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZVsxXTsKKy8vCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRGVmaW5lIHRoZSBvcGNv
ZGUgZGlzcGF0Y2ggbWVjaGFuaXNtIHdoZW4gdXNpbmcgdGhlIEMgbG9vcDoKKy8vCisKKy8vIFRo
ZXNlIGFyZSBmb3IgYnVpbGRpbmcgYSBDIExvb3AgaW50ZXJwcmV0ZXI6CisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0JFR0lOCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VORAorCisKKyNkZWZpbmUgT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wY29kZSkgREVGSU5FX09QQ09ERShvcGNvZGUpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVf
TEFCRUwobGFiZWwpICBoYW5kbGVfIyNsYWJlbDoKKyAgICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dF
VF9HTFVFX0xBQkVMKGxhYmVsKSAgKCYmaGFuZGxlXyMjbGFiZWwpCisjZWxzZQorICAgIC8vIG1s
YW0gI2RlZmluZSBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxhYmVsKSAgY2FzZSBvcF8jI2xhYmVs
OgorICAgICNkZWZpbmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChsYWJlbCkgIGNhc2UgbGFiZWw6
CisgICAgLy8gbWxhbSAjZGVmaW5lIE9GRkxJTkVfQVNNX0dFVF9HTFVFX0xBQkVMKGxhYmVsKSAg
KCZsYWJlbCkKKyAgICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dFVF9HTFVFX0xBQkVMKGxhYmVsKSAg
KGxhYmVsKQorI2VuZGlmCisKKyNkZWZpbmUgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwobGFiZWwp
ICAgbGFiZWw6CisKKworLyogbWxhbSBVTlVTRUQ/Pz8KKy8vPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
Ly8gUmVhbGl6ZSBwc2V1ZG8gYnl0ZWNvZGUgZ2x1ZToKKy8vCisjZGVmaW5lIERFRklORV9MTElO
VF9OQVRJVkVfSEVMUEVSKF9fbmFtZSkgICAgIFwKKyAgICBKU0M6Ok9wY29kZSBfX25hbWVbMV07
CisgICAgRk9SX0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihERUZJTkVfTExJTlRfTkFUSVZFX0hF
TFBFUikKKyN1bmRlZiBERUZJTkVfTExJTlRfTkFUSVZFX0hFTFBFUgorKi8KKworbmFtZXNwYWNl
IEpTQyB7CituYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgZG91YmxlIEludHMyRG91YmxlKHVp
bnQzMl90IGxvLCB1aW50MzJfdCBoaSkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBk
dmFsOworICAgICAgICB1aW50NjRfdCBpdmFsNjQ7CisgICAgfSB1OworICAgIHUuaXZhbDY0ID0g
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihoaSkgPDwgMzIpIHwgbG87CisgICAgcmV0dXJuIHUuZHZh
bDsKK30KKworfSAvLyBuYW1lc3BhY2UgTExpbnQKKworLy8gbWxhbSBCRUdJTiBERUJVRyB1dGls
aXRpZXMuICBEbyB3ZSB3YW50IHRvIGtlZXAgdGhlc2UgYXJvdW5kIGluIHNvbWUgZm9ybT8KK2V4
dGVybiBjb25zdCBjaGFyKiBnZXRHbHVlTGFiZWxOYW1lKExMSW50T3Bjb2RlSUQgb3Bjb2RlKTsK
KworY29uc3QgY2hhciogZ2V0R2x1ZUxhYmVsTmFtZShMTEludE9wY29kZUlEIG9wY29kZSkKK3sK
KyNkZWZpbmUgQ0hFQ0tfTExJTlRfTkFUSVZFX0hFTFBFUihfX25hbWUpICAgICBcCisgICAgaWYg
KG9wY29kZSA9PSBfX25hbWUpIHJldHVybiAjX19uYW1lOworICAgIEZPUl9FQUNIX0xMSU5UX05B
VElWRV9IRUxQRVIoQ0hFQ0tfTExJTlRfTkFUSVZFX0hFTFBFUikKKyN1bmRlZiBDSEVDS19MTElO
VF9OQVRJVkVfSEVMUEVSCisKKyAgICAvLyBtbGFtIEJFR0lOIERFQlVHIG9ubHkKKyNkZWZpbmUg
T1BDT0RFX0lEX0VOVU0oX19vcGNvZGUsIGxlbmd0aCkgXAorICAgIGlmIChvcGNvZGUgPT0gX19v
cGNvZGUpIHJldHVybiAjX19vcGNvZGU7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9J
RF9FTlVNKQorI3VuZGVmIE9QQ09ERV9JRF9FTlVNCisgICAgLy8gbWxhbSBFTkQgREVCVUcgb25s
eQorCisjaWYgMAorICAgIDsKKyNlbmRpZgorICAgIHJldHVybiAiPG5vdCBhIGdsdWUgZnVuY3Rp
b24+IjsKKworfQorCit2b2lkIG1sYW1CcmVhayhjb25zdCBjaGFyKiBjb21tZW50LCBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJBdCBt
bGFtIGJyZWFrcG9pbnQ6ICVzIEAgJXM6JWRcbiIsIGNvbW1lbnQsIGZpbGUsIGxpbmUpOworfQor
Ly8gbWxhbSBFTkQgREVCVUcKKworZXh0ZXJuICJDIiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZv
aWQgbGxpbnRCYWROYXRpdmVSZXR1cm4oKTsKK3ZvaWQgbGxpbnRCYWROYXRpdmVSZXR1cm4oKQor
eworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUgcmV0dXJuIFBD
IG9mIHRoZSBzaW11bGF0ZWQgbmF0aXZlCisgICAgLy8gY2FsbCBmcmFtZS4gIFdlIHNob3VsZCBu
ZXZlciByZXR1cm4gdG8gaGVyZSB3aGVuIHVzaW5nIHRoZSBDIExvb3AuCisgICAgLy8gSGVuY2Us
IHdlJ2xsIG1ha2Ugc29tZSBub2lzZSB3aXRoIGEgY3Jhc2ggaWYgc29tZW9uZSBtYWtlcyB0aGF0
IG1pc3Rha2UuCisgICAgQ1JBU0goKTsKK30KKworSlNWYWx1ZSBJbnRlcnByZXRlcjo6bGxpbnRD
TG9vcEV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ0ZpbGUsIENh
bGxGcmFtZSogY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTExJbnRPcGNvZGVJRCBib290c3RyYXBPcGNvZGVJZCwgTExJbnQ6OkRhdGEqIGxsaW50RGF0
YSkgeworCisgICAgI2RlZmluZSBDQVNUIHJlaW50ZXJwcmV0X2Nhc3QKKyAgICAjZGVmaW5lIFNJ
R05fQklUKHgpICh4ICYgSU5UX01JTikKKworICAgIC8vIE9uZS10aW1lIGluaXRpYWxpemF0aW9u
IG9mIG91ciBhZGRyZXNzIHRhYmxlcy4gV2UgaGF2ZSB0byBwdXQgdGhpcyBjb2RlCisgICAgLy8g
aGVyZSBiZWNhdXNlIG91ciBsYWJlbHMgYXJlIG9ubHkgaW4gc2NvcGUgaW5zaWRlIHRoaXMgZnVu
Y3Rpb24uCisgICAgaWYgKFVOTElLRUxZKGZsYWcgPT0gSW5pdGlhbGl6ZUFuZFJldHVybikpIHsK
KyAgICAgICAgaWYgKCFsbGludERhdGEtPmlzSW5pdGVkKCkpIHsKKyAgICAgICAgICAgIEluc3Ry
dWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMgPSBsbGludERhdGEtPmV4Y2VwdGlvbkluc3Ry
dWN0aW9ucygpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5n
dGggKyAxOyArK2kpCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUu
cG9pbnRlciA9CisgICAgICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lkKj4oT0ZGTElO
RV9BU01fR0VUX0dMVUVfTEFCRUwobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZSkpOworCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAgICAgICAgIE9w
Y29kZSogb3Bjb2RlTWFwID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgICAgICNk
ZWZpbmUgT1BDT0RFX0VOVFJZKF9fb3Bjb2RlLCBsZW5ndGgpIFwKKyAgICAgICAgICAgICAgICBv
cGNvZGVNYXBbX19vcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmJmhhbmRsZV8jI19fb3Bj
b2RlKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpCisgICAg
ICAgICAgICAjdW5kZWYgT1BDT0RFX0VOVFJZCisKKyAgICAgICAgICAgICNkZWZpbmUgTExJTlRf
T1BDT0RFX0VOVFJZKF9fb3Bjb2RlKSBcCisgICAgICAgICAgICAgICAgb3Bjb2RlTWFwW19fb3Bj
b2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJiZoYW5kbGVfIyNfX29wY29kZSk7CisKKyAgICAg
ICAgICAgIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIoTExJTlRfT1BDT0RFX0VOVFJZKQor
ICAgICAgICAgICAgI3VuZGVmIExMSU5UX09QQ09ERV9FTlRSWQorI2Vsc2UKKyAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShsbGludERhdGEpOworI2VuZGlmCisgICAgICAgICAgICBsbGludERhdGEt
PnNldElzSW5pdGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICB9CisKKyAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisgICAgLy8gbWxhbSBOT1QgVFJVRSBm
b3IgdXMgQVNTRVJUKG1fY2xhc3NpY0VuYWJsZWQpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmds
b2JhbERhdGEoKS50b3BDYWxsRnJhbWUgPT0gY2FsbEZyYW1lKTsKKworICAgIC8vIERlZmluZSB0
aGUgcHNldWRvIHJlZ2lzdGVycyB1c2VkIGJ5IHRoZSBMTElOVCBDIExvb3AgYmFja2VuZDoKKyAg
ICBzdHJ1Y3QgQ0xvb3BSZWdpc3RlciB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGlu
dHB0cl90IGk7CisgICAgICAgICAgICB1aW50cHRyX3QgdTsKKyAgICAgICAgICAgIGludDhfdCog
aThwOworICAgICAgICAgICAgdm9pZCogdnA7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWNT
dGF0ZTsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbjsKKyAgICAgICAgICAg
IE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmM7CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
ZDsKKyAgICAgICAgfSB1OworICAgIH07CisgICAgc3RydWN0IENMb29wRG91YmxlUmVnaXN0ZXIg
eworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBkb3VibGUgZDsKKyAgICAgICAgfSB1Owor
ICAgIH07CisKKyAgICBDTG9vcFJlZ2lzdGVyIHIwLCByMSwgcjIsIHI0OworICAgIENMb29wUmVn
aXN0ZXIgcjMsIHI4OworICAgIENMb29wUmVnaXN0ZXIgclJldFZQQzsgLy8gbWxhbSBEb3VibGUg
Q2hlY2sgdGhpcy4KKyAgICBDTG9vcERvdWJsZVJlZ2lzdGVyIGQwLCBkMTsKKworICAgIC8vIElu
c3RhbnRpYXRlIHRoZSBwc2V1ZG8gSklUIHN0YWNrIGZyYW1lIHVzZWQgYnkgdGhlIExMSU5UIEMg
TG9vcCBiYWNrZW5kOgorICAgIEpJVFN0YWNrRnJhbWUgaml0U3RhY2tGcmFtZTsKKworICAgIEpJ
VFN0YWNrRnJhbWUqIGNvbnN0IHNwID0gJmppdFN0YWNrRnJhbWU7CisgICAgc3AtPmdsb2JhbERh
dGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CisKKyAgICAvLyBBbGlhcyBmb3IgZ2xvYmFs
RGF0YSBwdHIgaW4gdGhlIEpJVFN0YWNrRnJhbWU6CisgICAgSlNHbG9iYWxEYXRhKiAmZ2xvYmFs
RGF0YSA9IHNwLT5nbG9iYWxEYXRhOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOworICAgIEluc3RydWN0aW9uKiB2UEMgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CisKKyAgICAvLyByRlAgaXMgYW4gYWxpYXMgZm9yIGNhbGxG
cmFtZS4gIFNldCB1cCB0aGlzIGFsaWFzOgorICAgIENMb29wUmVnaXN0ZXImIGZwID0gKkNBU1Q8
Q0xvb3BSZWdpc3Rlcio+KCZjYWxsRnJhbWUpOworCisgICAgLy8gclBDIGlzIGFuIGFsaWFzIGZv
ciB2UEMuICBTZXQgdXAgdGhlIGFsaWFzOgorICAgIENMb29wUmVnaXN0ZXImIHJQQyA9ICpDQVNU
PENMb29wUmVnaXN0ZXIqPigmdlBDKTsKKworICAgIC8vIFNpbXVsYXRlIGEgbmF0aXZlIHJldHVy
biBQQyB3aGljaCBzaG91bGQgbmV2ZXIgYmUgdXNlZDoKKyAgICByUmV0VlBDLnUudnAgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludEJhZE5hdGl2ZVJldHVybik7CisKKyAgICAvLyBtbGFtIFVO
VVNFRCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlOworICAgIC8vIG1sYW0gTk9UIE5FRURFRD8gSGFu
ZGxlckluZm8qIGhhbmRsZXIgPSAwOworICAgIC8vIG1sYW0gVU5VU0VEIENhbGxGcmFtZSoqIHRv
cENhbGxGcmFtZVNsb3QgPSAmZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lOworCisgICAgLy8gbWxh
bSB1bnNpZ25lZCB0aWNrQ291bnQgPSBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci50aWNrc1Vu
dGlsTmV4dENoZWNrKCk7CisKKyAgICAvLyBJbnRlcnByZXRlciB2YXJpYWJsZXMgZm9yIHZhbHVl
IHBhc3NpbmcgYmV0d2VlbiBvcGNvZGVzIGFuZC9vciBoZWxwZXJzOgorICAgIC8vIG1sYW0gdm9p
ZCogY29kZVB0cjsKKyAgICBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jID0gMDsKKyAgICBKU1Zh
bHVlIGZ1bmN0aW9uUmV0dXJuVmFsdWU7CisgICAgLy8gbWxhbSBOT1QgTkVFREVEIEluc3RydWN0
aW9uKiBqdW1wVGFyZ2V0ID0gMDsKKyAgICBMTEludE9wY29kZSBvcGNvZGU7CisKKyAgICBib29s
IG1sYW1QcmludCA9IGZhbHNlOyAvLyBGb3IgREVCVUcgb25seS4gIENsZWFuIHVwIHBsZWFzZS4K
KyAgICBVTlVTRURfUEFSQU0obWxhbVByaW50KTsKKworICAgIFVOVVNFRF9QQVJBTShyZWdGaWxl
KTsgLy8gbWxhbSBGSVhNRSBSRU1PVkUgdGhpcyBsYXRlci4KKyAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsgLy8gbWxhbSBGSVhNRSBSRU1PVkUgdGhpcyBsYXRlci4KKworICAgIGlmIChib290
c3RyYXBPcGNvZGVJZCAhPSBsbGludF91bnVzZWQpIHsKKyAgICAgICAgLy8gbWxhbSB2UEMgPSBi
aXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihsbGludEdsdWUpOworICAgICAgICBvcGNvZGUgPSBM
TEludDo6RGF0YTo6Z2V0T3Bjb2RlKGJvb3RzdHJhcE9wY29kZUlkKTsKKyAgICB9CisKKy8qIG1s
YW0gQkVHSU4gTk9UIE5FRURFRD8KKyNkZWZpbmUgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpIFwKKyAg
ICBkbyB7IFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGdsb2JhbERhdGEtPmV4Y2VwdGlvbiAhPSBK
U1ZhbHVlKCkpKSB7IFwKKyAgICAgICAgICAgIC8gKiBtbGFtIFVOVVNFRCBleGNlcHRpb25WYWx1
ZSA9IGdsb2JhbERhdGEtPmV4Y2VwdGlvbjsgICogLyAgXAorICAgICAgICAgICAgZ290byBkb1Ro
cm93SGVscGVyOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCittbGFtICovCisKKyNp
ZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQorICAgICNkZWZpbmUgU0FNUExFKGNvZGVCbG9jaywg
dlBDKSBtX3NhbXBsZXItPnNhbXBsZShjb2RlQmxvY2ssIHZQQykKKyNlbHNlCisgICAgI2RlZmlu
ZSBTQU1QTEUoY29kZUJsb2NrLCB2UEMpCisjZW5kaWYKKworLyogbWxhbSBDX0xPT1AgbWVhbnMg
bm8gREZHLiAgTGV0J3MgZ2V0IHJpZCBvZiB0aGlzIHRyb3VibGVzb21lIHBpZWNlIG9mIGNvZGUu
CisgICBUaGUgTExJTlQgaXMgc3VwcG9zZWQgdG8gZG8gYWxsIHRoZSBuZWNlc3Nhcnkgc3RhY2sg
YWRqdXN0bWVudHMuCisgICBMZWF2ZSBpdCBhbG9uZS4KKyNkZWZpbmUgVVBEQVRFX0JZVEVDT0RF
X09GRlNFVCgpIFwKKyAgICBkbyB7XAorICAgICAgICBjYWxsRnJhbWUtPnNldEJ5dGVjb2RlT2Zm
c2V0Rm9yTm9uREZHQ29kZSh2UEMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmRhdGEoKSAr
IDEpO1wKKyAgICB9IHdoaWxlICgwKQorKi8KKyNkZWZpbmUgVVBEQVRFX0JZVEVDT0RFX09GRlNF
VCgpCisvLyBtbGFtIEVORAorCisgICAgLyovIG1sYW0gQkVHSU4gdGVzdAorICAgIHByaW50Zigi
IG1sYW0gQCAlcyBAICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7
CisgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c
biIpOworICAgIGNvZGVCbG9jay0+ZHVtcChjYWxsRnJhbWUpOworICAgIHByaW50ZigiPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAvLyBtbGFtIEVO
RCB0ZXN0ICovCisKKyAgICAjaWYgRU5BQkxFKE9QQ09ERV9TVEFUUykKKyAgICAgICAgI2RlZmlu
ZSBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKSBcCisgICAgICAgICAgICBPcGNvZGVTdGF0
czo6cmVjb3JkSW5zdHJ1Y3Rpb24oX19vcGNvZGUpCisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmlu
ZSBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKQorICAgICNlbmRpZgorCisvLyBtbGFtIG9y
aWcgI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAg
Ly8gTG9vcCBkaXNwYXRjaCBtZWNoYW5pc20gdXNpbmcgY29tcHV0ZWQgZ290byBzdGF0ZW1lbnRz
OgorCisgICAgI2RlZmluZSBESVNQQVRDSF9PUENPREUoKSBnb3RvICpvcGNvZGUKKyAgICAjZGVm
aW5lIE5FWFRfSU5TVFJVQ1RJT04oKSBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBTQU1QTEUoY29k
ZUJsb2NrLCB2UEMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBv
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8TExJbnRPcGNvZGU+KHZQQy0+dS5vcGNvZGUpOyBcCisgICAg
ICAgICAgICBESVNQQVRDSF9PUENPREUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIH0gd2hpbGUgKGZhbHNlKQorCisgICAgI2RlZmluZSBERUZJTkVfT1BDT0RF
KF9fb3Bjb2RlKSBcCisgICAgICAgIGhhbmRsZV8jI19fb3Bjb2RlOlwKKyAgICAgICAgICAgIFJF
Q09SRF9PUENPREVfU1RBVFMoX19vcGNvZGUpOyBcCisgICAgICAgICAgICBVUERBVEVfQllURUNP
REVfT0ZGU0VUKCk7CisKKyAgICAvLyBtbGFtIEJBRCAjZGVmaW5lIE9QQ09ERV9JUyhvcGNvZGVf
XykgKHZQQy0+dS5vcGNvZGUgPT0gbV9vcGNvZGVUYWJsZVtvcGNvZGVfX10pCisKKyAgICAvLyBE
aXNwYXRjaCB0byB0aGUgY3VycmVudCBQQydzIGJ5dGVjb2RlOgorICAgIE5FWFRfSU5TVFJVQ1RJ
T04oKTsKKworI2Vsc2UgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVU
RVIpCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBMb29wIGRpc3BhdGNoIG1lY2hhbmlz
bSB1c2luZyBhIEMgc3dpdGNoIHN0YXRlbWVudDoKKworICAgICNkZWZpbmUgRElTUEFUQ0hfT1BD
T0RFKCkgZ290byBpbnRlcnByZXRlckxvb3BTdGFydAorICAgICNkZWZpbmUgTkVYVF9JTlNUUlVD
VElPTigpIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgU0FNUExFKGNvZGVCbG9jaywgdlBDKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBvcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8TExJbnRPcGNvZGU+KHZQQy0+dS5vcGNvZGUpOyAgIFwKKyAgICAgICAgICAgIERJ
U1BBVENIX09QQ09ERSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB9IHdoaWxlIChmYWxzZSkKKworICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShfX29wY29k
ZSkgXAorICAgICAgICBjYXNlIF9fb3Bjb2RlOiBcCisgICAgICAgICAgICBSRUNPUkRfT1BDT0RF
X1NUQVRTKF9fb3Bjb2RlKTsgXAorICAgICAgICAgICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgp
OworCisgICAgLy8gbWxhbSBVTlVTRUQgI2RlZmluZSBPUENPREVfSVMoX19vcGNvZGUpICh2UEMt
PnUub3Bjb2RlID09IF9fb3Bjb2RlKQorCisgICAgLy8gRGlzcGF0Y2ggdG8gdGhlIGN1cnJlbnQg
UEMncyBieXRlY29kZToKKyAgICB3aGlsZSAoMSkgeyAvLyBpdGVyYXRvciBsb29wIGJlZ2lucwor
ICAgIGludGVycHJldGVyTG9vcFN0YXJ0OjsKKyAgICAgICAgc3dpdGNoIChvcGNvZGUpCisKKyNl
bmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKworICAg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNvZGUgaGFuZGxlcnM6CisgICAgeworICAg
ICAgICAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29u
dGFpbnMgYWxsIG9mIHRoZQorICAgICAgICAvLyBieXRlY29kZSBoYW5kbGVycyBmb3IgdGhlIGlu
dGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tCisgICAgICAgIC8vIExvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtLgorICAgICAgICAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKKyAgICAgICAg
T0ZGTElORV9BU01fR0xVRV9MQUJFTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBtbGFtIG1sYW1CcmVhaygiZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSIs
IF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdsb2Jh
bERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWU7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgICAgIHIxLnUuaSA9IHJlc3VsdC50YWcoKTsKKyAgICAgICAgICAgIHIwLnUuaSA9IHJlc3Vs
dC5wYXlsb2FkKCk7CisjZWxzZQorICAgICAgICAgICAgI2Vycm9yIE5PVCBpbXBsZW1lbnRlZC4K
KyNlbmRpZgorICAgICAgICAgICAgLy8gbWxhbSBwcmludGYoIiAgICBbcGMgJXAgZnAgJXBdIEFT
TSBnZXRIb3N0Q2FsbFJldHVyblZhbHVlID0+IHBjICVwXG4iLCB2UEMsIGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jdXJyZW50VlBDKCkpOworICAgICAgICAgICAgLy8gbWxhbSB2UEMgPSByUmV0VlBD
LnUuaW5zdHJ1Y3Rpb247CisKKyAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKTsgLy8gbWxhbSBURVNUCisKKyAgICAgICAgICAgIHZQQyA9IGNhbGxGcmFtZS0+
Y3VycmVudFZQQygpOworICAgICAgICAgICAgLyovIG1sYW0gQkVHSU4KKyAgICAgICAgICAgIHBy
aW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAg
ICAgICAgICAgIGlmIChjYWxsRnJhbWUgIT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpKSB7CisgICAg
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OworICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLT5kdW1wKGNhbGxGcmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cbiIpOworICAgICAgICAgICAgLy8gbWxhbSAqLworLyogbWxhbQorICAgICAg
ICAgICAgLy8gbWxhbSBCRUdJTiB0ZXN0CisgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYXNI
b3N0Q2FsbEZyYW1lRmxhZygpKSB7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZShyMS51LmksIHIwLnUuaSk7ICAvLyByZXR1cm5pbmcgSlNWYWx1
ZSh0YWcsIHBheWxvYWQpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAjZXJyb3IgTk9UIGltcGxl
bWVudGVkLgorI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBtbGFtIEVORAor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICAgICAg
fQorCisgICAgICAgIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfY3RpT3BUaHJvd05vdENh
dWdodCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxu
ICAgKioqKioqKioqKiBtbGFtIDo6IGxsaW50X2N0aU9wVGhyb3dOb3RDYXVnaHRcblxuIik7Cisg
ICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uOworICAgICAgICB9CisKKyNp
ZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICBkZWZhdWx0OgorICAgICAgICBw
cmludGYoIiBtbGFtIDo6IElsbGVnYWwgb3Bjb2RlICVwXG4iLCAodm9pZCopb3Bjb2RlKTsKKyAg
ICAgICAgbWxhbUJyZWFrKCJJbGxlZ2FsIG9wY29kZSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7Cisg
ICAgICAgIEFTU0VSVChmYWxzZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorICAgIC8vIEJ5dGVjb2RlIGhlbHBlcnM6CisKKyAgICBkb0luZGlyZWN0SnVtcEhlbHBl
cjogeworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgICAgIC8vIG1sYW0g
Z290byBqdW1wVGFyZ2V0OworICAgICAgICBnb3RvICpvcGNvZGU7CisjZWxzZQorICAgICAgICAv
LyBtbGFtIHZQQyA9IGp1bXBUYXJnZXQ7CisgICAgICAgIGdvdG8gaW50ZXJwcmV0ZXJMb29wU3Rh
cnQ7CisjZW5kaWYKKyAgICB9CisgICAgZG9DYWxsSGVscGVyOiB7CisgICAgICAgIC8vIG1sYW0g
bWxhbUJyZWFrKCJjYWxsSlNGdW5jdGlvbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAg
IAorICAgICAgICBBU1NFUlQoclJldFZQQy51LnZwICE9IDApOyAvLyBtbGFtIFRFU1QgcmV0dXJu
UEMKKyAgICAgICAgaWYgKG1sYW1fUFJJTlRGKSBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxG
cmFtZSwgIiAgPj4+IFBVU0hFRCB0byBuZXcgIik7IC8vIG1sYW0KKyAgICAgICAgLyogbWxhbSBC
RUdJTgorICAgICAgICBwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PVxuIik7CisgICAgICAgIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CisgICAgICAgIGlmIChjb2RlQmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXAoY2Fs
bEZyYW1lKTsKKyAgICAgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cbiIpOworICAgICAgICAvLyBtbGFtIEVORCAqLworCisgICAgICAgIC8vIEFT
U0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY29uc3RydWN0
KSk7CisgICAgICAgIC8vIHJSZXRWUEMudS5pbnN0cnVjdGlvbiA9IHZQQyArIE9QQ09ERV9MRU5H
VEgob3BfY2FsbCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgLy8gbWxhbSBTaG91
bGQgbm90IG5lZWQgdGhpcy4gIFdlIG5ldmVyIHVzZSB0aGUgbmF0aXZlIHJldFBDOiByUmV0VlBD
LnUuaW5zdHJ1Y3Rpb24gPSBjYWxsRnJhbWUtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgI2lmIG1s
YW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiICAgKioqKiBtbGFtIGRvQ2FsbEhlbHBlcjogVlBD
ICVwIFJldHVyblZQQyAlcFxuIiwgdlBDLCByUmV0VlBDLnUuaW5zdHJ1Y3Rpb24pOworICAgICAg
ICAjZW5kaWYKKyNlbmRpZgorICAgICAgICAvKiBtbGFtCisgICAgICAgIHZQQyA9IGJpdHdpc2Vf
Y2FzdDxJbnN0cnVjdGlvbio+KGNvZGVQdHIpOworICAgICAgICAqLworICAgICAgICAvLyBtbGFt
IG9wY29kZSA9IGJpdHdpc2VfY2FzdDxMTEludE9wY29kZT4oY29kZVB0cik7CisgICAgICAgIERJ
U1BBVENIX09QQ09ERSgpOworCisgICAgfSAvLyBFTkQgZG9DYWxsSGVscGVyLgorCisgICAgZG9S
ZXR1cm5IZWxwZXI6IHsKKyAgICAgICAgaWYgKG1sYW1fUFJJTlRGKSBWTUluc3BlY3Rvcjo6ZHVt
cEZyYW1lKGNhbGxGcmFtZSwgIiAgPDw8IFBPUFBFRCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQor
CisgICAgICAgIC8qLyBtbGFtIEJFR0lOCisgICAgICAgIHByaW50ZigiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZSAh
PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpIHsKKyAgICAgICAgICAgIC8vIG1sYW0gQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgLy8gbWxh
bSBjb2RlQmxvY2stPmR1bXAoY2FsbEZyYW1lKTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYo
Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisgICAgICAg
IC8vIG1sYW0gRU5EICovCisKKyAgICAgICAgLy8gbWxhbSBCRUdJTiB0ZXN0CisgICAgICAgIGlm
IChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIHsKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUocjEudS5pLCByMC51LmkpOyAgLy8gcmV0
dXJuaW5nIEpTVmFsdWUodGFnLCBwYXlsb2FkKTsKKyNlbHNlCisgICAgICAgICAgICAjZXJyb3Ig
Tk9UIGltcGxlbWVudGVkLgorI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgLy8gbWxhbSBFTkQK
KworICAgICAgICAvLyBUaGUgbm9ybWFsIExMSW50IGNhbGwgaW1wbGVtZW50YXRpb24gcmV0dXJu
cyB0byB0aGUgY2FsbGVyLCBhbmQgdGhlCisgICAgICAgIC8vIGNhbGxlciB3b3VsZCBmZXRjaCB0
aGUgcmV0dXJuIGFkZHJlc3MgZnJvbSBBcmd1bWVudENvdW50LnRhZygpLgorICAgICAgICAvLyBT
aW5jZSB3ZSBkb24ndCBhY3R1YWxseSB1c2UgYSByZWFsIGNhbGwgYW5kIHJldHVybiBtZWNoYW5p
c20sIHdlCisgICAgICAgIC8vIG5lZWQgdG8gaW1wbGVtZW50IHRoZSBlcXVpdmFsZW50IG9mIGRp
c3BhdGNoQWZ0ZXJDYWxsKCkgaGVyZToKKworICAgICAgICAvLyBtbGFtIHZQQyA9IHJSZXRWUEMu
dS5pbnN0cnVjdGlvbjsKKyAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7Cisg
ICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKworICAgIH0gLy8gRU5EIGRvUmV0dXJuSGVscGVy
LgorCisjaWYgMCAvLyBtbGFtIE5PVCBORUVERUQKKyAgICBkb1Rocm93SGVscGVyOiB7CisjaWYg
MCAvLyBtbGFtIFJFUExBQ0UKKyAgICAgICAgcHJpbnRmKCJcblxuIG1sYW0gRVhDRVBUSU9OIGRv
VGhyb3dIZWxwZXI6IGV4cCAlcCBAICVzICVzOiVkXG5cbiIsIGV4Y2VwdGlvblZhbHVlLmdldE9i
amVjdCgpLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiA9IEpTVmFsdWUoKTsKKyAgICAgICAgLyogbWxhbQorICAgICAgICBp
ZiAoIXRpY2tDb3VudCkgeworICAgICAgICAgICAgLy8gVGhlIGV4Y2VwdGlvblZhbHVlIGlzIGEg
bGllISAoR0NDIHByb2R1Y2VzIGJhZCBjb2RlIGZvciByZWFzb25zIEkgCisgICAgICAgICAgICAv
LyBjYW5ub3QgZmF0aG9tIGlmIHdlIGRvbid0IGFzc2lnbiB0byB0aGUgZXhjZXB0aW9uVmFsdWUg
YmVmb3JlIGJyYW5jaGluZykKKyAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlSW50
ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KKyAgICAg
ICAgKi8KKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgICAgICBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOworICAgICAgICBoYW5kbGVyID0gdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBl
eGNlcHRpb25WYWx1ZSwgdlBDIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
KyAgICAgICAgaWYgKCFoYW5kbGVyKSB7CisgICAgICAgICAgICAvLyBDYW4ndCB1c2UgdGhlIGNh
bGxmcmFtZSBhdCB0aGlzIHBvaW50IGFzIHRoZSBzY29wZWNoYWluLCBldGMgaGF2ZQorICAgICAg
ICAgICAgLy8gYmVlbiByZWxlYXNlZC4KKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICB2UEMg
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBoYW5kbGVyLT50YXJnZXQ7Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7CisKKyAgICAgICAgY2FsbEZyYW1l
ID0gZ2xvYmFsRGF0YS0+Y2FsbEZyYW1lRm9yVGhyb3c7CisgICAgICAgIHZQQyA9IGdsb2JhbERh
dGEtPnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsKKyAgICAgICAgcHJpbnRmKCJcblxuIG1s
YW0gRVhDRVBUSU9OIGRvVGhyb3dIZWxwZXI6IGV4cCAlcCBmcCAlcCBwYyAlcCBAICVzICVzOiVk
XG5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5nZXRPYmplY3QoKSwgY2FsbEZyYW1lLCB2UEMs
IF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgICAgICByMC51LmV4ZWNT
dGF0ZSA9IGNhbGxGcmFtZTsKKyAgICAgICAgY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKKyNlbmRpZgorICAgICAgICBtbGFtQnJlYWsoImRvVGhyb3dIZWxwZXIiLCAwLDApOwor
ICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQorI2VuZGlmIC8vIG1sYW0gTk9UIE5F
RURFRAorCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisg
ICAgfSAvLyBpdGVyYXRvciBsb29wIGVuZHMKKyNlbmRpZgorCisgICAgI3VuZGVmIE5FWFRfSU5T
VFJVQ1RJT04KKyAgICAjdW5kZWYgREVGSU5FX09QQ09ERQorICAgIC8vIG1sYW0gTk9UIE5FRURF
RCAjdW5kZWYgQ0hFQ0tfRk9SX0VYQ0VQVElPTgorICAgICN1bmRlZiBDSEVDS19GT1JfVElNRU9V
VAorICAgICN1bmRlZiBDQVNUCisgICAgI3VuZGVmIFNJR05fQklUCisKKyAgICByZXR1cm4gSlNW
YWx1ZSgpOyAvLyBLZWVwIHRoZSBjb21waWxlciBoYXBweS4KKworfSAvLyBJbnRlcnByZXRlcjo6
bGxpbnRDTG9vcEV4ZWN1dGUoKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vsc2UgLy8gIUVO
QUJMRShMTElOVF9DX0xPT1ApCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRGVmaW5lIHRo
ZSBvcGNvZGUgZGlzcGF0Y2ggbWVjaGFuaXNtIHdoZW4gdXNpbmcgYW4gQVNNIGxvb3A6CisvLwor
CisvLyBUaGVzZSBhcmUgZm9yIGJ1aWxkaW5nIGFuIGludGVycHJldGVyIGZyb20gZ2VuZXJhdGVk
IGFzc2VtYmx5IGNvZGU6CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JFR0lOICAgYXNtICgKKyNkZWZp
bmUgT0ZGTElORV9BU01fRU5EICAgICApOworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChfX29wY29kZSkgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxsaW50XyMjX19vcGNvZGUp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwoX19vcGNvZGUpICAgT0ZGTElORV9BU01f
R0xPQkFMX0xBQkVMKF9fb3Bjb2RlKQorCisjaWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChsYWJl
bCkgIlxuIiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYlxuIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNf
UEFSQU0obGFiZWwpICJcbiIgIFwKKyAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiOlxuIgorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgIFwKKyAg
ICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgIFwKKyAgICBISURF
X1NZTUJPTChsYWJlbCkgIlxuIiAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTWU1CT0xfU1RS
SU5HKGxhYmVsKSAiOlxuIgorI2VuZGlmCisKKyNkZWZpbmUgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwobGFiZWwpICAgTE9DQUxfTEFCRUxfU1RSSU5HKGxhYmVsKSAiOlxuIgorCiAvLyBUaGlzIGlz
IGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRo
ZSBhc3NlbWJseSBjb2RlCiAvLyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9t
IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAor
I2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTMg
QEAKIAogI2luY2x1ZGUgIk9wY29kZS5oIgogCisvKiBtbGFtIE1PVkVEIGJlbG93CiAjZGVmaW5l
IExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBs
bGludF8jI29wY29kZSgpOwogICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElP
Tl9ERUNMKTsKICN1bmRlZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisqLwogCisvKiBtbGFtIEJF
R0lOIG9yaWcKIGV4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigpOwogZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2VuZCgpOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsK
QEAgLTUxLDYgKzU0LDExNSBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2Nh
bGxfCiAvLyBOYXRpdmUgY2FsbCB0cmFtcG9saW5lcwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X25h
dGl2ZV9jYWxsX3RyYW1wb2xpbmUoKTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF9uYXRpdmVfY29u
c3RydWN0X3RyYW1wb2xpbmUoKTsKKyovCisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorI2Rl
ZmluZSBGT1JfRUFDSF9MTElOVF9OT0pJVF9OQVRJVkVfSEVMUEVSKHYpIFwKKyAgICB2KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpIFwKKyAgICB2KGxsaW50X2N0aU9wVGhyb3dOb3RDYXVnaHQpCisK
KyNlbHNlIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgp
OworICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRl
ZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisKKyNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfTk9KSVRf
TkFUSVZFX0hFTFBFUih2KSBcCisgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLiBVc2UgdGhlIEpJ
VCBpbXBsIGluc3RlYWQuCisKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworCisj
ZGVmaW5lIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIodikgXAorICAgIEZPUl9FQUNIX0xM
SU5UX05PSklUX05BVElWRV9IRUxQRVIodikgXAorICAgIFwKKyAgICB2KGxsaW50X2JlZ2luKSBc
CisgICAgXAorICAgIHYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkgXAorICAgIHYobGxpbnRfZXZh
bF9wcm9sb2d1ZSkgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpIFwK
KyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpIFwKKyAgICB2KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSBcCisgICAgdihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSBcCisgICAgdihsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludCkgXAorICAgIHYobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkg
XAorICAgIHYobGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkgXAorICAgIFwKKyAg
ICAvKiBOYXRpdmUgY2FsbCB0cmFtcG9saW5lcyAqLyBcCisgICAgdihsbGludF9uYXRpdmVfY2Fs
bF90cmFtcG9saW5lKSBcCisgICAgdihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUp
IFwKKyAgICBcCisgICAgdihsbGludF9lbmQpCisKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CisKKyAgICAvLyBEZWZpbmUgcHNldWRvIG9wY29kZXMgZm9yIHRoZSBDIGxvb3A6CisgICAgI2Rl
ZmluZSBPUENPREVfSURfRU5VTShfX29wY29kZSwgbGVuZ3RoKSBfX29wY29kZSwKKyAgICAvLyBt
bGFtICNkZWZpbmUgT1BDT0RFX1BTRVVET19JRF9FTlVNKF9fb3Bjb2RlKSBvcF8jI19fb3Bjb2Rl
LAorICAgICNkZWZpbmUgT1BDT0RFX1BTRVVET19JRF9FTlVNKF9fb3Bjb2RlKSBfX29wY29kZSwK
KworICAgIHR5cGVkZWYgZW51bSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQ
RVIoT1BDT0RFX1BTRVVET19JRF9FTlVNKSAgICAgXAorICAgIH0gTExJbnRPcGNvZGVJRDsKKwor
ICAgICN1bmRlZiBPUENPREVfSURfRU5VTQorICAgICN1bmRlZiBPUENPREVfUFNFVURPX0lEX0VO
VU0KKworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgdHlwZWRlZiBKU0M6
Ok9wY29kZSBMTEludE9wY29kZTsKKyNlbHNlCisgICAgdHlwZWRlZiBMTEludE9wY29kZUlEIExM
SW50T3Bjb2RlOworI2VuZGlmCisKKyAgICBjb25zdCBpbnQgbnVtTExJbnRPcGNvZGVJRHMgPSBs
bGludF9lbmQgKyAxOworICAgIGNvbnN0IExMSW50T3Bjb2RlSUQgbGxpbnRfdW51c2VkID0gbGxp
bnRfZW5kOworCisvKiBtbGFtIFVOVVNFRCA/Pz8KKyAgICAvLyBQc2V1ZG8gYnl0ZWNvZGUgdGh1
bmtzOgorICAgICNkZWZpbmUgREVDTEFSRV9MTElOVF9OQVRJVkVfSEVMUEVSKG5hbWUpIFwKKyAg
ICAgICAgZXh0ZXJuICJDIiBKU0M6Ok9wY29kZSBuYW1lW107CisgICAgRk9SX0VBQ0hfTExJTlRf
TkFUSVZFX0hFTFBFUihERUNMQVJFX0xMSU5UX05BVElWRV9IRUxQRVIpCisgICAgI3VuZGVmIERF
Q0xBUkVfTExJTlRfTkFUSVZFX0hFTFBFUgorKi8KKworICAgICNkZWZpbmUgTExJTlRfQUREUkVT
U19PRl9HTFVFKF9fZ2x1ZSkgXAorICAgICAgICBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihf
X2dsdWUpCisgICAgI2RlZmluZSBMTElOVF9BRERSRVNTX09GX09QQ09ERV9IQU5ETEVSKF9fb3Bj
b2RlKSBcCisgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lkKj4oX19vcGNvZGUpCisKKyNlbHNlIC8v
ICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisgICAgLy8gRGVmaW5lIHBzZXVkbyBvcGNvZGVzIGZv
ciB0aGUgQyBsb29wOgorICAgICNkZWZpbmUgT1BDT0RFX0lEX0VOVU0oX19vcGNvZGUsIGxlbmd0
aCkgX19vcGNvZGUsCisgICAgdHlwZWRlZiBlbnVtIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RF
X0lEX0VOVU0pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IExMSW50T3Bjb2RlSUQ7Cisg
ICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCisKKyAgICAjZGVmaW5lIERFQ0xBUkVfTExJTlRfTkFU
SVZFX0hFTFBFUihuYW1lKSBcCisgICAgICAgIGV4dGVybiAiQyIgdm9pZCBuYW1lKCk7CisgICAg
Rk9SX0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihERUNMQVJFX0xMSU5UX05BVElWRV9IRUxQRVIp
CisgICAgI3VuZGVmIERFQ0xBUkVfTExJTlRfTkFUSVZFX0hFTFBFUgorCisgICAgdHlwZWRlZiBK
U0M6Ok9wY29kZSBMTEludE9wY29kZTsKKyAgICBjb25zdCBpbnQgbnVtTExJbnRPcGNvZGVJRHMg
PSBKU0M6Om51bU9wY29kZUlEczsKKworICAgICNkZWZpbmUgTExJTlRfQUREUkVTU19PRl9HTFVF
KF9fZ2x1ZSkgXAorICAgICAgICBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmX19nbHVlKQor
ICAgICNkZWZpbmUgTExJTlRfQUREUkVTU19PRl9PUENPREVfSEFORExFUihfX29wY29kZSkgXAor
ICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50XyMjX19vcGNvZGUpCisKKyNlbmRpZiAv
LyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworLy8gbWxhbSBFTkQgKi8KKworLy8gbWxhbSBCRUdJ
TiBkZWJ1ZworbmFtZXNwYWNlIEpTQyB7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIG1sYW1CcmVh
ayhjb25zdCBjaGFyKiBjb21tZW50LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7Cit9IC8v
IG5hbWVzcGFjZSBKU0MKKy8vIG1sYW0gRU5EIGRlYnVnCiAKICNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShy
ZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12
Ny5yYgkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3OSw4IEBAIGRlZiBhcm1WN0xvd2VyUmVn
aXN0ZXJSZXVzZShsaXN0KQogICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQogICAgICAgICAg
ICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwg
ImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKICAgICAgICAgICAgICAgICAiY3Bl
cSIsICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3Bn
dGVxIiwgImNwbHQiLCAiY3BsdGVxIiwKLSAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0
aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56IiwgInRwbyIsICJ0cHMiLCAi
dHB6IiwgInRwbnoiLAorICAgICAgICAgICAgICAgICMgbWxhbSBVTlVTRUQgInRpbyIsICJ0aXMi
LCAidGl6IiwgInRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAidHBz
IiwgInRweiIsICJ0cG56IiwKKyAgICAgICAgICAgICAgICAidGlzIiwgInRpeiIsICJ0aW56Iiwg
InRicyIsICJ0YnoiLCAidGJueiIsICJ0cHMiLCAidHB6IiwgInRwbnoiLAogICAgICAgICAgICAg
ICAgICJjYmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIiLCAiY2JiZXEiLCAiY2Jn
dCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCiAgICAgICAgICAgICAgICAgaWYgbm9kZS5v
cGVyYW5kcy5zaXplID09IDIKICAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sw
XSA9PSBub2RlLm9wZXJhbmRzWzFdCkBAIC05NDAsOSArOTQxLDkgQEAgY2xhc3MgSW5zdHJ1Y3Rp
b24KICAgICAgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiLCAiYnRibnoiCiAgICAgICAgICAgICBl
bWl0QXJtVjdUZXN0KG9wZXJhbmRzKQogICAgICAgICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVy
YW5kc1stMV0uYXNtTGFiZWx9IgotICAgICAgICB3aGVuICJidGlvIiwgImJ0cG8iLCAiYnRibyIK
LSAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCi0gICAgICAgICAgICAkYXNtLnB1
dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgICMgbWxhbSBVTlVTRUQg
d2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgZW1p
dEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAkYXNtLnB1dHMg
ImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCiAgICAgICAgIHdoZW4gImJ0aXMiLCAiYnRw
cyIsICJidGJzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKICAgICAgICAg
ICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKQEAgLTk4Miw4ICs5
ODMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFyZShv
cGVyYW5kcywgImx0IikKICAgICAgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIsICJjYmx0ZXEi
CiAgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibGUiKQotICAgICAgICB3
aGVuICJ0aW8iLCAidGJvIiwgInRwbyIKLSAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3Bl
cmFuZHMsICJ2cyIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGlvIiwgInRibyIsICJ0
cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywg
InZzIikKICAgICAgICAgd2hlbiAidGlzIiwgInRicyIsICJ0cHMiCiAgICAgICAgICAgICBlbWl0
QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQogICAgICAgICB3aGVuICJ0aXoiLCAidGJ6Iiwg
InRweiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlz
aW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgko
d29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsMTYgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgICAg
IEBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAgIEBjb2RlT3JpZ2luID0gbmlsCiAgICAgICAgIEBp
bnRlcm5hbENvbW1lbnQgPSBuaWwKKyAgICAgICAgQHNvdXJjZUluc3RydWN0aW9uID0gbmlsCiAg
ICAgICAgIHJlc3VsdAogICAgIGVuZAogICAgIAorICAgICMgUHV0cyBhIEMgU3RhdGVtZW50IGlu
IHRoZSBvdXRwdXQgc3RyZWFtLgorICAgIGRlZiBwdXRjKCpsaW5lKQorICAgICAgICByYWlzZSB1
bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCIgICAg
IiArIGxpbmUuam9pbignJyksIGxhc3RDb21tZW50KSkKKyAgICBlbmQKKyAgICAKICAgICBkZWYg
Zm9ybWF0RHVtcChkdW1wU3RyLCBjb21tZW50LCBjb21tZW50Q29sdW1ucz0kcHJlZmVycmVkQ29t
bWVudFN0YXJ0Q29sdW1uKQogICAgICAgICBpZiBjb21tZW50Lmxlbmd0aCA+IDAKICAgICAgICAg
ICAgICIlLSN7Y29tbWVudENvbHVtbnN9cyAlcyIgJSBbZHVtcFN0ciwgY29tbWVudF0KQEAgLTE1
MSw3ICsxNTgsMTEgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgICAgIEBudW1HbG9iYWxMYWJlbHMg
Kz0gMQogICAgICAgICBwdXRzTmV3bGluZVNwYWNlcklmQXBwcm9wcmlhdGUoOmdsb2JhbCkKICAg
ICAgICAgQGludGVybmFsQ29tbWVudCA9ICRlbmFibGVMYWJlbENvdW50Q29tbWVudHMgPyAiR2xv
YmFsIExhYmVsICN7QG51bUdsb2JhbExhYmVsc30iIDogbmlsCi0gICAgICAgIEBvdXRwLnB1dHMo
Zm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSkiLCBsYXN0
Q29tbWVudCkpCisgICAgICAgIGlmIC9cQWxsaW50X29wXy8ubWF0Y2gobGFiZWxOYW1lKQorICAg
ICAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCJPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwo
b3BfI3skfi5wb3N0X21hdGNofSkiLCBsYXN0Q29tbWVudCkpCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xVRV9MQUJFTCgje2xh
YmVsTmFtZX0pIiwgbGFzdENvbW1lbnQpKQorICAgICAgICBlbmQKICAgICAgICAgQG5ld2xpbmVT
cGFjZXJTdGF0ZSA9IDpub25lICMgQWZ0ZXIgYSBnbG9iYWwgbGFiZWwsIHdlIGNhbiB1c2UgYW5v
dGhlciBzcGFjZXIuCiAgICAgZW5kCiAgICAgCkBAIC0xNzEsNiArMTgyLDE0IEBAIGNsYXNzIEFz
c2VtYmxlcgogICAgICAgICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIi
CiAgICAgZW5kCiAgICAgCisgICAgZGVmIHNlbGYuY0xhYmVsUmVmZXJlbmNlKGxhYmVsTmFtZSkK
KyAgICAgICAgIiN7bGFiZWxOYW1lfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5jTG9j
YWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICIje2xhYmVsTmFtZX0iCisgICAg
ZW5kCisgICAgCiAgICAgZGVmIGNvZGVPcmlnaW4odGV4dCkKICAgICAgICAgY2FzZSBAY29tbWVu
dFN0YXRlCiAgICAgICAgIHdoZW4gOm5vbmUKQEAgLTE5Niw2ICsyMTUsOSBAQCBjbGFzcyBBc3Nl
bWJsZXIKICAgICBkZWYgYW5ub3RhdGlvbih0ZXh0KQogICAgICAgICBAYW5ub3RhdGlvbiA9IHRl
eHQKICAgICBlbmQKKyAgICBkZWYgc291cmNlSW5zdHJ1Y3Rpb24odGV4dCkKKyAgICAgICAgQHNv
dXJjZUluc3RydWN0aW9uID0gdGV4dAorICAgIGVuZAogZW5kCiAKIGFzbUZpbGUgPSBBUkdWLnNo
aWZ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5y
YgkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YmFja2VuZHMucmIJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxNCBAQCByZXF1aXJlICJj
b25maWciCiByZXF1aXJlICJhcm12NyIKIHJlcXVpcmUgImFzdCIKIHJlcXVpcmUgIng4NiIKK3Jl
cXVpcmUgImN4eCIKIAogQkFDS0VORFMgPQogICAgIFsKICAgICAgIlg4NiIsCiAgICAgICJYODZf
NjQiLAotICAgICAiQVJNdjciCisgICAgICJBUk12NyIsCisgICAgICJDX0xPT1AiCiAgICAgXQog
CiAjIEtlZXAgdGhlIHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNl
dCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0IGJlCkBAIC00Miw3ICs0NCw4IEBAIFdPUktJTkdfQkFD
S0VORFMgPQogICAgIFsKICAgICAgIlg4NiIsCiAgICAgICJYODZfNjQiLAotICAgICAiQVJNdjci
CisgICAgICJBUk12NyIsCisgICAgICJDX0xPT1AiCiAgICAgXQogCiBCQUNLRU5EX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQpAQCAt
NzYsMTIgKzc5LDE4IEBAIGNsYXNzIExhYmVsUmVmZXJlbmNlCiAgICAgZGVmIGFzbUxhYmVsCiAg
ICAgICAgIEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKICAgICBlbmQKKyAg
ICBkZWYgY0xhYmVsCisgICAgICAgIEFzc2VtYmxlci5jTGFiZWxSZWZlcmVuY2UobmFtZVsxLi4t
MV0pCisgICAgZW5kCiBlbmQKIAogY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQogICAgIGRlZiBh
c21MYWJlbAogICAgICAgICBBc3NlbWJsZXIubG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVh
c21fIituYW1lWzEuLi0xXSkKICAgICBlbmQKKyAgICBkZWYgY0xhYmVsCisgICAgICAgIEFzc2Vt
Ymxlci5jTG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAg
ICBlbmQKIGVuZAogCiBjbGFzcyBTa2lwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9jb25maWcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY29uZmlnLnJiCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcg
QEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LSRwcmVmZXJyZWRDb21tZW50U3RhcnRDb2x1bW4gPSA3MAorJHByZWZlcnJlZENvbW1lbnRTdGFy
dENvbHVtbiA9IDYyCiAKIAogIyBUdXJucyBvbiBkdW1waW5nIG9mIHRoZSBjb3VudCBvZiBsYWJl
bHMuCkBAIC00Myw3ICs0Myw3IEBAICRlbmFibGVMYWJlbENvdW50Q29tbWVudHMgPSBmYWxzZQog
IyAgICAiXHRtb3ZsIDUyKCVyY3gpLCAlZWN4XG4iICAgLy8gSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToxODYKICMgICAgLi4uCiAjCi0kZW5hYmxlQ29kZU9y
aWdpbkNvbW1lbnRzID0gdHJ1ZQorJGVuYWJsZUNvZGVPcmlnaW5Db21tZW50cyA9IGZhbHNlCiAK
ICMgVHVybnMgb24gcmVjb3JkaW5nIGFuZCBkdW1waW5nIG9mIGFubm90YXRpb25zIGluIHRoZSBn
ZW5lcmF0ZWQgb3V0cHV0IGZpbGUuCiAjIEFuIGFubm90YXRpb25zIGNhbiBiZSBzcGVjaWZpZWQg
Zm9yIGVhY2ggaW5zdHJ1Y3Rpb24gaW4gdGhlIHNvdXJjZSBhc20gZmlsZXMuCkBAIC01NCw0ICs1
NCw0IEBAICRlbmFibGVDb2RlT3JpZ2luQ29tbWVudHMgPSB0cnVlCiAjICAgICJcdG1vdmwgNTIo
JXJjeCksICVlY3hcbiIgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMK
ICMgICAgIC4uLgogIwotJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMgPSBmYWxzZQorJGVuYWJsZUlu
c3RyQW5ub3RhdGlvbnMgPSB0cnVlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9jeHgucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vY3h4LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vY3h4LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyODAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImNvbmZpZyIKK3JlcXVpcmUgImFzdCIK
K3JlcXVpcmUgIm9wdCIKKworZGVmIGN4eE1hcFR5cGUodHlwZSkKKyAgICBjYXNlIHR5cGUKKyAg
ICB3aGVuICJpbnQiOyAgICAgICAgICIudS5pIgorICAgIHdoZW4gInVpbnQiOyAgICAgICAgIi51
LnUiCisgICAgd2hlbiAiaW50OFB0ciI7ICAgICAiLnUuaThwIgorICAgIHdoZW4gInZvaWRQdHIi
OyAgICAgIi51LnZwIgorICAgIHdoZW4gIm5hdGl2ZUZ1bmMiOyAgIi51Lm5hdGl2ZUZ1bmMiCisg
ICAgIyB3aGVuICJpbnN0cnVjdGlvbiI7ICIudS5pbnN0cnVjdGlvbiIKKyAgICB3aGVuICJkb3Vi
bGUiOyAgICAgICIudS5kIgorICAgIGVsc2U7ICAgICAgICAgICAgICAgIi51LiN7dHlwZX0iCisg
ICAgZW5kCitlbmQKKworY2xhc3MgTm9kZQorICAgIGRlZiBjeHhTaW5nbGUKKyAgICAgICAgZG91
YmxlT3BlcmFuZCA9IGN4eFZhbHVlICAjIG1sYW0gRklYTUUgSXMgdGhpcyBjb3JyZWN0PworICAg
ICAgICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3Mg
ZG91YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgICAgICJzIiArICgkfi5wb3N0X21hdGNoLnRvX2kg
KiAyKS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGls
ZHJlbgorICAgIGRlZiBkdW1wCisgICAgICAgIEBuYW1lCisgICAgZW5kCisgICAgZGVmIGN4eFZh
bHVlKHR5cGU9ImludCIpCisgICAgICAgIEBuYW1lICsgY3h4TWFwVHlwZSh0eXBlKQorICAgIGVu
ZAorZW5kCisKK0NfTE9PUF9FWFRSQV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInI5Iiks
IFNwZWNpYWxSZWdpc3Rlci5uZXcoInI4IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIildCitD
X0xPT1BfRVhUUkFfRlBSUyA9IFtdCitDX0xPT1BfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVnaXN0
ZXIubmV3KCJkOCIpCisKK2RlZiBjeHhNb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAg
ICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBi
YWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICAgIGlmICh2YWx1ZSAhPSAw
KQorICAgICAgICAkYXNtLmNvbW1lbnQgIlsgMHgleCBdIiAlIHZhbHVlCisgICAgZW5kCisgICAg
JGFzbS5wdXRjICIje3JlZ2lzdGVyLmN4eFZhbHVlKCJpbnQiKX0gPSAje3ZhbHVlfTsiCitlbmQK
KworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBkdW1wCisgICAgICAgIGNhc2UgbmFtZQorICAg
ICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICAgICAgICJyMCIKKyAgICAgICAgd2hl
biAidDEiLCAiYTEiLCAicjEiCisgICAgICAgICAgICAicjEiCisgICAgICAgIHdoZW4gInQyIiwg
ImEyIgorICAgICAgICAgICAgInIyIgorICAgICAgICB3aGVuICJhMyIKKyAgICAgICAgICAgICJy
MyIKKyAgICAgICAgd2hlbiAidDMiCisgICAgICAgICAgICAicjQiCisgICAgICAgIHdoZW4gInQ0
IgorICAgICAgICAgICAgInJQQyIKKyAgICAgICAgIyBtbGFtIEJFR0lOCisgICAgICAgIHdoZW4g
InQ1IgorICAgICAgICAgICAgInJTY3JhdGNoIgorICAgICAgICB3aGVuICJ0NiIKKyAgICAgICAg
ICAgICJyQmFzZVBDIgorICAgICAgICB3aGVuICJjc3IxIgorICAgICAgICAgICAgInIxMyIKKyAg
ICAgICAgd2hlbiAiY3NyMiIKKyAgICAgICAgICAgICJyMTQiCisgICAgICAgICMgbWxhbSBFTkQK
KyAgICAgICAgd2hlbiAiY2ZyIgorICAgICAgICAgICAgImZwIgorICAgICAgICB3aGVuICJsciIK
KyAgICAgICAgICAgICJyUmV0VlBDIgorICAgICAgICB3aGVuICJzcCIKKyAgICAgICAgICAgICJz
cCIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9
IGZvciBDX0xPT1AgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5k
CisgICAgZGVmIGN4eFZhbHVlKHR5cGU9ImludCIpCisgICAgICAgIGR1bXAgKyBjeHhNYXBUeXBl
KHR5cGUpCisgICAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgICAgZGVmIGR1bXAK
KyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAg
ICJkMCIKKyAgICAgICAgd2hlbiAiZnQxIgorICAgICAgICAgICAgImQxIgorICAgICAgICB3aGVu
ICJmdDIiCisgICAgICAgICAgICAiZDIiCisgICAgICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAg
ICJkMyIKKyAgICAgICAgd2hlbiAiZnQ0IgorICAgICAgICAgICAgImQ0IgorICAgICAgICB3aGVu
ICJmdDUiCisgICAgICAgICAgICAiZDUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNl
ICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQ19MT09QIGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBjeHhWYWx1ZSh0eXBlPSJpbnQiKQorICAg
ICAgICBkdW1wICsgY3h4TWFwVHlwZSh0eXBlKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVk
aWF0ZQorICAgIGRlZiBkdW1wCisgICAgICAgICIje3ZhbHVlfSIKKyAgICBlbmQKKyAgICBkZWYg
Y3h4VmFsdWUodHlwZT1uaWwpCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgICAgZGVmIGR1bXAKKyAgICAgICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LnZh
bHVlfV0iCisgICAgZW5kCisgICAgZGVmIGN4eFZhbHVlKHR5cGU9bmlsKQorICAgICAgICBpbnRN
ZW1SZWYKKyAgICBlbmQKKyAgICBkZWYgcG9pbnRlckV4cHIKKyAgICAgICAgaWYgYmFzZS5pc19h
PyBSZWdpc3RlcklEIGFuZCBiYXNlLm5hbWUgPT0gInNwIiAKKyAgICAgICAgICAgIG9mZnNldFZh
bHVlID0gIiN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFs
dWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxE
YXRhKSIKKyAgICAgICAgZWxzaWYgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgICAgICIje2Jh
c2UuY3h4VmFsdWUoImludDhQdHIiKX0iCisgICAgICAgIGVsc2lmIG9mZnNldC52YWx1ZSA+IDAK
KyAgICAgICAgICAgICIje2Jhc2UuY3h4VmFsdWUoImludDhQdHIiKX0gKyAje29mZnNldC52YWx1
ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICIje2Jhc2UuY3h4VmFsdWUoImludDhQdHIi
KX0gLSAjey1vZmZzZXQudmFsdWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgaW50
TWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnRwdHJfdCAqPigje3BvaW50ZXJFeHByfSkiCisgICAg
ZW5kCisgICAgZGVmIGludDhNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDhfdCAqPigje3BvaW50
ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDxp
bnQxNl90ICo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDhNZW1SZWYK
KyAgICAgICAgIipDQVNUPHVpbnQ4X3QgKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAg
IGRlZiB1aW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQxNl90ICo+KCN7cG9pbnRlckV4
cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUg
Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAg
IGRlZiBkdW1wCisgICAgICAgICJbI3tiYXNlLmR1bXB9LCAje29mZnNldC5kdW1wfSwgI3tpbmRl
eC5kdW1wfSA8PCAje3NjYWxlU2hpZnR9XSIKKyAgICBlbmQKKyAgICBkZWYgY3h4VmFsdWUodHlw
ZT1uaWwpCisgICAgICAgIGludE1lbVJlZgorICAgIGVuZAorICAgIGRlZiBwb2ludGVyRXhwcgor
ICAgICAgICBpZiBiYXNlLmlzX2E/IFJlZ2lzdGVySUQgYW5kIGJhc2UubmFtZSA9PSAic3AiCisg
ICAgICAgICAgICBvZmZzZXRWYWx1ZSA9ICIoI3tpbmRleC5jeHhWYWx1ZSgiaW50Iil9IDw8ICN7
c2NhbGVTaGlmdH0pICsgI3tvZmZzZXQuY3h4VmFsdWV9KSIKKyAgICAgICAgICAgICIoYXNzZXJ0
KCN7b2Zmc2V0VmFsdWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwg
JnNwLT5nbG9iYWxEYXRhKSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFzZS5jeHhW
YWx1ZSgiaW50OFB0ciIpfSArICgje2luZGV4LmN4eFZhbHVlKCJpbnQiKX0gPDwgI3tzY2FsZVNo
aWZ0fSkgKyAje29mZnNldC5jeHhWYWx1ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRl
ZiBpbnRNZW1SZWYKKyAgICAgICAgIipDQVNUPGludHB0cl90ICo+KCN7cG9pbnRlckV4cHJ9KSIK
KyAgICBlbmQKKyAgICBkZWYgaW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90ICo+KCN7
cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MTZNZW1SZWYKKyAgICAgICAgIipD
QVNUPGludDE2X3QgKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50OE1l
bVJlZgorICAgICAgICAiKkNBU1Q8dWludDhfdCAqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5k
CisgICAgZGVmIHVpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDE2X3QgKj4oI3twb2lu
dGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiBkYmxNZW1SZWYKKyAgICAgICAgIipDQVNUPGRv
dWJsZSAqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVB
ZGRyZXNzCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7Y29kZU9yaWdpblN0cmluZ30iCisgICAg
ZW5kCisgICAgZGVmIGN4eFZhbHVlCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCisjCisj
IExvd2VyaW5nIG9mIGJyYW5jaCBvcHMuIEZvciBleGFtcGxlOgorIworIyBiYWRkaXogZm9vLCBi
YXIsIGJhegorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYWRkaSBmb28sIGJhcgorIyBieiBiYXoK
KyMKKworZGVmIGN4eExvd2VyQnJhbmNoT3BzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAg
bGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0
cnVjdGlvbgorICAgICAgICAgICAgI2Nhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgICN3aGVu
ICJibXVsaW8iCisgICAgICAgICAgICAjICAgICRzdGRvdXQucHJpbnQgIm5vZGVbI3tub2RlLm9w
Y29kZX1dXG4iCisgICAgICAgICAgICAjICAgIHRtcDEgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdp
biwgOmdwcikKKyAgICAgICAgICAgICMgICAgdG1wMiA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2lu
LCA6Z3ByKQorICAgICAgICAgICAgIyAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sx
XSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAgICAgICAjICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5vcGVyYW5k
c1stMl0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQorICAgICAg
ICAgICAgIyAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJi
aW5lcSIsIFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICAjd2hl
biAvXmJtdWxpLworICAgICAgICAgICAgIyAgICAkc3Rkb3V0LnByaW50ICJub2RlWyN7bm9kZS5v
cGNvZGV9XVxuIgorICAgICAgICAgICAgIyAgICBjb25kaXRpb24gPSAkfi5wb3N0X21hdGNoCisg
ICAgICAgICAgICAjICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgIm11bGkiLCBub2RlLm9wZXJhbmRzWzAuLi0yXSkKKyAgICAgICAgICAgICMgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYnRpIiArIGNvbmRpdGlvbiwg
W25vZGUub3BlcmFuZHNbLTJdLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICAjZWxz
ZQorICAgICAgICAgICAgIyAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgICNlbmQKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZSAjIG1sYW0gOjogVEVTVCBiZWNhdXNlIHdlIGNvbW1l
bnRlZCBvdXQgZXZlcnl0aGluZyBhYm92ZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisj
IExvd2VyaW5nIG9mIHNoaWZ0IG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGxzaGlmdGkgZm9vLCBi
YXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGFuZGkgZm9vLCAzMSwgdG1wCisjIGxzaGlmdGkg
dG1wLCBiYXIKKyMKKworZGVmIGN4eFNhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgICBy
ZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0bXAgPSBUbXAu
bmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXcob3Bl
cmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVmIGN4eExvd2Vy
U2hpZnRPcHMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAg
ICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAg
ICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICAgICAgICB3aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAi
bHNoaWZ0cCIsICJyc2hpZnRwIiwgInVyc2hpZnRwIgorICAgICAgICAgICAgICAgIGlmIG5vZGUu
b3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtjeHhTYW5pdGl6ZVNoaWZ0
KG5vZGUub3BlcmFuZHNbMF0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSwgYW5ub3RhdGlv
bikKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJh
bmRzWzBdLCBjeHhTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2Rl
Lm9wZXJhbmRzWzJdXSwgYW5ub3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldy
b25nIG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAg
ICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1h
bGZvcm1lZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkcCAxMDAwMFtmb29dLCBi
YXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAorIyBhZGRwIGZvbywg
dG1wCisjIGxvYWRwIDBbdG1wXSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgY3h4TG93
ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICBub2RlLmN4eExvd2VyTWFsZm9ybWVk
QWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3Mg
QWRkcmVzcworICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkK
KyMgICAgICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZm
CisjICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorIyAgICAgICAg
ICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwg
dG1wXSkKKyMgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAi
YWRkcCIsIFtiYXNlLCB0bXBdKQorIyAgICAgICAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4s
IHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyMgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNlbGYKKyMgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRl
eAorICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyMgICAg
ICAgIEBtbGFtVGVzdCA9IDAKKyMgICAgICAgIGlmIEBtbGFtVGVzdCA9PSAwICMgbWxhbSBvcmln
CisjICAgICAgICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyMgICAgICAgICAgICAgICAgdG1w
ID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorIyAgICAgICAgICAgICAgICBsaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisjICAgICAg
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jh
c2UsIHRtcF0pCisjICAgICAgICAgICAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1w
LCBpbmRleCwgc2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisjICAgICAgICAg
ICAgZWxzZQorIyAgICAgICAgICAgICAgICBzZWxmCisjICAgICAgICAgICAgZW5kCisjICAgICAg
ICBlbHNlICMgbWxhbSBURVNUCisgICAgICAgICAgICBzZWxmCisjICAgICAgICBlbmQgIyBtbGFt
IFRFU1QKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgY3h4
TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHRtcCA9IFRtcC5u
ZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29k
ZU9yaWdpbiwgIm1vdmUiLCBbYWRkcmVzcywgdG1wXSkKKyAgICAgICAgQWRkcmVzcy5uZXcoY29k
ZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgIGVuZAorZW5k
CisKK2RlZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBb
XQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5ld0xpc3QgPDwg
bm9kZS5jeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICB9Cisg
ICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3NlcyBp
biBkb3VibGUgbG9hZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRkIFtmb28s
IGJhciwgOF0sIGJhegorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtmb28sIGJhciwgOF0sIHRt
cAorIyBsb2FkZCBbdG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgY3h4RG91Ymxl
QWRkcmVzcyhsaXN0KQorICAgICAgICBzZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUlu
ZGV4CisgICAgZGVmIGN4eERvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCAibGVhcCIsIFtzZWxmLCB0bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3Jp
Z2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZW5kCitlbmQKKwor
I2RlZiBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShsaXN0KQorIyAgICBuZXdMaXN0
ID0gW10KKyMgICAgbGlzdC5lYWNoIHsKKyMgICAgICAgIHwgbm9kZSB8CisjICAgICAgICBpZiBu
b2RlLmlzX2E/IEluc3RydWN0aW9uCisjICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorIyAg
ICAgICAgICAgIHdoZW4gImxvYWRkIgorIyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmN4
eERvdWJsZUFkZHJlc3MobmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dLCBub2RlLmFubm90YXRp
b24pCisjICAgICAgICAgICAgd2hlbiAic3RvcmVkIgorIyAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZWQiLCBbbm9kZS5vcGVy
YW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXS5jeHhEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSwgbm9k
ZS5hbm5vdGF0aW9uKQorIyAgICAgICAgICAgIGVsc2UKKyMgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCisjICAgICAgICAgICAgZW5kCisjICAgICAgICBlbHNlCisjICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisjICAgICAgICBlbmQKKyMgICAgfQorIyAgICBuZXdMaXN0CisjZW5k
CisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgor
IworIyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwgdG1w
CisjIHN0b3JlaSB0bXAsIFtmb29dCisjCisKKyNkZWYgY3h4TG93ZXJNaXNwbGFjZWRJbW1lZGlh
dGVzKGxpc3QpCisjICAgIG5ld0xpc3QgPSBbXQorIyAgICBsaXN0LmVhY2ggeworIyAgICAgICAg
fCBub2RlIHwKKyMgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyMgICAgICAgICAg
ICBjYXNlIG5vZGUub3Bjb2RlCisjICAgICAgICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIK
KyMgICAgICAgICAgICAgICAgb3BlcmFuZHMgPSBub2RlLm9wZXJhbmRzCisjICAgICAgICAgICAg
ICAgIG5ld09wZXJhbmRzID0gW10KKyMgICAgICAgICAgICAgICAgb3BlcmFuZHMuZWFjaCB7Cisj
ICAgICAgICAgICAgICAgICAgICB8IG9wZXJhbmQgfAorIyAgICAgICAgICAgICAgICAgICAgaWYg
b3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKKyMgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBU
bXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyMgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJtb3ZlIiwg
W29wZXJhbmQsIHRtcF0pCisjICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwg
dG1wCisjICAgICAgICAgICAgICAgICAgICBlbHNlCisjICAgICAgICAgICAgICAgICAgICAgICAg
bmV3T3BlcmFuZHMgPDwgb3BlcmFuZAorIyAgICAgICAgICAgICAgICAgICAgZW5kCisjICAgICAg
ICAgICAgICAgIH0KKyMgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgbmV3T3BlcmFuZHMsIG5vZGUuYW5ub3RhdGlv
bikKKyMgICAgICAgICAgICBlbHNlCisjICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQor
IyAgICAgICAgICAgIGVuZAorIyAgICAgICAgZWxzZQorIyAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQorIyAgICAgICAgZW5kCisjICAgIH0KKyMgICAgbmV3TGlzdAorI2VuZAorCisjCisjIExv
d2VyaW5nIG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92
ZSIgaW5zdHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisj
CisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28K
KyMKKworY2xhc3MgTm9kZQorICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKGxpc3QpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgbm9kZSB8Cisg
ICAgICAgICAgICBub2RlLmN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkK
KyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgY3h4TG93
ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBzZWxmCisgICAgZW5k
CitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGN4eExvd2VyTWFsZm9ybWVkSW1tZWRp
YXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcworICAgIGRlZiBjeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNl
KGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAg
ICBkZWYgY3h4TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBp
ZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29k
ZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVP
cmlnaW4sICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICAgICAgICB0bXAKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitkZWYgY3h4
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlz
dC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVj
dGlvbgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IG5vZGUuYW5ub3RhdGlvbgorICAgICAgICAg
ICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJh
ZGRpcyIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiCisgICAgICAgICAgICAgICAgaWYgbm9kZS5v
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLm9wZXJhbmRzWzBdLnZhbHVlIDwgMCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUub3BlcmFuZHNbMF0udmFsdWUgPj0gMjU1IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS5vcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGNv
ZGUgPX4gL2FkZC8KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wY29kZSA9ICJzdWIiICsg
bm9kZS5vcGNvZGVbLTEuLi0xXQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAg
ICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbmV3T3Bjb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRlLm5ldygtbm9kZS5vcGVy
YW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuY3h4TG93ZXJNYWxm
b3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgd2hlbiAibXVsaSIsICJtdWxwIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5u
ZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0
bXBdLCBhbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgW3RtcF0gKyBub2RlLm9wZXJhbmRzWzEu
Li0xXSkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3Qg
PDwgbm9kZS5jeHhMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAg
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlLmN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9m
IG1pc3BsYWNlZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBhZGRpIGZvbywgW2Jhcl0K
KyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRpIFtiYXJdLCB0bXAKKyMgYWRkaSBmb28sIHRt
cAorIyBzdG9yZWkgdG1wLCBbYmFyXQorIworIyBBbm90aGVyIGV4YW1wbGU6CisjCisjIGFkZGkg
W2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Zvb10sIHRtcAorIyBh
ZGRpIHRtcCwgYmFyCisjCisKK2RlZiBjeHhBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBv
cGVyYW5kLCBzdWZmaXgsIG5lZWRTdG9yZSkKKyAgICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3Bl
cmFuZC5hZGRyZXNzPworICAgIAorICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2lu
LCBpZiBzdWZmaXggPT0gImQiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQorICAgIHByZUxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgImxvYWQiICsgc3VmZml4LCBb
b3BlcmFuZCwgdG1wXSkKKyAgICBpZiBuZWVkU3RvcmUKKyAgICAgICAgcG9zdExpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3RtcCwg
b3BlcmFuZF0pCisgICAgZW5kCisgICAgdG1wCitlbmQKKworZGVmIGN4eEFzUmVnaXN0ZXJzKHBy
ZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAgIG5ld09wZXJhbmRzID0gW10K
KyAgICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG9wZXJhbmQsIGluZGV4
IHwKKyAgICAgICAgbmV3T3BlcmFuZHMgPDwgY3h4QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlz
dCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICB9Cisg
ICAgbmV3T3BlcmFuZHMKK2VuZAorCitkZWYgY3h4TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlz
dCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAor
ICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBwb3N0SW5zdHJ1
Y3Rpb25zID0gW10KKyAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRpb24KKyAg
ICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRk
cCIsICJhZGRpcyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJsc2hpZnRwIiwgIm11bGki
LCAibXVscCIsICJuZWdpIiwKKyAgICAgICAgICAgICAgICAibmVncCIsICJub3RpIiwgIm9yaSIs
ICJvcmlzIiwgIm9ycCIsICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInJzaGlmdHAiLCAidXJzaGlm
dHAiLCAic3ViaSIsCisgICAgICAgICAgICAgICAgInN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4
b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sIC9eYnRwLywgL15jaS8sIC9eY3AvLCAvXnRpLwor
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeHhBc1JlZ2lz
dGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiaSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAg
ICAgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJi
ZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAgICAg
ICAgICAidGJvIiwgImNiZXEiLCAiY2JuZXEiLCAiY2JhIiwgImNiYWVxIiwgImNiYiIsICJjYmJl
cSIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5v
cGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3h4QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQor
ICAgICAgICAgICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRi
cyIsICJ0YnMiLCAiY2JndCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCisgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4eEFzUmVnaXN0ZXJzKG5ld0xp
c3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3
aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3h4QXNSZWdpc3RlcnMo
bmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQorICAgICAgICAg
ICAgd2hlbiAiam1wIiwgImNhbGwiLCAiY3h4Q2FsbE5hdGl2ZSIKKyAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N4eEFzUmVnaXN0ZXIobmV3TGlzdCwgcG9z
dEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kc1swXSwgInAiLCBmYWxzZSldLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgIG5ld0xpc3QgKz0gcG9zdEluc3RydWN0aW9ucworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xp
c3QKK2VuZAorCisjCisjIExlYSBzdXBwb3J0LgorIworCitjbGFzcyBBZGRyZXNzCisgICAgZGVm
IGN4eEVtaXRMZWEoZGVzdGluYXRpb24pCisgICAgICAgIGlmIGRlc3RpbmF0aW9uID09IGJhc2UK
KyAgICAgICAgICAgICRhc20ucHV0YyAiI3tkZXN0aW5hdGlvbi5jeHhWYWx1ZSgiaW50OFB0ciIp
fSArPSAje29mZnNldC5jeHhWYWx1ZX07IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiN7ZGVzdGluYXRpb24uY3h4VmFsdWUoImludDhQdHIiKX0gPSAje2Jhc2UuY3h4VmFs
dWUoImludDhQdHIiKX0gKyAje29mZnNldC5jeHhWYWx1ZX07IgorICAgICAgICBlbmQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgY3h4RW1pdExlYShkZXN0aW5hdGlv
bikKKyAgICAgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUg
emVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAg
ICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmN4eFZhbHVlKCJpbnQ4UHRyIil9ID0gI3ti
YXNlLmN4eFZhbHVlKCJpbnQ4UHRyIil9ICsgKCN7aW5kZXguY3h4VmFsdWV9IDw8ICN7c2NhbGVT
aGlmdH0pOyIKKyAgICBlbmQKK2VuZAorCisjIEZJWE1FOiB3ZSBjb3VsZCBzdXBwb3J0IEFic29s
dXRlQWRkcmVzcyBmb3IgbGVhLCBidXQgd2UgZG9uJ3QuCisKKyMKKyMgQWN0dWFsIGxvd2VyaW5n
IGNvZGUgZm9sbG93cy4KKyMKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgZ2V0TW9kaWZpZWRM
aXN0Q19MT09QCisgICAgICAgIG15TGlzdCA9IEBsaXN0CisgICAgICAgIAorICAgICAgICAjIFZl
cmlmeSB0aGF0IHdlIHdpbGwgb25seSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCisgICAg
ICAgIG15TGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICB1bmxl
c3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICBub2RlLmlz
X2E/IExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBv
cgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgICAgICAgICBy
YWlzZSAiVW5leHBlY3RlZCAje25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAK
KyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBteUxpc3QgPSBj
eHhMb3dlckJyYW5jaE9wcyhteUxpc3QpCisgICAgICAgIG15TGlzdCA9IGN4eExvd2VyU2hpZnRP
cHMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBjeHhMb3dlck1hbGZvcm1lZEFkZHJlc3Nlcyht
eUxpc3QpCisgICAgICAgIG15TGlzdCA9IGN4eExvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhteUxp
c3QpCisgICAgICAgIG15TGlzdCA9IGN4eExvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKG15TGlzdCkK
KyAgICAgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpn
cHIsIENfTE9PUF9FWFRSQV9HUFJTKQorICAgICAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNU
b1RlbXBvcmFyaWVzKG15TGlzdCwgOmZwciwgQ19MT09QX0VYVFJBX0ZQUlMpCisgICAgICAgIAor
ICAgICAgICByZXR1cm4gbXlMaXN0CisgICAgZW5kCitlbmQKKworZGVmIGN4eE9wZXJhbmRzKG9w
ZXJhbmRzKQorICAgIG9wZXJhbmRzLm1hcHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCitlbmQKKwor
ZGVmIGN4eEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBjeHhPcGVyYW5kcyhbb3BlcmFu
ZHNbLTFdXSArIG9wZXJhbmRzWzAuLi0yXSkKK2VuZAorCitkZWYgZW1pdENYWENvbXBhY3Qob3Bj
b2RlLCBvcGVyYXRvciwgb3BlcmFuZHMsIHR5cGUpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAz
CisgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1syXS5jeHhWYWx1ZSh0eXBlKX0gPSAje29w
ZXJhbmRzWzFdLmN4eFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmN4eFZh
bHVlKHR5cGUpfTsiCisgICAgZWxzZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6
ZSA9PSAyCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklE
CisgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSh0eXBlKX0gPSAje29w
ZXJhbmRzWzFdLmN4eFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmN4eFZh
bHVlKHR5cGUpfTsiCisgICAgZW5kCitlbmQKKworZGVmIGVtaXRDWFgob3Bjb2RlLCBvcGVyYXRp
b24sIG9wZXJhbmRzLCB0eXBlKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAk
YXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNtLnB1dGMgIiAg
ICAgICAgcHJpbnRmKFwiXFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PVxcblwiKTsiCisgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAg
ICAje29wY29kZX0gdHlwZSAje3R5cGV9IHwgJWUgI3tvcGVyYXRpb259ICVlID0+ICVlIFxcblwi
LCAoZG91YmxlKSN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9LCAoZG91YmxlKSN7b3BlcmFu
ZHNbMF0uY3h4VmFsdWUodHlwZSl9LCAoZG91YmxlKSgje29wZXJhbmRzWzFdLmN4eFZhbHVlKHR5
cGUpfSAje29wZXJhdGlvbn0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSh0eXBlKX0pKTsiCisgICAg
ICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgJGFzbS5wdXRjICIgICAgICAg
ICNlbmRpZiAvLyBtbGFtX1BSSU5URiIKKyAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJd
LmN4eFZhbHVlKHR5cGUpfSA9ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ICN7b3BlcmF0
aW9ufSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKHR5cGUpfTsiCisgICAgZWxzZQorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICRhc20ucHV0YyAiICAgICAg
ICAjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCJc
XG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpOyIK
KyAgICAgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIiAgICAgICN7b3Bjb2RlfSB0eXBl
ICN7dHlwZX0gfCAoJWUgI3tvcGVyYXRpb259PSAlZSkgPT4gJWUgXFxuXCIsIChkb3VibGUpI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZSh0eXBlKX0sIChkb3VibGUpI3tvcGVyYW5kc1swXS5jeHhWYWx1
ZSh0eXBlKX0sIChkb3VibGUpKCN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlwZSl9ICN7b3BlcmF0
aW9ufSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKHR5cGUpfSkpOyIKKyAgICAgICAgJGFzbS5wdXRj
ICIgICAgICAgIHByaW50ZihcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT1cXG5cXG5cIik7IgorICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8vIG1s
YW1fUFJJTlRGIgorICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUodHlw
ZSl9ID0gI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSh0eXBlKX0gI3tvcGVyYXRpb259ICN7b3BlcmFu
ZHNbMF0uY3h4VmFsdWUodHlwZSl9OyIKKyAgICBlbmQKK2VuZAorCitkZWYgZW1pdENYWERvdWJs
ZUJyYW5jaChvcGVyYW5kcywgY29uZGl0aW9uKQorICAgICRhc20ucHV0YyAiaWYgKCN7b3BlcmFu
ZHNbMF0uY3h4VmFsdWUoImRvdWJsZSIpfSAje2NvbmRpdGlvbn0gI3tvcGVyYW5kc1sxXS5jeHhW
YWx1ZSgiZG91YmxlIil9KSIKKyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFuZHNbMl0u
Y0xhYmVsfTsiCitlbmQKKworZGVmIGVtaXRDWFhEb3VibGVDaGVja05hTkJyYW5jaChvcGVyYW5k
cywgY29uZGl0aW9uKQorICAgICRhc20ucHV0YyAiaWYgKGlzbmFuKCN7b3BlcmFuZHNbMF0uY3h4
VmFsdWUoImRvdWJsZSIpfSkgfHwgaXNuYW4oI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiZG91Ymxl
Iil9KSIKKyAgICAkYXNtLnB1dGMgIiAgICB8fCAoI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91
YmxlIil9ICN7Y29uZGl0aW9ufSAje29wZXJhbmRzWzFdLmN4eFZhbHVlKCJkb3VibGUiKX0pKSIK
KyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCitlbmQKKwor
CitkZWYgZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIHR5cGUsIGNvbXBhcmF0b3IpCisg
ICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmN4eFZhbHVlKHR5cGUpfSA9ICgje29wZXJhbmRz
WzBdLmN4eFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9ICN7b3AyID0gb3BlcmFuZHNbMV0uY3h4
VmFsdWUodHlwZSl9KTsiCitlbmQKKworCitkZWYgZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3Bl
cmFuZHMsIHR5cGUsIGNvbXBhcmF0b3IpCisgICAgJGFzbS5wdXRjICJpZiAoI3tvcGVyYW5kc1sw
XS5jeHhWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29wZXJhbmRzWzFdLmN4eFZhbHVlKHR5
cGUpfSkiCisgICAgJGFzbS5wdXRjICIgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07Igor
ZW5kCisKKworIyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250YWluIGEgc3RyaW5nIHRoYXQgcHJv
dmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1ZSBlLmcuICI8IDAiLgorZGVmIGdl
bmVyYXRlQ1hYQ29uZGl0aW9uRXhwcmVzc2lvbihvcGVyYW5kcywgY29uZGl0aW9uVGVzdCkKKyAg
ICBvcDEgPSBvcGVyYW5kc1swXS5jeHhWYWx1ZQorCisgICAgIyBUaGUgb3BlcmFuZHMgbXVzdCBj
b25zaXN0IG9mIDIgb3IgMyB2YWx1ZXMuCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biAyICMgSnVzdCB0ZXN0IG9wMSBhZ2FpbnN0IHRoZSBjb25kaXRpb25UZXN0LgorICAgICAgICBs
aHMgPSBvcDEKKyAgICB3aGVuIDMgIyBNYXNrIG9wMSB3aXRoIG9wMiBiZWZvcmUgdGVzdGluZyBh
Z2FpbnN0IHRoZSBjb25kaXRpb25UZXN0LgorICAgICAgICBsaHMgPSAiKCN7b3AxfSAmICN7b3Bl
cmFuZHNbMV0uY3h4VmFsdWV9KSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJFeHBlY3RlZCAy
IG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iCisgICAgZW5kCisgICAgCisgICAgIiN7bGhzfSAje2NvbmRpdGlvblRlc3R9IgorZW5k
CisKKyMgY29uZGl0aW9uVGVzdCBzaG91bGQgY29udGFpbiBhIHN0cmluZyB0aGF0IHByb3ZpZGVz
IGEgY29tcGFyYXRvciBhbmQgYSBSSFMKKyMgdmFsdWUgZS5nLiAiPCAwIi4KK2RlZiBlbWl0Q1hY
VGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCBjb25kaXRpb25UZXN0LCBicmFuY2hUYXJnZXQpCisg
ICAgY29uZGl0aW9uRXhwciA9IGdlbmVyYXRlQ1hYQ29uZGl0aW9uRXhwcmVzc2lvbihvcGVyYW5k
cywgY29uZGl0aW9uVGVzdCkKKyAgICAkYXNtLnB1dGMgImlmICgje2NvbmRpdGlvbkV4cHJ9KSIK
KyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7YnJhbmNoVGFyZ2V0fTsiCitlbmQKKworZGVmIGVt
aXRDWFhUZXN0U2V0KG9wZXJhbmRzLCBjb25kaXRpb25UZXN0KQorICAgICMgbWxhbSBGSVhNRQor
ICAgICMgJGFzbS5wdXRjICJtb3ZzICN7b3BlcmFuZHNbLTFdLmN4eE9wZXJhbmR9LCBcIzAiCisg
ICAgIyBlbWl0Q1hYVGVzdChvcGVyYW5kcykKKyAgICAjICRhc20ucHV0YyAiaXQgI3tjb2RlfSIK
KyAgICAjICRhc20ucHV0YyAibW92I3tjb2RlfSAje29wZXJhbmRzWy0xXS5jeHhPcGVyYW5kfSwg
XCMxIgorICAgIG9wMSA9IG9wZXJhbmRzWy0xXS5jeHhWYWx1ZQorICAgIGNvbmRpdGlvbkV4cHIg
PSBnZW5lcmF0ZUNYWENvbmRpdGlvbkV4cHJlc3Npb24ob3BlcmFuZHMsIGNvbmRpdGlvblRlc3Qp
CisgICAgJGFzbS5wdXRjICIje29wMX0gPSAoI3tjb25kaXRpb25FeHByfSk7IgorZW5kCisKK2Rl
ZiBlbWl0Q1hYT3BBbmRCcmFuY2gob3Bjb2RlLCBvcGVyYW5kcykKKyAgICBvcGVyYXRpb24gPSBT
dHJpbmcoL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvLm1hdGNoKG9wY29kZSkpCisgICAgY29uZGl0
aW9uID0gJH4ucG9zdF9tYXRjaAorCisgICAgY2FzZSBvcGVyYXRpb24KKyAgICB3aGVuICJiYWRk
aSIsICJiYWRkcCIKKyAgICAgICAgb3BlcmF0aW9uID0gIisiCisgICAgd2hlbiAiYnN1YmkiCisg
ICAgICAgIG9wZXJhdGlvbiA9ICItIgorICAgIHdoZW4gImJvcnJpIgorICAgICAgICBvcGVyYXRp
b24gPSAifCIKKyAgICBlbmQKKworICAgIGNhc2UgY29uZGl0aW9uCisgICAgd2hlbiAibyIKKyAg
ICAgICAgcmFpc2UgIkNhbm5vdCBoYW5kbGUgb3ZlcmZsb3cgaW4gdGhpcyBlbWl0dGVyLiIKKyAg
ICB3aGVuICJzIgorICAgICAgICBjb25kaXRpb25UZXN0ID0gIjwgMCIKKyAgICB3aGVuICJ6Igor
ICAgICAgICBjb25kaXRpb25UZXN0ID0gIj09IDAiCisgICAgd2hlbiAibnoiCisgICAgICAgIGNv
bmRpdGlvblRlc3QgPSAiIT0gMCIKKyAgICBlbHNlCisgICAgICAgICRzdGRvdXQucHJpbnQgIlVu
a25vd24gY29uZGl0aW9uICcje2NvbmRpdGlvbn0nIgorICAgIGVuZAorCisgICAgb3AxID0gb3Bl
cmFuZHNbMF0uY3h4VmFsdWUKKyAgICBvcDIgPSBvcGVyYW5kc1sxXS5jeHhWYWx1ZQorCisgICAg
JGFzbS5wdXRjICJ7IgorICAgICRhc20ucHV0YyAiICAgIGludHB0cl90IG9wMSA9ICN7b3AxfTsi
CisgICAgJGFzbS5wdXRjICIgICAgaW50cHRyX3Qgb3AyID0gI3tvcDJ9OyIKKyAgICAkYXNtLnB1
dGMgIiAgICBpbnRwdHJfdCB0ZW1wID0gb3AyICN7b3BlcmF0aW9ufSBvcDE7IgorICAgICRhc20u
cHV0YyAiICAgIGlmICh0ZW1wICN7Y29uZGl0aW9uVGVzdH0pIgorICAgICRhc20ucHV0YyAiICAg
ICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICRhc20ucHV0YyAiICAgICN7
b3AyfSA9IHRlbXA7IgorICAgICRhc20ucHV0YyAifSIKK2VuZAorCitkZWYgZW1pdENYWE9wQW5k
QnJhbmNoSWZPdmVyZmxvdyhvcGNvZGUsIG9wZXJhbmRzKQorICAgIGNhc2Ugb3Bjb2RlCisgICAg
d2hlbiAiYmFkZGlvIiwgImJhZGRwbyIKKyAgICAgICAgb3BlcmF0aW9uID0gIisiCisgICAgd2hl
biAiYnN1YmlvIgorICAgICAgICBvcGVyYXRpb24gPSAiLSIKKyAgICBlbHNlCisgICAgICAgIHJh
aXNlICJVbmhhbmRsZWQgb3Bjb2RlICN7b3Bjb2RlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9Igor
ICAgIGVuZAorCisgICAgJGFzbS5wdXRjICJ7IgorICAgIGlmIG9wZXJhdGlvbiA9PSAiKyIKKyAg
ICAgICAgJGFzbS5wdXRjICIgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOiIK
KyAgICAgICAgJGFzbS5wdXRjICIgICAgLy8gMCAgICAgICAwICAgICAgIHwgc2lnbihiK2EpID0g
MSAocG9zICsgcG9zICE9IG5lZykiCisgICAgICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAg
MSAgICAgICB8IG5ldmVyIgorICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDAgICAg
ICAgfCBuZXZlciIKKyAgICAgICAgJGFzbS5wdXRjICIgICAgLy8gMSAgICAgICAxICAgICAgIHwg
c2lnbihiK2EpID0gMCAobmVnICsgbmVnICE9IHBvcykiCisgICAgICAgIG92ZXJmbG93VGVzdCA9
ICIoKFNJR05fQklUKGIpID09IFNJR05fQklUKGEpKSAmJiAoU0lHTl9CSVQoYithKSAhPSBTSUdO
X0JJVChhKSkpIgorICAgIGVsc2UgIyBvcGNvZGUgPSAiLSIKKyAgICAgICAgJGFzbS5wdXRjICIg
ICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOiIKKyAgICAgICAgJGFzbS5wdXRj
ICIgICAgLy8gMCAgICAgICAwICAgICAgIHwgbmV2ZXIiCisgICAgICAgICRhc20ucHV0YyAiICAg
IC8vIDAgICAgICAgMSAgICAgICB8IHNpZ24oYi1hKSA9IDEgKHBvcyAtIG5lZyAhPSBwb3MpIgor
ICAgICAgICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDAgICAgICAgfCBzaWduKGItYSkgPSAw
IChuZWcgLSBwb3MgIT0gcG9zKSIKKyAgICAgICAgJGFzbS5wdXRjICIgICAgLy8gMSAgICAgICAx
ICAgICAgIHwgbmV2ZXIiCisgICAgICAgIG92ZXJmbG93VGVzdCA9ICIoKFNJR05fQklUKGIpICE9
IFNJR05fQklUKGEpKSAmJiAoU0lHTl9CSVQoYi1hKSA9PSBTSUdOX0JJVChhKSkpIgorICAgIGVu
ZAorICAgICRhc20ucHV0YyAiICAgIGludHB0cl90IGEgPSAje29wZXJhbmRzWzBdLmN4eFZhbHVl
fTsiCisgICAgJGFzbS5wdXRjICIgICAgaW50cHRyX3QgYiA9ICN7b3BlcmFuZHNbMV0uY3h4VmFs
dWV9OyIKKyAgICAjIG1sYW0gQkVHSU4gdGVzdAorICAgICMgJGFzbS5wdXRjICIgICAgaWYgI3tv
dmVyZmxvd1Rlc3R9IgorICAgICMgJGFzbS5wdXRjICIgICAgICAgIGdvdG8gI3tvcGVyYW5kc1sy
XS5jTGFiZWx9OyIKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAje292ZXJmbG93VGVzdH0geyIKKyAg
ICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAg
ICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgYmFk
ZGlvIG92ZXJmbG93ISEhISEgXFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRm
KFwiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsi
CisgICAgJGFzbS5wdXRjICIgICAgICAgICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20u
cHV0YyAiICAgICAgICBnb3RvICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgJGFzbS5wdXRj
ICIgICAgfSIKKyAgICAjIG1sYW0gRU5EIHRlc3QKKyAgICAkYXNtLnB1dGMgIiAgICAje29wZXJh
bmRzWzFdLmN4eFZhbHVlfSA9IGIgI3tvcGVyYXRpb259IGE7IgorICAgICRhc20ucHV0YyAiICAg
ICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIlxc
blxcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cIik7Igor
ICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICBiYWRkaW8gcmVzdWx0ID0gJWxk
IFxcblwiLCAje29wZXJhbmRzWzFdLmN4eFZhbHVlfSk7IgorICAgICRhc20ucHV0YyAiICAgICAg
ICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxu
XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8vbWxhbV9QUklOVEYiCisg
ICAgJGFzbS5wdXRjICJ9IgorZW5kCisKK2RlZiBlbWl0Q1hYTXVsQW5kQnJhbmNoSWZPdmVyZmxv
dyhvcGNvZGUsIG9wZXJhbmRzKQorICAgICNvcGVyYXRpb24gPSBTdHJpbmcoL15iKGFkZGl8c3Vi
aXxvcml8YWRkcCkvLm1hdGNoKG9wY29kZSkpCisgICAgI2NvbmRpdGlvbiA9ICR+LnBvc3RfbWF0
Y2gKKworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgICBvcGVyYXRp
b24gPSAiKiIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJVbmhhbmRsZWQgb3Bjb2RlICN7b3Bj
b2RlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorCisgICAgJGFzbS5wdXRjICJ7
IgorICAgICRhc20ucHV0YyAiICAgIGludHB0cl90IG9wMSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFs
dWV9OyIKKyAgICAkYXNtLnB1dGMgIiAgICBpbnRwdHJfdCBvcDIgPSAje29wZXJhbmRzWzFdLmN4
eFZhbHVlfTsiCisgICAgJGFzbS5wdXRjICIgICAgLy8gQ2hlYXAgb3ZlcmZsb3cgY2hlY2suICBX
ZSdsbCBsZXQgc2xvdyBwYXRoIGhhbmRsZSB0aGUgaGFyZCBjYXNlIGJlbG93OiIKKyAgICAjIG1s
YW0gQkVHSU4gdGVzdAorICAgICMgJGFzbS5wdXRjICIgICAgaWYgKChvcDEgfCBvcDIpID4+IDE1
KSIKKyAgICAjICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgorICAgICRhc20ucHV0YyAiICAgIGlmICgob3AyIHwgb3AxKSA+PiAxNSkgeyIKKyAgICAkYXNt
LnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAgICAgICBw
cmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgYm11bGlvIG92
ZXJmbG93ISEhISEgICVsZCAqICVsZCBcXG5cIiwgb3AxLCBvcDIpOyIKKyAgICAkYXNtLnB1dGMg
IiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PVxcblxcblwiKTsiCisgICAgJGFzbS5wdXRjICIgICAgICAgICNlbmRpZiAvLyBtbGFtX1BS
SU5URiIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgZ290byAgI3tvcGVyYW5kc1syXS5jTGFiZWx9
OyIKKyAgICAkYXNtLnB1dGMgIiAgICB9IgorICAgICMgbWxhbSBFTkQgdGVzdAorICAgICRhc20u
cHV0YyAiICAgICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9ID0gb3AyICN7b3BlcmF0aW9ufSBvcDE7
IgorICAgICRhc20ucHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgJGFzbS5wdXRj
ICIgICAgICAgIHByaW50ZihcIlxcblxcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cXG5cIik7IgorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAg
ICBibXVsaW8gcmVzdWx0ID0gJWxkICogJWxkID09PiAlbGQgXFxuXCIsIG9wMiwgb3AxLCAje29w
ZXJhbmRzWzFdLmN4eFZhbHVlfSk7IgorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAg
ICAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGIgorICAgICRhc20ucHV0
YyAifSIKK2VuZAorCisjIG9wZXJhbmRzOiBjYWxsVGFyZ2V0LCBjdXJyZW50RnJhbWUsIGN1cnJl
bnRQQworZGVmIGVtaXRDWFhDYWxsU2xvd1BhdGgob3Bjb2RlLCBvcGVyYW5kcykKKyAgICAkYXNt
LnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVj
U3RhdGUqPigje29wZXJhbmRzWzFdLmN4eFZhbHVlKCJ2b2lkUHRyIil9KTsiCisgICAgJGFzbS5w
dXRjICIgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KCN7b3BlcmFuZHNb
Ml0uY3h4VmFsdWUoInZvaWRQdHIiKX0pOyIKKyAgICAjICRhc20ucHV0YyAiICAgIC8vcHJpbnRm
KFwibWxhbSBCRUZPUkUgZXhlYyAlcCBwYyAlcFxcblwiLCBleGVjLCBwYyk7IgorICAgICMgJGFz
bS5wdXRjICIgICAgcHJpbnRmKFwibWxhbSBCRUZPUkUgZXhlYyAlcCBleGVjLT5jdXJyZW50VlBD
KCkgPSAlcFxcblwiLCBleGVjLCBleGVjLT5jdXJyZW50VlBDKCkpOyIKKyAgICAkYXNtLnB1dGMg
IiAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gI3tvcGVyYW5kc1swXS5jTGFiZWx9KGV4
ZWMsIHBjKTsiCisgICAgJGFzbS5wdXRjICIgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQs
IHIwLnUuaW5zdHJ1Y3Rpb24sIHIxLnUuZXhlY1N0YXRlKTsiCisgICAgJGFzbS5wdXRjICIgICAg
QVNTRVJUKGNhbGxGcmFtZSAhPSAwKTsgLy8gbWxhbSBERUJVRyBURVNUIG9ubHkiCisgICAgIyAk
YXNtLnB1dGMgIiAgICBwcmludGYoXCIgICBtbGFtIEFGVEVSIFNMT1cgUEFUSCByMSAlcCBjYWxs
RnJhbWUgJXAgPD09PT09PT09PT09PT09PT09PVxcblwiLCByMS51LmV4ZWNTdGF0ZSwgY2FsbEZy
YW1lKTsgLy8gbWxhbSBERUJVRyBURVNUIG9ubHkiCisgICAgIyBtbGFtIE5PVCBORUVERUQ/ICRh
c20ucHV0YyAiICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsiCisgICAgIyAkYXNtLnB1dGMgIiAg
ICAvL3ByaW50ZihcIm1sYW0gQUZURVIgZXhlYyAlcCBwYyAlcFxcblwiLCByMS51LmV4ZWNTdGF0
ZSwgcjAudS5pbnN0cnVjdGlvbik7IgorICAgICRhc20ucHV0YyAifSIKK2VuZAorCitjbGFzcyBJ
bnN0cnVjdGlvbgorICAgICMgbWxhbSBAbWxhbV9QUklOVEYgPSB0cnVlCisgICAgZGVmIGxvd2Vy
Q19MT09QCisgICAgICAgIEBtbGFtX1BSSU5URiA9IGZhbHNlCisgICAgICAgICRhc20uY29kZU9y
aWdpbiBjb2RlT3JpZ2luU3RyaW5nIGlmICRlbmFibGVDb2RlT3JpZ2luQ29tbWVudHMKKyAgICAg
ICAgJGFzbS5zb3VyY2VJbnN0cnVjdGlvbiAiI3tvcGNvZGV9ICN7Y3h4T3BlcmFuZHMob3BlcmFu
ZHMpfTsiIGlmICRlbmFibGVTb3VyY2VJbnN0cnVjdGlvbkR1bXAKKyAgICAgICAgJGFzbS5hbm5v
dGF0aW9uIGFubm90YXRpb24gaWYgJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMKKworICAgICAgICAj
IG1sYW0gQkVHSU4KKyAgICAgICAgaWYgQG1sYW1fUFJJTlRGCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiAgICBwcmludGYoXCIgICAgW3BjICVwIGZwICVwIGxyICVwXSBBU00gI3tvcGNvZGV9ICN7
Y3h4T3BlcmFuZHMob3BlcmFuZHMpfVxcblwiLCB2UEMsIGNhbGxGcmFtZSwgclJldFZQQy51LnZw
KTsiCisgICAgICAgIGVuZAorICAgICAgICAjIG1sYW0gRU5ECisKKyAgICAgICAgY2FzZSBvcGNv
ZGUKKyAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIgorICAgICAgICAgICAgaWYg
b3Bjb2RlID09ICJhZGRpcyIKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAicyIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAiIgorICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFu
ZCBzdWZmaXguZW1wdHk/CisgICAgICAgICAgICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJh
bmRzWzJdLmN4eFZhbHVlfSA9ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9OyIKKyAgICAgICAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY3h4VmFsdWV9ID0gI3tvcGVyYW5kc1sxXS5jeHhWYWx1
ZX0gKyAje29wZXJhbmRzWzBdLmN4eFZhbHVlfTsiCisgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgIyBtbGFtIFdST05HICRhc20ucHV0YyAiI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAg
ICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1syXS5jeHhWYWx1ZX0gPSAje29wZXJhbmRz
WzFdLmN4eFZhbHVlfSArICN7b3BlcmFuZHNbMF0uY3h4VmFsdWV9OyIKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAg
ICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAg
ICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gKz0g
I3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1sxXS5jeHhWYWx1ZX0gKz0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAg
ICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgIiYiLCBvcGVyYW5kcywgImludCIpCisg
ICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFjdChvcGNv
ZGUsICJ8Iiwgb3BlcmFuZHMsICJpbnQiKQorICAgICAgICB3aGVuICJvcmlzIgorICAgICAgICAg
ICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAifCIsIG9wZXJhbmRzLCAiaW50IikKKyAgICAgICAg
d2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAi
XiIsIG9wZXJhbmRzLCAiaW50IikKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIsICJsc2hpZnRwIgor
ICAgICAgICAgICAgZW1pdENYWENvbXBhY3Qob3Bjb2RlLCAiPDwiLCBvcGVyYW5kcywgImludCIp
CisgICAgICAgIHdoZW4gInJzaGlmdGkiLCAicnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRDWFhD
b21wYWN0KG9wY29kZSwgIj4+Iiwgb3BlcmFuZHMsICJpbnQiKQorICAgICAgICB3aGVuICJ1cnNo
aWZ0aSIsICJ1cnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29kZSwgIj4+
Iiwgb3BlcmFuZHMsICJ1aW50IikKKyAgICAgICAgd2hlbiAibXVsaSIsICJtdWxwIgorICAgICAg
ICAgICAgZW1pdENYWCgibXVsIiwgIioiLCBvcGVyYW5kcywgImludCIpCisgICAgICAgIHdoZW4g
InN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYWN0KG9wY29k
ZSwgIi0iLCBvcGVyYW5kcywgImludCIpCisgICAgICAgIHdoZW4gIm5lZ2kiLCAibmVncCIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX0gPSAtI3tvcGVyYW5k
c1swXS5jeHhWYWx1ZX07IgorICAgICAgICB3aGVuICJub3RpIgorICAgICAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzBdLmN4eFZhbHVlfSA9ICEje29wZXJhbmRzWzBdLmN4eFZhbHVlfTsi
CisgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJsb2FkcCIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9ID0gI3tvcGVyYW5kc1swXS5p
bnRNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5pbnRNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jeHhW
YWx1ZSgiaW50Iil9OyIKKyAgICAgICAgd2hlbiAibG9hZGIiCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInVpbnQiKX0gPSAje29wZXJhbmRzWzBdLnVpbnQ4
TWVtUmVmfTsiCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
I3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9ID0gI3tvcGVyYW5kc1swXS5pbnQ4TWVtUmVm
fTsiCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVy
YW5kc1sxXS51aW50OE1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJpbnQiKX0iCisg
ICAgICAgIHdoZW4gImxvYWRoIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFd
LmN4eFZhbHVlKCJ1aW50Iil9ID0gI3tvcGVyYW5kc1swXS51aW50MTZNZW1SZWZ9OyIKKyAgICAg
ICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmN4
eFZhbHVlKCJpbnQiKX0gPSAje29wZXJhbmRzWzBdLmludDE2TWVtUmVmfTsiCisgICAgICAgIHdo
ZW4gInN0b3JlaCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiKiN7b3BlcmFuZHNbMV0udWludDE2
TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoIml2YWwiKX07IgorICAgICAgICB3aGVu
ICJsb2FkZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgi
ZG91YmxlIil9ID0gI3tvcGVyYW5kc1swXS5kYmxNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAic3Rv
cmVkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmRibE1lbVJlZn0gPSAj
e29wZXJhbmRzWzBdLmN4eFZhbHVlKCJkb3VibGUiKX07IgorICAgICAgICB3aGVuICJhZGRkIgor
ICAgICAgICAgICAgZW1pdENYWChvcGNvZGUsICIrIiwgb3BlcmFuZHMsICJkb3VibGUiKQorICAg
ICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgZW1pdENYWChvcGNvZGUsICIvIiwgb3BlcmFu
ZHMsICJkb3VibGUiKQorICAgICAgICB3aGVuICJzdWJkIgorICAgICAgICAgICAgZW1pdENYWChv
cGNvZGUsICItIiwgb3BlcmFuZHMsICJkb3VibGUiKQorICAgICAgICB3aGVuICJtdWxkIgorICAg
ICAgICAgICAgZW1pdENYWChvcGNvZGUsICIqIiwgb3BlcmFuZHMsICJkb3VibGUiKQorICAgICAg
ICB3aGVuICJzcXJ0ZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jeHhW
YWx1ZSgiZG91YmxlIil9ID0gc3FydCgje29wZXJhbmRzWzFdLmN4eFZhbHVlKCJkb3VibGUiKX0p
OyIKKyAgICAgICAgd2hlbiAiY2kyZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1sxXS5jeHhWYWx1ZSgiZG91YmxlIil9ID0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX07IgorICAg
ICAgICAgICAgJGFzbS5wdXRjICIgICAgICAgICNpZiBtbGFtX1BSSU5URiIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAg
ICAgICBwcmludGYoXCIgICAgICAje29wY29kZX0gI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZSgiZG91
YmxlIil9ICVlID0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX0gJWxkXFxuXCIsICN7b3BlcmFuZHNb
MV0uY3h4VmFsdWUoImRvdWJsZSIpfSwgI3tvcGVyYW5kc1swXS5jeHhWYWx1ZX0pOyIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgICAgICAgICAKKyAgICAgICAgd2hl
biAiYmRlcSIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3BlcmFuZHMsICI9PSIp
CisgICAgICAgICN3aGVuICJiZG5lcSIKKyAgICAgICAgIyAgICAkYXNtLnB1dGMgInZjbXBlLmY2
NCAje2N4eE9wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICMgICAgJGFzbS5wdXRj
ICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICAgICMgICAgaXNVbm9yZGVyZWQgPSBMb2Nh
bExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgICAjICAgICRhc20ucHV0YyAiYnZzICN7TGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5jTGFiZWx9IgorICAgICAg
ICAjICAgICRhc20ucHV0YyAiYm5lICN7b3BlcmFuZHNbMl0uY0xhYmVsfSIKKyAgICAgICAgIyAg
ICBpc1Vub3JkZXJlZC5sb3dlcigiQ19MT09QIikKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAg
ICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3BlcmFuZHMsICI+IikKKyAgICAgICAgd2hlbiAi
YmRndGVxIgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUJyYW5jaChvcGVyYW5kcywgIj49IikK
KyAgICAgICAgd2hlbiAiYmRsdCIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVCcmFuY2gob3Bl
cmFuZHMsICI8IikKKyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgZW1pdENYWERv
dWJsZUJyYW5jaChvcGVyYW5kcywgIjw9IikKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAgICAg
ICAgICAgZW1pdENYWERvdWJsZUNoZWNrTmFOQnJhbmNoKG9wZXJhbmRzLCAiPT0iKQorICAgICAg
ICB3aGVuICJiZG5lcXVuIgorICAgICAgICAgICAgZW1pdENYWERvdWJsZUNoZWNrTmFOQnJhbmNo
KG9wZXJhbmRzLCAiIT0iKQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAgICAgICAgICBlbWl0
Q1hYRG91YmxlQ2hlY2tOYU5CcmFuY2gob3BlcmFuZHMsICI+IikKKyAgICAgICAgd2hlbiAiYmRn
dGVxdW4iCisgICAgICAgICAgICBlbWl0Q1hYRG91YmxlQ2hlY2tOYU5CcmFuY2gob3BlcmFuZHMs
ICI+PSIpCisgICAgICAgIHdoZW4gImJkbHR1biIKKyAgICAgICAgICAgIGVtaXRDWFhEb3VibGVD
aGVja05hTkJyYW5jaChvcGVyYW5kcywgIjwiKQorICAgICAgICB3aGVuICJiZGx0ZXF1biIKKyAg
ICAgICAgICAgIGVtaXRDWFhEb3VibGVDaGVja05hTkJyYW5jaChvcGVyYW5kcywgIjw9IikKKyAg
ICAgICAgd2hlbiAiYnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlk
ZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnBy
ZXRlcgorICAgICAgICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAg
ICAgcmFpc2UgIkNfTE9PUCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2Rl
T3JpZ2lufSIKKyAgICAgICAgd2hlbiAidGQyaSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tv
cGVyYW5kc1sxXS5jeHhWYWx1ZSgiaW50Iil9ID0gI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiZG91
YmxlIil9OyIKKyAgICAgICAgd2hlbiAiYmNkMmkiICAjIG9wZXJhbmRzOiBzcmNEYmwgZHN0SW50
IHNsb3dQYXRoCisgICAgICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiAgICBkb3VibGUgZCA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoImRvdWJsZSIpfTsiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBjb25zdCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihkKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpZiAoYXNJbnQz
MiAhPSBkIHx8ICghYXNJbnQzMiAmJiBzaWduYml0KGQpKSkgLy8gdHJ1ZSBmb3IgLTAuMCIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgI3tvcGVyYW5kc1sxXS5jeHhWYWx1ZX0gPSBh
c0ludDMyOyIgICAgICAgICAgICAKKyAgICAgICAgICAgICRhc20ucHV0YyAifSIKKworICAgICAg
ICB3aGVuICJtb3ZkeiIKKyAgICAgICAgICAgICMgRklYTUU6IGVpdGhlciBzdXBwb3J0IHRoaXMg
b3IgcmVtb3ZlIGl0LgorICAgICAgICAgICAgcmFpc2UgIkNfTE9PUCBkb2VzIG5vdCBzdXBwb3J0
IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgI3doZW4gInBvcCIKKyAg
ICAgICAgIyAgICAkYXNtLnB1dGMgInBvcCAje29wZXJhbmRzWzBdLmN4eE9wZXJhbmR9IgorICAg
ICAgICAjd2hlbiAicHVzaCIKKyAgICAgICAgIyAgICAkYXNtLnB1dGMgInB1c2ggI3tvcGVyYW5k
c1swXS5jeHhPcGVyYW5kfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAg
ICAgIGN4eE1vdmVJbW1lZGlhdGUob3BlcmFuZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5j
eHhWYWx1ZSgidWludCIpfSA9ICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoInVpbnQiKX07IgorICAg
ICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gIm5vcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
Ly8gbm9wIgorICAgICAgICB3aGVuICJiaWVxIiwgImJwZXEiLCAiYmJlcSIKKyAgICAgICAgICAg
IGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAiaW50IiwgIj09IikKKyAgICAgICAg
d2hlbiAiYmluZXEiLCAiYnBuZXEiLCAiYmJuZXEiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFy
ZUFuZEJyYW5jaChvcGVyYW5kcywgImludCIsICIhPSIpCisgICAgICAgIHdoZW4gImJpYSIsICJi
cGEiLCAiYmJhIgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMs
ICJ1aW50IiwgIj4iKQorICAgICAgICB3aGVuICJiaWFlcSIsICJicGFlcSIsICJiYmFlcSIKKyAg
ICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAidWludCIsICI+PSIp
CisgICAgICAgIHdoZW4gImJpYiIsICJicGIiLCAiYmJiIgorICAgICAgICAgICAgZW1pdENYWENv
bXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJ1aW50IiwgIjwiKQorICAgICAgICB3aGVuICJiaWJl
cSIsICJicGJlcSIsICJiYmJlcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCAidWludCIsICI8PSIpCisgICAgICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJi
Ymd0IgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJpbnQi
LCAiPiIpCisgICAgICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJndGVxIgorICAgICAg
ICAgICAgZW1pdENYWENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsICJpbnQiLCAiPj0iKQorICAg
ICAgICB3aGVuICJiaWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICAgICAgIGVtaXRDWFhDb21w
YXJlQW5kQnJhbmNoKG9wZXJhbmRzLCAiaW50IiwgIjwiKQorICAgICAgICB3aGVuICJiaWx0ZXEi
LCAiYnBsdGVxIiwgImJibHRlcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCAiaW50IiwgIjw9IikKKyAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0
YnoiCisgICAgICAgICAgICBlbWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCAiPT0gMCIs
IG9wZXJhbmRzWy0xXS5jTGFiZWwpCisgICAgICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0
Ym56IgorICAgICAgICAgICAgZW1pdENYWFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgIiE9IDAi
LCBvcGVyYW5kc1stMV0uY0xhYmVsKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gImJ0aW8i
LCAiYnRwbyIsICJidGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgICAjIG1sYW0gZW1pdENY
WFRlc3Qob3BlcmFuZHMpCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgICMgbWxhbSAkYXNtLnB1
dGMgImJ2cyAje29wZXJhbmRzWy0xXS5jTGFiZWx9IgorICAgICAgICAjIG1sYW0gVU5VU0VEICAg
ICBlbWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCAidnMiKSAjIEJyYW5jaCBpZiBvdmVy
Zmxvdy4KKyAgICAgICAgd2hlbiAiYnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICAgICAgICBl
bWl0Q1hYVGVzdEFuZEJyYW5jaElmKG9wZXJhbmRzLCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJl
bCkKKyAgICAgICAgd2hlbiAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/
CisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvICN7b3BlcmFuZHNbMF0uY0xhYmVsfTsi
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvICoje29w
ZXJhbmRzWzBdLmN4eFZhbHVlKCJ2b2lkUHRyIil9OyIKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICB3aGVuICJjYWxsIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyAvLyBnZW5lcmlj
IGNhbGwgbm90IHN1cHBvcnRlZCEiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8K
KyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgdm9pZCAoKmYpKCkgPSByZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oI3tvcGVyYW5k
c1swXS5jTGFiZWx9KTsiCisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgZigpOyIKKyAg
ICAgICAgICAgICAgICAkYXNtLnB1dGMgIn0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIHZvaWQg
KCpmKSgpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KCN7b3BlcmFuZHNbMF0uY3h4VmFs
dWUoInZvaWRQdHIiKX0pOyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBmKCk7Igor
ICAgICAgICAgICAgICAgICRhc20ucHV0YyAifSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3
aGVuICJicmVhayIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQ1JBU0goKTsgLy8gTm90IGhhbmRs
ZWQgeWV0LiIKKyAgICAgICAgd2hlbiAicmV0X21sYW0iCisgICAgICAgICAgICAjIG1sYW0gJGFz
bS5wdXRjICJieCBsciIKKyAgICAgICAgICAgICRhc20ucHV0YyAiZ290byBkb1JldHVybkhlbHBl
cjsiCisgICAgICAgICAgICAjICRhc20ucHV0YyAiQ1JBU0goKTsgLy8gbWxhbSBGSVhNRSIKKyAg
ICAgICAgd2hlbiAiY2llcSIsICJjcGVxIiwgImNiZXEiCisgICAgICAgICAgICBlbWl0Q1hYQ29t
cGFyZUFuZFNldChvcGVyYW5kcywgInVpbnQiLCAiPT0iKQorICAgICAgICB3aGVuICJjaW5lcSIs
ICJjcG5lcSIsICJjYm5lcSIKKyAgICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJh
bmRzLCAidWludCIsICIhPSIpCisgICAgICAgIHdoZW4gImNpYSIsICJjcGEiLCAiY2JhIgorICAg
ICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJ1aW50IiwgIj4iKQorICAg
ICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIsICJjYmFlcSIKKyAgICAgICAgICAgIGVtaXRDWFhD
b21wYXJlQW5kU2V0KG9wZXJhbmRzLCAidWludCIsICI+PSIpCisgICAgICAgIHdoZW4gImNpYiIs
ICJjcGIiLCAiY2JiIgorICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMs
ICJ1aW50IiwgIjwiKQorICAgICAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIsICJjYmJlcSIKKyAg
ICAgICAgICAgIGVtaXRDWFhDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCAidWludCIsICI8IikKKyAg
ICAgICAgd2hlbiAiY2lndCIsICJjcGd0IiwgImNiZ3QiCisgICAgICAgICAgICBlbWl0Q1hYQ29t
cGFyZUFuZFNldChvcGVyYW5kcywgImludCIsICI+IikKKyAgICAgICAgd2hlbiAiY2lndGVxIiwg
ImNwZ3RlcSIsICJjYmd0ZXEiCisgICAgICAgICAgICBlbWl0Q1hYQ29tcGFyZUFuZFNldChvcGVy
YW5kcywgImludCIsICI+PSIpCisgICAgICAgIHdoZW4gImNpbHQiLCAiY3BsdCIsICJjYmx0Igor
ICAgICAgICAgICAgZW1pdENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJpbnQiLCAiPCIpCisg
ICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiLCAiY2JsdGVxIgorICAgICAgICAgICAgZW1p
dENYWENvbXBhcmVBbmRTZXQob3BlcmFuZHMsICJpbnQiLCAiPD0iKQorICAgICAgICAjIG1sYW0g
VU5VU0VEIHdoZW4gInRpbyIsICJ0Ym8iLCAidHBvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAg
ICBlbWl0Q1hYVGVzdFNldChvcGVyYW5kcywgInZzIikKKyAgICAgICAgd2hlbiAidGlzIiwgInRi
cyIsICJ0cHMiCisgICAgICAgICAgICBlbWl0Q1hYVGVzdFNldChvcGVyYW5kcywgIjwgMCIpCisg
ICAgICAgIHdoZW4gInRpeiIsICJ0YnoiLCAidHB6IgorICAgICAgICAgICAgZW1pdENYWFRlc3RT
ZXQob3BlcmFuZHMsICI9PSAwIikKKyAgICAgICAgd2hlbiAidGlueiIsICJ0Ym56IiwgInRwbnoi
CisgICAgICAgICAgICBlbWl0Q1hYVGVzdFNldChvcGVyYW5kcywgIiE9IDAiKQorICAgICAgICB3
aGVuICJjZHFpIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyAvLyBtbGFtIEZJWE1F
IgorICAgICAgICAgICAgJGFzbS5wdXRjICJjZHEiCisgICAgICAgIHdoZW4gImlkaXZpIgorICAg
ICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyAvLyBtbGFtIEZJWE1FIgorICAgICAgICAgICAg
JGFzbS5wdXRjICJpZGl2bCAje29wZXJhbmRzWzBdLmN4eFZhbHVlfSIKKyAgICAgICAgIyBtbGFt
IEVORCAKKyAgICAgICAgd2hlbiAiZmlpMmQiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMl0uY3h4VmFsdWUoImRvdWJsZSIpfSA9IEludHMyRG91YmxlKCN7b3BlcmFuZHNbMF0u
Y3h4VmFsdWUoInVpbnQiKX0sICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInVpbnQiKX0pOyIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiXFxuXFxuID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGNvZGV9ICN7b3BlcmFuZHNbMl0uY3h4VmFsdWUoImRv
dWJsZSIpfSAlZSA9IEludHMyRG91YmxlKCN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoInVpbnQiKX0g
MHglbHgsICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInVpbnQiKX0gMHglbHh9KVxcblwiLCAje29w
ZXJhbmRzWzJdLmN4eFZhbHVlKCJkb3VibGUiKX0sICN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoInVp
bnQiKX0sICN7b3BlcmFuZHNbMV0uY3h4VmFsdWUoInVpbnQiKX0pOyIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICAj
ZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgICAgIHdoZW4gImZkMmlpIgorICAgICAgICAgICAg
JGFzbS5wdXRjICJEb3VibGUySW50cygje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJkb3VibGUiKX0s
ICN7b3BlcmFuZHNbMV0uY3h4VmFsdWV9LCAje29wZXJhbmRzWzJdLmN4eFZhbHVlfSk7IgorICAg
ICAgICAjIG1sYW0gQkVHSU4KKyAgICAgICAgI3doZW4gImZwMmQiCisgICAgICAgICMgICAgJGFz
bS5wdXRjICJIYWhhIEkgY2FuIGJsb3cgc3R1ZmYgdXAhIgorICAgICAgICAjd2hlbiAiZmQycCIK
KyAgICAgICAgIyAgICAkYXNtLnB1dGMgIkhhaGEgSSBjYW4gYmxvdyBzdHVmZiB1cCBUT08hIgor
ICAgICAgICAjIG1sYW0gRU5ECisgICAgICAgIHdoZW4gImxlYWkiLCAibGVhcCIKKyAgICAgICAg
ICAgIG9wZXJhbmRzWzBdLmN4eEVtaXRMZWEob3BlcmFuZHNbMV0pCisgICAgICAgICN3aGVuICJz
bXVsbGkiCisgICAgICAgICMgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8g
c211bGwgaW4gI3tzZWxmLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBv
cGVyYW5kcy5sZW5ndGggPT0gNAorICAgICAgICAjICAgICRhc20ucHV0YyAic211bGwgI3tvcGVy
YW5kc1syXS5jeHhPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5jeHhPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5jeHhPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5jeHhPcGVyYW5kfSIKKyAgICAgICAgd2hl
biAiYmFkZGlvIiwgImJzdWJpbyIKKyAgICAgICAgICAgIGVtaXRDWFhPcEFuZEJyYW5jaElmT3Zl
cmZsb3cob3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRpeiIs
ICJiYWRkaW56IiwKKyAgICAgICAgICAgICAiYmFkZHBzIiwgImJhZGRweiIsICJiYWRkcG56IiwK
KyAgICAgICAgICAgICAiYnN1YmlzIiwgImJzdWJpeiIsICJic3ViaW56IiwKKyAgICAgICAgICAg
ICAiYm9ycmlzIiwgImJvcnJpeiIsICJib3JyaW56IgorICAgICAgICAgICAgZW1pdENYWE9wQW5k
QnJhbmNoKG9wY29kZSwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJtdWxpbyIKKyAgICAgICAg
ICAgIGVtaXRDWFhNdWxBbmRCcmFuY2hJZk92ZXJmbG93KG9wY29kZSwgb3BlcmFuZHMpCisgICAg
ICAgIHdoZW4gImN4eENyYXNoIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyIKKyAg
ICAgICAgd2hlbiAiY3h4Q2FsbEpTRnVuY3Rpb24iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5w
dXRjICJjb2RlUHRyID0gYml0d2lzZV9jYXN0PHZvaWQgKj4oI3tvcGVyYW5kc1swXS5jeHhWYWx1
ZSgidm9pZFB0ciIpfSk7IgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAib3Bjb2RlID0g
Yml0d2lzZV9jYXN0PExMSW50T3Bjb2RlPigje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJpbnQiKX0p
OyIKKworICAgICAgICAgICAgJGFzbS5wdXRjICJyUmV0VlBDLnUudnAgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludEJhZE5hdGl2ZVJldHVybik7IiAjIG1sYW0gVEVTVCByZXR1cm5QQworICAg
ICAgICAgICAgJGFzbS5wdXRjICJBU1NFUlQoclJldFZQQy51LnZwICE9IDApOyIgIyBtbGFtIFRF
U1QgcmV0dXJuUEMKKworICAgICAgICAgICAgIyBtbGFtIENPTVBVVEVEX0dPVE8gJGFzbS5wdXRj
ICJvcGNvZGUgPSBnZXRPcGNvZGUoYml0d2lzZV9jYXN0PE9wY29kZUlEPigje29wZXJhbmRzWzBd
LmN4eFZhbHVlKCJpbnQiKX0pKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIm9wY29kZSA9IExM
SW50OjpEYXRhOjpnZXRPcGNvZGUoYml0d2lzZV9jYXN0PExMSW50T3Bjb2RlSUQ+KCN7b3BlcmFu
ZHNbMF0uY3h4VmFsdWUoImludCIpfSkpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQVNTRVJU
KHJSZXRWUEMudS52cCAhPSAwKTsiICMgbWxhbSBURVNUIHJldHVyblBDCisKKyAgICAgICAgICAg
ICMgbWxhbSAkYXNtLnB1dGMgInByaW50ZihcIiAgICoqKioqKioqIG1sYW0gY3h4Q2FsbEpTRnVu
Y3Rpb24oKSBvcGNvZGUgJXAgJXNcXG5cIiwgKHZvaWQqKW9wY29kZSwgZ2V0R2x1ZUxhYmVsTmFt
ZShvcGNvZGUpKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgImdvdG8gZG9DYWxsSGVscGVyOyIK
KyAgICAgICAgICAgICMgbWxhbSBGSVhNRQorICAgICAgICAgICAgIyAkYXNtLnB1dGMgInJSZXRW
UEMudS5pbnN0cnVjdGlvbiA9IHZQQyArIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsiCisg
ICAgICAgICAgICAjICRhc20ucHV0YyAidlBDID0gY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
OyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICJORVhUX0lOU1RSVUNUSU9OKCk7IgorICAgICAg
ICB3aGVuICJjeHhDYWxsTmF0aXZlIgorICAgICAgICAgICAgaWYgQG1sYW1fUFJJTlRGCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICJwcmludGYoXCJcXG4qKioqKioqKioqKioqKioqKioqKioq
KiogbWxhbSBjeHhDYWxsTmF0aXZlKClcXG5cXG5cIik7IgorICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIm5hdGl2ZUZ1bmMgPSAje29wZXJhbmRzWzBdLmN4eFZhbHVlKCJu
YXRpdmVGdW5jIil9OyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiZnVuY3Rpb25SZXR1cm5WYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShuYXRpdmVGdW5jKHIwLnUuZXhlY1N0YXRlKSk7IgorICAgICAg
ICAgICAgJGFzbS5wdXRjICIjaWYgVVNFKEpTVkFMVUUzMl82NCkiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiAgICByMS51LmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnRhZygpOyIgICAgICAgICAj
IEZJWE1FOiBXZSdyZSBhc3N1bWluZyBhIGNlcnRhaW4gZW5kaWFubmVzcyBoZXJlLgorICAgICAg
ICAgICAgJGFzbS5wdXRjICIgICAgcjAudS5pID0gZnVuY3Rpb25SZXR1cm5WYWx1ZS5wYXlsb2Fk
KCk7IgorICAgICAgICAgICAgJGFzbS5wdXRjICIjZWxzZSAvLyBVU0VfSlNWQUxVRTY0KSIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiICAgICNlcnJvciBOZWVkIHRvIGltcGxlbWVudCBjeHhDYWxs
TmF0aXZlIgorICAgICAgICAgICAgJGFzbS5wdXRjICIjZW5kaWYgLy8gVVNFX0pTVkFMVUU2NCki
ICAgICAgICAgICAgCisgICAgICAgIHdoZW4gImN4eENhbGxTbG93UGF0aCIKKyAgICAgICAgICAg
IGVtaXRDWFhDYWxsU2xvd1BhdGgob3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiY3h4
SW5kaXJlY3RKdW1wIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAianVtcFRhcmdldCA9
IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoImluc3Ry
dWN0aW9uIil9KTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDxMTEludE9wY29kZT4oI3tvcGVyYW5kc1swXS5jeHhWYWx1ZSgiaW5zdHJ1Y3Rpb24iKX0pOyIK
KyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgIm9wY29kZSA9IGdldE9wY29kZShiaXR3aXNl
X2Nhc3Q8T3Bjb2RlSUQ+KCN7b3BlcmFuZHNbMF0uY3h4VmFsdWUoImludCIpfSkpOyIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAibWxhbUJyZWFrKFwiaW5kaXJlY3RKdW1wXCIsIDAsMCk7IgorICAg
ICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRvSW5kaXJlY3RKdW1wSGVscGVyOyIKKyAgICAgICAg
d2hlbiAiY3h4SnVtcFRvR2x1ZSIKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgIk9GRkxJ
TkVfQVNNX0dPVE9fR0xVRV9MQUJFTCgje29wZXJhbmRzWzBdLmNMYWJlbH0pOyIKKyAgICAgICAg
ICAgICMgbWxhbSAkYXNtLnB1dGMgImp1bXBUYXJnZXQgPSBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rp
b24qPihPRkZMSU5FX0FTTV9HRVRfR0xVRV9MQUJFTCgje29wZXJhbmRzWzBdLmNMYWJlbH0pKTsi
CisgICAgICAgICAgICAkYXNtLnB1dGMgIm9wY29kZSA9IGJpdHdpc2VfY2FzdDxMTEludE9wY29k
ZT4oT0ZGTElORV9BU01fR0VUX0dMVUVfTEFCRUwoI3tvcGVyYW5kc1swXS5jTGFiZWx9KSk7Igor
ICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRvSW5kaXJlY3RKdW1wSGVscGVyOyIKKyAgICAg
ICAgd2hlbiAiY3h4TmV4dE9wY29kZSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiTkVYVF9JTlNU
UlVDVElPTigpOyIKKyAgICAgICAgd2hlbiAiY3h4VHJhY2UiCisgICAgICAgICAgICAkYXNtLnB1
dGNUcmFjZUxhc3RHbG9iYWxMYWJlbAorICAgICAgICB3aGVuICJtbGFtQnJlYWsiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIm1sYW1CcmVhayhcIm1sYW1CcmVha1wiLCBfX0ZJTEVfXywgX19MSU5F
X18pOyIKKyAgICAgICAgd2hlbiAibWxhbURvIgorICAgICAgICAgICAgJGFzbS5hbm5vdGF0aW9u
IG5pbAorICAgICAgICAgICAgaWYgQG1sYW1fUFJJTlRGCisgICAgICAgICAgICAgICAgJGFzbS5w
dXRjICIje2Fubm90YXRpb259IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxvd2VyRGVmYXVsdAorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2
aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1
Y3Rpb25zLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgTUFDUk9fSU5TVFJV
Q1RJT05TID0KICAgICAgImJvcmlueiIsCiAgICAgICJicmVhayIsCiAgICAgICJjYWxsIiwKLSAg
ICAgInJldCIsCisgICAgICJyZXRfbWxhbSIsCiAgICAgICJjYmVxIiwKICAgICAgImNibmVxIiwK
ICAgICAgImNiYSIsCkBAIC0yMTEsNiArMjExLDggQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAg
ICAgImJueiIsCiAgICAgICJsZWFpIiwKICAgICAgImxlYXAiLAorICAgICAibWxhbUJyZWFrIiwg
ICAgICAjIG5vIG9wZXJhbmRzIC4uLiBmb3IgZGVidWdnaW5nIG9ubHkKKyAgICAgIm1sYW1EbyIs
ICAgICAgICAgIyBubyBvcGVyYW5kcwogICAgIF0KIAogWDg2X0lOU1RSVUNUSU9OUyA9CkBAIC0y
MjcsNyArMjI5LDE5IEBAIEFSTXY3X0lOU1RSVUNUSU9OUyA9CiAgICAgICJvcmlzIgogICAgIF0K
IAotSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUyAr
IEFSTXY3X0lOU1RSVUNUSU9OUworQ1hYX0lOU1RSVUNUSU9OUyA9CisgICAgWworICAgICAiY3h4
Q3Jhc2giLCAgICAgICAgICAgIyBubyBvcGVyYW5kcworICAgICAiY3h4Q2FsbEpTRnVuY3Rpb24i
LCAgIyBvcGVyYW5kczogY2FsbGVlCisgICAgICJjeHhDYWxsTmF0aXZlIiwgICAgICAjIG9wZXJh
bmRzOiBjYWxsZWUKKyAgICAgImN4eENhbGxTbG93UGF0aCIsICAgICMgb3BlcmFuZHM6IGNhbGxU
YXJnZXQsIGN1cnJlbnRGcmFtZSwgY3VycmVudFBDCisgICAgICJjeHhJbmRpcmVjdEp1bXAiLCAg
ICAjIG9wZXJhbmRzOiBqdW1wVGFyZ2V0CisgICAgICJjeHhKdW1wVG9HbHVlIiwgICAgICAjIG9w
ZXJhbmRzOiBnbHVlQ29kZVRhcmdldAorICAgICAiY3h4TmV4dE9wY29kZSIsICAgICAgIyBubyBv
cGVyYW5kcworICAgICAiY3h4VHJhY2UiLCAgICAgICAgICAgIyBubyBvcGVyYW5kcworICAgIF0K
KworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUyAr
IEFSTXY3X0lOU1RSVUNUSU9OUyArIENYWF9JTlNUUlVDVElPTlMKIAogSU5TVFJVQ1RJT05fUEFU
VEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCiAKQEAgLTIzNiw2ICsyNTAsNiBAQCBkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCiBl
bmQKIAogZGVmIGhhc0ZhbGxUaHJvdWdoKGluc3RydWN0aW9uKQotICAgIGluc3RydWN0aW9uICE9
ICJyZXQiIGFuZCBpbnN0cnVjdGlvbiAhPSAiam1wIgorICAgIGluc3RydWN0aW9uICE9ICJyZXRf
bWxhbSIgYW5kIGluc3RydWN0aW9uICE9ICJqbXAiCiBlbmQKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC04MzUsMTAg
KzgzNSwxMCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbCIsIDpieXRlKQogICAgICAgICB3aGVuICJiYmx0ZXEiCiAgICAgICAgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCi0gICAgICAgIHdoZW4gImJ0aW8iCi0gICAg
ICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCi0gICAgICAgIHdoZW4gImJ0
cG8iCi0gICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpwdHIpCisgICAgICAg
ICMgbWxhbSBVTlVTRUQgd2hlbiAiYnRpbyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4g
ImJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOnB0cikKICAgICAgICAgd2hlbiAiYnRpcyIKICAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpzIiwgOmludCkKICAgICAgICAgd2hlbiAiYnRwcyIKQEAgLTg1MSw4ICs4NTEsOCBA
QCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56
IiwgOmludCkKICAgICAgICAgd2hlbiAiYnRwbnoiCiAgICAgICAgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqbnoiLCA6cHRyKQotICAgICAgICB3aGVuICJidGJvIgotICAgICAgICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVu
ICJidGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJ0YnMiCiAgICAgICAgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqcyIsIDpieXRlKQogICAgICAgICB3aGVuICJidGJ6IgpAQCAtOTA1LDcgKzkwNSw3
IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICAkYXNtLnB1dHMgImludCAkMyIKICAg
ICAgICAgd2hlbiAiY2FsbCIKICAgICAgICAgICAgICRhc20ucHV0cyAiY2FsbCAje29wZXJhbmRz
WzBdLng4NkNhbGxPcGVyYW5kKDpwdHIpfSIKLSAgICAgICAgd2hlbiAicmV0IgorICAgICAgICB3
aGVuICJyZXRfbWxhbSIKICAgICAgICAgICAgICRhc20ucHV0cyAicmV0IgogICAgICAgICB3aGVu
ICJjaWVxIgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQp
CkBAIC05NjcsMjQgKzk2NywyNCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BsdGVx
IgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6cHRyKQotICAg
ICAgICB3aGVuICJ0aW8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmlu
dCkKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0aW8iCisgICAgICAgICMgbWxhbSBVTlVT
RUQgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCiAgICAgICAgIHdoZW4gInRpcyIK
ICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQogICAgICAgICB3aGVu
ICJ0aXoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKICAgICAg
ICAgd2hlbiAidGlueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmlu
dCkKLSAgICAgICAgd2hlbiAidHBvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
byIsIDpwdHIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidHBvIgorICAgICAgICAjIG1s
YW0gVU5VU0VEICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOnB0cikKICAgICAgICAgd2hl
biAidHBzIgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpwdHIpCiAgICAg
ICAgIHdoZW4gInRweiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6cHRy
KQogICAgICAgICB3aGVuICJ0cG56IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
bnoiLCA6cHRyKQotICAgICAgICB3aGVuICJ0Ym8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGJvIgorICAg
ICAgICAjIG1sYW0gVU5VU0VEICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCiAg
ICAgICAgIHdoZW4gInRicyIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6
Ynl0ZSkKICAgICAgICAgd2hlbiAidGJ6IgpAQCAtMTAyNyw2ICsxMDI3LDEwIEBAIGNsYXNzIElu
c3RydWN0aW9uCiAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS54ODZB
ZGRyZXNzT3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCiAg
ICAgICAgIHdoZW4gImxlYXAiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4
KDpwdHIpfSAje29wZXJhbmRzWzBdLng4NkFkZHJlc3NPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpwdHIpfSIKKyAgICAgICAgd2hlbiAibWxhbUJyZWFrIgorICAgICAg
ICAgICAgIworICAgICAgICB3aGVuICJtbGFtRG8iCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5w
dXRjICIje2Fubm90YXRpb259IgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb3dlckRlZmF1
bHQKICAgICAgICAgZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAg
Ym9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAogICAgIHJldHVybiB0cnVl
OwogfQogCi1KU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBldmFsdWF0ZV9tbGFtQ29tcGxl
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKiByZXR1cm5lZEV4
Y2VwdGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBBU1NFUlQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSA9PSB3dGZUaHJlYWREYXRhKCkuY3VycmVu
dElkZW50aWZpZXJUYWJsZSgpKTsKQEAgLTcyLDcgKzcyLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIFNjb3BlQwogICAgIGlmICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICB0aGlzVmFsdWUgPSBleGVjLT5keW5hbWljR2xv
YmFsT2JqZWN0KCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9UaGlzT2Jq
ZWN0KGV4ZWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhl
Y3V0ZShwcm9ncmFtLCBleGVjLCBzY29wZUNoYWluLCB0aGlzT2JqKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGVfbWxhbVAocHJvZ3JhbSwgZXhlYywg
c2NvcGVDaGFpbiwgdGhpc09iaik7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgY29uc3QgU291cmNl
Q29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpLCBKU1ZhbHVlKiBleGNlcHRpb24g
PSAwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlX21sYW1Db21wbGV0
aW9uKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFs
dWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOCBA
QCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsCiAKIHZvaWQgRXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiB7Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVO
QUJMRShKSVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgIG1faml0Q29k
ZUZvckNhbGwuY2xlYXIoKTsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAg
ICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KTsKQEAgLTMwNyw3ICszMDgsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBp
bGVPcHRpCiAgICAgQVNTRVJUKCEhbV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICBKU09iamVjdCog
ZXJyb3IgPSAwOwogICAgIGlmIChtX3Byb2dyYW1Db2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBK
SVRDb2RlOjp0b3BUaWVySklUKCkpCi0gICAgICAgIGVycm9yID0gY29tcGlsZUludGVybmFsKGV4
ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpuZXh0VGllckpJVChtX3Byb2dyYW1Db2RlQmxv
Y2stPmdldEpJVFR5cGUoKSkpOworICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbF9tbGFt
UChleGVjLCBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6bmV4dFRpZXJKSVQobV9wcm9ncmFtQ29k
ZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoISFtX3Byb2dyYW1Db2RlQmxvY2sp
OwogICAgIHJldHVybiBlcnJvcjsKIH0KQEAgLTMxOSw3ICszMjAsNyBAQCBib29sIFByb2dyYW1F
eGVjdXRhYmxlOjpqaXRDb21waWxlKEV4ZWNTCiB9CiAjZW5kaWYKIAotSlNPYmplY3QqIFByb2dy
YW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK0pTT2JqZWN0
KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsX21sYW1QKEV4ZWNTdGF0ZSogZXhl
YywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5
cGUpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CiAgICAgCkBAIC01MTQsOCArNTE1LDEwIEBAIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBBU1NFUlQoKGppdFR5cGUgPT0gSklUQ29k
ZTo6Ym90dG9tVGllckpJVCgpKSA9PSAhbV9jb2RlQmxvY2tGb3JDYWxsKTsKICAgICBKU09iamVj
dCogZXhjZXB0aW9uOwogICAgIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gbmV3Q29kZUJsb2Nr
ID0gcHJvZHVjZUNvZGVCbG9ja0ZvcihzY29wZUNoYWluTm9kZSwgISFtX2NvZGVCbG9ja0ZvckNh
bGwgPyBPcHRpbWl6aW5nQ29tcGlsYXRpb24gOiBGaXJzdENvbXBpbGF0aW9uLCBDb2RlRm9yQ2Fs
bCwgZXhjZXB0aW9uKTsKLSAgICBpZiAoIW5ld0NvZGVCbG9jaykKKyAgICBpZiAoIW5ld0NvZGVC
bG9jaykgeworICAgICAgICBwcmludGYoIlxuXG4gbWxhbSBFWENFUFRJT04gQCAlcyAlczolZFxu
XG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiBl
eGNlcHRpb247CisgICAgfQogCiAgICAgbmV3Q29kZUJsb2NrLT5zZXRBbHRlcm5hdGl2ZShzdGF0
aWNfcG9pbnRlcl9jYXN0PENvZGVCbG9jaz4obV9jb2RlQmxvY2tGb3JDYWxsLnJlbGVhc2UoKSkp
OwogICAgIG1fY29kZUJsb2NrRm9yQ2FsbCA9IG5ld0NvZGVCbG9jay5yZWxlYXNlKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAx
MjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2Uq
KTsKIAotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQogICAgICAgICBK
SVRDb2RlJiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtX2ppdENvZGVGb3JDYWxsKTsKQEAgLTIwMCwxOCArMjAwLDE4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAg
ICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX251bVBh
cmFtZXRlcnNGb3JDb25zdHJ1Y3QpOwogICAgICAgICB9Ci0jZW5kaWYKKy8vIG1sYW0gI2VuZGlm
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBtX3ByZXY7CiAgICAg
ICAgIEV4ZWN1dGFibGVCYXNlKiBtX25leHQ7CiAKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSBtX2ppdENvZGVGb3JDYWxsOwogICAgICAg
ICBKSVRDb2RlIG1faml0Q29kZUZvckNvbnN0cnVjdDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjazsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrOwotI2VuZGlm
CisvLyBtbGFtICNlbmRpZgogICAgIH07CiAKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKQEAgLTIyMSwyMiArMjIxLDIzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAKICNpZiBFTkFCTEUo
SklUKQotICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNhbGxUaHVuaywgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb25zdHJ1Y3RUaHVuaywgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCisvLyBtbGFtICNp
ZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgICAgIHN0YXRpYyBOYXRpdmVFeGVj
dXRhYmxlKiBjcmVhdGVfbWxhbShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkpOwogICAgICAgICAgICAgTmF0aXZl
RXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKICAgICAgICAgICAgIGlmICghY2FsbFRodW5rKSB7CiAg
ICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5h
dGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxl
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBKSVRDb2RlKCksIEpJVENvZGUoKSwgaW50cmlu
c2ljKTsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbl9tbGFtKGds
b2JhbERhdGEsIEpJVENvZGUoKSwgSklUQ29kZSgpLCBpbnRyaW5zaWMpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0
YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwotICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5j
dGlvbihjYWxsVGh1bmspLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3RydWN0VGh1bmspLCBp
bnRyaW5zaWMpOworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uX21s
YW0oZ2xvYmFsRGF0YSwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNhbGxUaHVuayksIEpJVENvZGU6
Okhvc3RGdW5jdGlvbihjb25zdHJ1Y3RUaHVuayksIGludHJpbnNpYyk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICAgICAgfQogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQogICAgICAgICBzdGF0aWMgTmF0
aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpOwpAQCAtMjQ2LDYgKzI0
NywxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKKy8qIFRFTVAgV09S
SyBPTkxZIE9CU09MRVRFIG1sYW0gQkVHSU4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
ICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlX21sYW0oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbnN0cnVjdFRodW5rLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvcikKKyAgICAgICAgLy8gbWxhbSBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpOworICAgICAgICAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4
ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwg
ZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENy
ZWF0aW9uX21sYW0oZ2xvYmFsRGF0YSwgY2FsbFRodW5rLCBjb25zdHJ1Y3RUaHVuaywgTm9JbnRy
aW5zaWMpOworICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CisgICAgICAgIH0KKyNlbmRp
ZgorLy8gbWxhbSBFTkQgKi8KKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAjZW5kaWYKQEAgLTI2MSw3ICsyNzUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoSklUKQotICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSBjYWxsVGh1bmss
IEpJVENvZGUgY29uc3RydWN0VGh1bmssIEludHJpbnNpYyBpbnRyaW5zaWMpCisvLyBtbGFtICNp
ZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b25fbWxhbShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5rLCBKSVRD
b2RlIGNvbnN0cnVjdFRodW5rLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkp
OwogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CkBAIC00NDMs
NyArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoZXhlYy0+Z2xv
YmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gMDsKICAgICAgICAgICAgIGlmICghbV9wcm9ncmFtQ29kZUJsb2NrKQotICAgICAgICAg
ICAgICAgIGVycm9yID0gY29tcGlsZUludGVybmFsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBKSVRD
b2RlOjpib3R0b21UaWVySklUKCkpOworICAgICAgICAgICAgICAgIGVycm9yID0gY29tcGlsZUlu
dGVybmFsX21sYW1QKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpib3R0b21UaWVySklU
KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFlcnJvciA9PSAhIW1fcHJvZ3JhbUNvZGVCbG9jayk7
CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgIH0KQEAgLTQ4NSw3ICs1MDAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFNjcmlwdEV4ZWN1dGFibGU6OlN0cnVj
dHVyZUZsYWdzOwogICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CiAKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVJbnRlcm5hbChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5cGUpOworICAgICAgICBKU09iamVj
dCogY29tcGlsZUludGVybmFsX21sYW1QKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgSklU
Q29kZTo6SklUVHlwZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBPd25QdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9w
cm9ncmFtQ29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw3ICs4Miw3IEBAIEpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUK
ICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBKU0M6OmdldENvbnN0cnVjdERhdGEo
dGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwogICAgIGJvb2wgY2FuQ29uc3RydWN0ID0g
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlTm9uZTsKIAotICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGJvdW5k
RnVuY3Rpb25DYWxsLCBjYW5Db25zdHJ1Y3QgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uX21sYW0xKGJvdW5kRnVu
Y3Rpb25DYWxsLCBjYW5Db25zdHJ1Y3QgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0JvdW5kRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmJv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhpcywgYm91bmRB
cmdzKTsKIAogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBs
ZW5ndGgsIG5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxMCArNjcsMTAgQEAg
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZQogI2Vsc2UKICAgICBpZiAo
aW50cmluc2ljICE9IE5vSW50cmluc2ljICYmIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQo
KSkgewogICAgICAgICBBU1NFUlQobmF0aXZlQ29uc3RydWN0b3IgPT0gY2FsbEhvc3RGdW5jdGlv
bkFzQ29uc3RydWN0b3IpOwotICAgICAgICBleGVjdXRhYmxlID0gZXhlYy0+Z2xvYmFsRGF0YSgp
LmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKKyAgICAgICAgZXhl
Y3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb25fbWxhbTIobmF0aXZl
RnVuY3Rpb24sIGludHJpbnNpYyk7CiAgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgZXhlY3V0
YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24s
IG5hdGl2ZUNvbnN0cnVjdG9yKTsKKyAgICAgICAgZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERh
dGEoKS5nZXRIb3N0RnVuY3Rpb25fbWxhbTEobmF0aXZlRnVuY3Rpb24sIG5hdGl2ZUNvbnN0cnVj
dG9yKTsKIAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIC8vIENhbid0
IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1p
Z2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KQEAgLTE3Niw2ICsxNzYsNyBAQCB2b2lkIEpTRnVuY3Rp
b246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjCiAKIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENh
bGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogeworICAgIC8vIHByaW50
ZigiIG1sYW0gV0FTIEhFUkUhIEAgJXMgJXM6JWRcbiIsIF9fRlVOQ1RJT05fXywgX19GSUxFX18s
IF9fTElORV9fKTsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAg
ICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5uYXRpdmVGdW5jdGlv
bigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDcgQEAgSlNH
bG9iYWxEYXRhKiYgSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YQogfQogCiAjaWYgRU5BQkxFKEpJ
VCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKIHN0YXRpYyBUaHVu
a0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2lj
KQogewogICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CkBAIC0zNTksMjIgKzM2MCwzMCBAQCBzdGF0
aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIH0KKy8qLyBtbGFtIEJFR0lOCisjZW5kaWYKIAotTmF0aXZlRXhlY3V0YWJsZSogSlNH
bG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkg
CisvLyBtbGFtIEVORCAqLworTmF0aXZlRXhlY3V0YWJsZSogSlNHbG9iYWxEYXRhOjpnZXRIb3N0
RnVuY3Rpb25fbWxhbTEoTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNv
bnN0cnVjdG9yKQogewotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDTEFTU0lDX0lOVEVSUFJFVEVSKSAvLyBtbGFtIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApIC8v
IG1sYW0KICAgICBpZiAoIWNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gTmF0aXZlRXhlY3V0
YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogI2VuZGlmCi0gICAg
cmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHViKHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1
Y3Rvcik7CisgICAgcmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHViX21sYW0xKHRoaXMs
IGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CiB9Ci1OYXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERh
dGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2ljIGlu
dHJpbnNpYykKKworI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KK05hdGl2ZUV4ZWN1dGFibGUqIEpT
R2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uX21sYW0yKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCBJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIEFTU0VSVChjYW5Vc2VKSVQoKSk7Ci0gICAg
cmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHViKHRoaXMsIGZ1bmN0aW9uLCBpbnRyaW5z
aWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhpbnRyaW5zaWMp
IDogMCwgaW50cmluc2ljKTsKKyAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWJf
bWxhbTIodGhpcywgZnVuY3Rpb24sIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2Vu
ZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNpYykgOiAwLCBpbnRyaW5zaWMpOwogfQorI2VuZGlm
IC8vIG1sYW0KKwogI2Vsc2UKLU5hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1
Y3RvcikKK05hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uX21s
YW0xKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikK
IHsKICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwg
Y29uc3RydWN0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsMTQgKzI5Nywx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPEtleXdvcmRzPiBrZXl3b3JkczsK
ICAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyOwogI2lmIEVOQUJMRShKSVQpCisvLyBt
bGFtICNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93blB0cjxKSVRU
aHVua3M+IGppdFN0dWJzOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2V0Q1RJU3R1
YihUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBqaXRTdHVicy0+Y3RpU3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljKTsKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uX21sYW0yKE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMpOwogI2VuZGlmCi0gICAgICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IpOworICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb25fbWxhbTEo
TmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsKIAogICAgICAgICBU
aW1lb3V0Q2hlY2tlciB0aW1lb3V0Q2hlY2tlcjsKICAgICAgICAgVGVybWluYXRvciB0ZXJtaW5h
dG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBA
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiIC8v
IG1sYW0KIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmx1dC5oIgogCkBAIC0xNDIsNiArMTQz
LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRoaXMKICAgICBtX2ds
b2JhbFNjb3BlQ2hhaW4uc2V0KGdsb2JhbERhdGEoKSwgdGhpcywgU2NvcGVDaGFpbk5vZGU6OmNy
ZWF0ZSgwLCB0aGlzLCAmZ2xvYmFsRGF0YSgpLCB0aGlzLCB0aGlzVmFsdWUpKTsKIAogICAgIEpT
R2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCktPmluaXQoMCwgMCwgbV9nbG9iYWxTY29wZUNoYWlu
LmdldCgpLCBDYWxsRnJhbWU6Om5vQ2FsbGVyKCksIDAsIDApOworICAgIC8vIG1sYW0gQkVHSU4K
KyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKEpTR2xvYmFs
T2JqZWN0OjpnbG9iYWxFeGVjKCksICIgID4+PiBQVVNIRUQgdG8gbmV3ICIsIDAsIF9fRlVOQ1RJ
T05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtIEVORAog
CiAgICAgbV9kZWJ1Z2dlciA9IDA7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEyMzI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKICNl
bmRpZgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnQ6OkRhdGE7CisgICAgICAgIC8vIG1sYW0g
QkVHSU4KKyAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOworICAgICAgICAvLyBtbGFt
IEVORAogCiAgICAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xNjYsNiArMTY5
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQg
bG9uZyk7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUobG9uZyBsb25nKTsKICAgICAgICAgZXhw
bGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcpOworICAgICAgICAvLyBtbGFtIEJFR0lO
IC4uLiBuZWVkIHRvIG1ha2UgdGhpcyBhIHNwZWNpYWwgcHJpdmlsZWdlZCBvcGVyYXRpb24uCisg
ICAgICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50MzJfdCB0YWcsIGludDMyX3QgcGF5bG9hZCk7Cisg
ICAgICAgIC8vIG1sYW0gRU5ECiAKICAgICAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwpAQCAtMjcy
LDYgKzI3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgIC8v
IFRoZSBMTElOVCBDIExvb3AgbmVlZHMgdG8gYWNjZXNzIHRoZSB0YWcgYW5kIHBheWxvYWQgZGly
ZWN0bHkuCisgICAgcHVibGljOgorI2VuZGlmCiAgICAgICAgIC8qCiAgICAgICAgICAqIE9uIDMy
LWJpdCBwbGF0Zm9ybXMgVVNFKEpTVkFMVUUzMl82NCkgc2hvdWxkIGJlIGRlZmluZWQsIGFuZCB3
ZSB1c2UgYSBOYU4tZW5jb2RlZAogICAgICAgICAgKiBmb3JtIGZvciBpbW1lZGlhdGVzLgpAQCAt
MjkyLDYgKzMwMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICovCiAgICAgICAgIHVp
bnQzMl90IHRhZygpIGNvbnN0OwogICAgICAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKKwor
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgcHJpdmF0ZToKKyNlbmRpZgorCiAjZWxpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAvKgogICAgICAgICAgKiBPbiA2NC1iaXQgcGxhdGZvcm1z
IFVTRShKU1ZBTFVFNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29k
ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRo
b2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZUlubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3
LDYgKzMwNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdS5hc0JpdHMucGF5bG9hZCA9
IGk7CiAgICAgfQogCisgICAgLy8gbWxhbSBCRUdJTiBGSVhNRSAuLi4gbmVlZCB0byBtYWtlIHRo
aXMgYSBzcGVjaWFsIHByaXZpbGVnZWQgb3BlcmF0aW9uLgorICAgIGlubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpCisgICAgeworICAgICAgICB1LmFz
Qml0cy50YWcgPSB0YWc7CisgICAgICAgIHUuYXNCaXRzLnBheWxvYWQgPSBwYXlsb2FkOworICAg
IH0KKyAgICAvLyBtbGFtIEVORCAqLworCiAgICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdW1i
ZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzIoKSB8fCBpc0RvdWJsZSgp
OwpAQCAtMzIzLDcgKzMzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gcGF5
bG9hZCgpOwogICAgIH0KIAotI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKKyNlbHNlIC8vICFV
U0UoSlNWQUxVRTMyXzY0KQogCiAgICAgLy8gSlNWYWx1ZSBtZW1iZXIgZnVuY3Rpb25zLgogICAg
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSB2YWx1ZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAx
MjMyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUo
KQogICAgIDsgLy8gRGVjb25mdXNlIGVkaXRvcnMgdGhhdCBkbyBhdXRvIGluZGVudGF0aW9uCiAj
ZW5kaWYKICAgICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCisgICAgdXNlSklU
KCkgPSBmYWxzZTsKKyAgICB1c2VERkdKSVQoKSA9IGZhbHNlOworI2VuZGlmIC8vIG1sYW0KKwog
ICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aGVyZSBuZWVkZWQgYW5kIG1ha2UgY29ycmVjdGlvbnMg
dG8gdGhlIG9wdGlvbnM6CiAgICAgQVNTRVJUKHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25n
V2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpKTsKICAgICBBU1NF
UlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpID49IHRocmVzaG9sZEZvck9wdGlt
aXplU29vbigpKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTIzMjg5KQorKysgU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAKIC8q
IEluY2x1ZGUgY29tcGlsZXIgc3BlY2lmaWMgbWFjcm9zICovCiAjaW5jbHVkZSA8d3RmL0NvbXBp
bGVyLmg+CiAKKy8vIG1sYW0gQkVHSU4KKyNkZWZpbmUgRU5BQkxFX0pJVCAwCisvLyBtbGFtIEVO
RAorCiAvKiA9PT09IFBMQVRGT1JNIGhhbmRsZXMgT1MsIG9wZXJhdGluZyBlbnZpcm9ubWVudCwg
Z3JhcGhpY3MgQVBJLCBhbmQKICAgIENQVS4gVGhpcyBtYWNybyB3aWxsIGJlIHBoYXNlZCBvdXQg
aW4gZmF2b3Igb2YgcGxhdGZvcm0gYWRhcHRhdGlvbgogICAgbWFjcm9zLCBwb2xpY3kgZGVjaXNp
b24gbWFjcm9zLCBhbmQgdG9wLWxldmVsIHBvcnQgZGVmaW5pdGlvbnMuID09PT0gKi8KQEAgLTg5
Myw2ICs4OTcsMTUgQEAKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TV9USFVNQjIpKQogI2RlZmluZSBFTkFCTEVfTExJTlQgMQogI2VuZGlmCisvLyBtbGFtIEJFR0lO
CisjaWYgIUVOQUJMRShKSVQpCisgICAgI2RlZmluZSBFTkFCTEVfQ0xBU1NJQ19JTlRFUlBSRVRF
UiAwCisgICAgI2RlZmluZSBFTkFCTEVfSklUIDAKKyAgICAjZGVmaW5lIEVOQUJMRV9MTElOVCAx
CisgICAgI2RlZmluZSBFTkFCTEVfWUFSUl9KSVQgMAorICAgICNkZWZpbmUgRU5BQkxFX0xMSU5U
X0NfTE9PUCAxCisjZW5kaWYKKy8vIG1sYW0gRU5EICovCiAKICNpZiAhZGVmaW5lZChFTkFCTEVf
REZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5k
IFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwpAQCAtOTMyLDEw
ICs5NDUsMTEgQEAKICNlbmRpZgogCiAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0
aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxlZC4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVf
Q0xBU1NJQ19JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShKSVQpCisjaWYgIWRlZmluZWQoRU5BQkxF
X0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKSAmJiAhRU5BQkxFKExMSU5UKQog
I2RlZmluZSBFTkFCTEVfQ0xBU1NJQ19JTlRFUlBSRVRFUiAxCiAjZW5kaWYKLSNpZiAhKEVOQUJM
RShKSVQpIHx8IEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSkKKy8vIG1sYW0gb3JpZyAjaWYg
IShFTkFCTEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikpCisjaWYgIShFTkFC
TEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkK
ICNlcnJvciBZb3UgaGF2ZSB0byBoYXZlIGF0IGxlYXN0IG9uZSBleGVjdXRpb24gbW9kZWwgZW5h
YmxlZCB0byBidWlsZCBKU0MKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAkocmV2aXNpb24gMTIzMjg5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgSlNN
YWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKICAgICAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywg
Y2hhaW4sIHNvdXJjZSwgdGhpc1ZhbHVlLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gSlND
OjpldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihleGVjLCBjaGFpbiwgc291cmNlLCB0aGlzVmFsdWUs
IGV4Y2VwdGlvbik7CiAgICAgfTsKIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvTlBfanNvYmplY3QuY3BwCShyZXZpc2lvbiAxMjMyODkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvTlBfanNvYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAg
Ym9vbCBfTlBOX0V2YWx1YXRlKE5QUCBpbnN0YW5jZSwgTlBPYmplYwogICAgICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9IGNvbnZlcnRO
UFN0cmluZ1RvVVRGMTYocyk7CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVl
ID0gSlNDOjpldmFsdWF0ZShyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
LCByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291
cmNlKHNjcmlwdFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKKyAgICAgICAgSlNWYWx1ZSByZXR1
cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24ocm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7
CiAKICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmV0dXJuVmFsdWUsIHZh
cmlhbnQpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0JKHJldmlzaW9uIDEyMzI4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTQsNyArMzE0LDcgQEAgam9iamVjdCBKYXZhSlNPYmplY3Q6OmV2YWwoanN0cmluZyBzY3Jp
cAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxEYXRhKCkpOwogICAgIAogICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxE
YXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6
ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9i
amVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShKYXZh
U3RyaW5nKHNjcmlwdCkuaW1wbCgpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1
YXRlX21sYW1Db21wbGV0aW9uKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VT
b3VyY2UoSmF2YVN0cmluZyhzY3JpcHQpLmltcGwoKSkpOwogICAgIHJvb3RPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgcmV0
dXJuIGNvbnZlcnRWYWx1ZVRvSk9iamVjdChyZXN1bHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157459</attachid>
            <date>2012-08-09 08:58:18 -0700</date>
            <delta_ts>2012-08-14 10:05:19 -0700</delta_ts>
            <desc>Work in progress 4: added 64-bit support and some clean up.  Passes JSC tests, v8 bench, and sunspider.  On to layout tests next.</desc>
            <filename>bug-91052-wop4.patch</filename>
            <type>text/plain</type>
            <size>348978</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDMwIEBACiAjZWxzZQogI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNf
T05fR0NDIDEKICNlbmRpZgorCisvLyBtbGFtIEJFR0lOCisvLyBtbGFtIEJFR0lOIHRlc3QKKy8v
I3VuZGVmIEVOQUJMRV9KSVQKKy8vI2RlZmluZSBFTkFCTEVfSklUIDAKKy8vIG1sYW0gRU5ECisK
Ky8vI3VuZGVmIExMSU5UCisvLyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKworI2RlZmluZSBtbGFt
X1BSSU5URiAwCisjaWYgIUVOQUJMRShKSVQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9DX0xPT1Ag
MQorI2RlZmluZSBFTkFCTEVfQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSIDAKKwor
Ly8gTWFrZSBzdXJlIHRoZSBERkcgaXMgdHVybmVkIG9mZiBpZiBiYXNpYyBKSVQgc3VwcG9ydCBp
cyBvZmYuCisjdW5kZWYgRU5BQkxFX0RGR19KSVQKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMAor
CisjZWxzZSAvLyAhRU5BQkxFKEpJVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX0NfTE9PUCAwCisj
ZW5kaWYgLy8gIUVOQUJMRShKSVQpCisKKy8vI3VuZGVmIEVOQUJMRV9MTElOVF9DX0xPT1AKKy8v
I2RlZmluZSBFTkFCTEVfTExJTlRfQ19MT09QIDAgLy8gRm9yY2UgaXQgb24uCisvLyBtbGFtIEVO
RAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgSlNWYWx1ZSBl
eGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQo
KTsKLSAgICBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSks
IEpTVmFsdWUoKSwgJmV4Y2VwdGlvbik7CisgICAgZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZleGNlcHRp
b24pOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoISFleGNlcHRpb24pIHsKQEAg
LTM3OCw3ICszNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9h
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKICAgICAKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxl
TmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEo
KSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAo
ZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01NTAs
NyArNTUwLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAg
ICAgICBnbG9iYWxEYXRhLnN0YXJ0U2FtcGxpbmcoKTsKIAogICAgICAgICBKU1ZhbHVlIGV2YWx1
YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWlu
KCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZV9tbGFtQ29t
cGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZUNoYWluKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXZh
bHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0
aW9uRXhjZXB0aW9uOwogICAgICAgICBpZiAoZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikK
ICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkudXRmOCgpLmRhdGEoKSk7CkBAIC01OTYsNyArNTk2LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50
ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KgogICAgICAgICBpZiAobGluZVswXSkKICAgICAgICAgICAg
IGFkZF9oaXN0b3J5KGxpbmUpOwogICAgICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247
Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShs
aW5lLCBpbnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsK
KyAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4o
KSwganNjU291cmNlKGxpbmUsIGludGVycHJldGVyTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRp
b25FeGNlcHRpb24pOwogICAgICAgICBmcmVlKGxpbmUpOwogI2Vsc2UKICAgICAgICAgcHJpbnRm
KCIlcyIsIGludGVyYWN0aXZlUHJvbXB0KTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgdm9p
ZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqCiAgICAgICAgIGxpbmUuYXBwZW5kKCdcMCcp
OwogCiAgICAgICAgIEpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1
ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9i
YWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKGxpbmUuZGF0YSgpLCBpbnRl
cnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAg
SlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291
cmNlKGxpbmUuZGF0YSgpLCBpbnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9u
RXhjZXB0aW9uKTsKICNlbmRpZgogICAgICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAg
ICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi50
b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZS5jcHAJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlUmVm
IEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBt
YWtlU291cmNlKHNjcmlwdC0+dXN0cmluZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgVGV4dFBv
c2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIp
LCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNl
cHRpb247Ci0gICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgc291cmNlLCBq
c1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJldHVyblZh
bHVlID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwg
JmV2YWx1YXRpb25FeGNlcHRpb24pOwogCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5jCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkod29ya2luZyBjb3B5KQpAQCAtMTAzMiw2ICsxMDMyLDEz
IEBAIHN0YXRpYyB2b2lkIGNoZWNrQ29uc3RuZXNzSW5KU09iamVjdE5hbWUKIAogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKKyAgICAgICAgcHJpbnRmKCIgJXMiLCBhcmd2W2ld
KTsKKyAgICB9CisgICAgcHJpbnRmKCJcbiIpOworICAgIC8vIG1sYW0gRU5ECisKICNpZiBPUyhX
SU5ET1dTKQogICAgIC8vIEN5Z3dpbiBjYWxscyA6OlNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJ
Q0FMRVJST1JTKSwgd2hpY2ggd2Ugd2lsbCBpbmhlcml0LiBUaGlzIGlzIGJhZCBmb3IKICAgICAv
LyB0ZXN0aW5nL2RlYnVnZ2luZywgYXMgaXQgY2F1c2VzIHRoZSBwb3N0LW1vcnRlbSBkZWJ1Z2dl
ciBub3QgdG8gYmUgaW52b2tlZC4gV2UgcmVzZXQgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTcwOSw2ICs3MDksOCBAQAogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAg
Ki87IH07CiAJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
MTEyRUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkU0QTMzMUYxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEEzMzFE
MTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi87IH07CisJCUZFNEEzMzIwMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QTMzMUUxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVj
dG9yLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE0OTcsNiArMTQ5OSw4IEBACiAJ
CUY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg2MDI1NTU5N0Qw
MUZGNjBGNyAvKiBVU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Zh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGRTRB
MzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0x
Njk5LDYgKzE3MDMsOCBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0
ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNEEz
MzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8sCisJCQkJRkU0QTMzMUUx
NUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYz
NjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFD
NzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJQTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8q
IENhY2hlZENhbGwuaCAqLywKQEAgLTI4NjYsNiArMjg3Miw3IEBACiAJCQkJMEY3NjZEMzkxNUFF
NEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU0QTMzMjAxNUJEMkUw
NzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1
Qzc1RjE5MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKQEAgLTM0NjQsNiArMzQ3MSw3IEBACiAJCQkJMEY3NjZEMkYxNUE4RENFMDAwOEYzNjNFIC8q
IEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQzNDE1
QUUyNTM4MDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTRBMzMxRjE1QkQyRTA3MDA2
RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2Mzk0NDAxNUM3
NUYxRDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIgLy8gbWxhbQogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0yODksMTAgKzI5MCwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKKyAgICAvLyBtbGFtIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRl
TExJbnRDb2RlUHRyKExMSW50T3Bjb2RlIG9wY29kZSkKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29kZVB0cihMTEludE9wY29kZUlEIG9wY29kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ob3Bjb2RlKSk7CisgICAgfQorI2Vsc2UKICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29kZVB0cih2b2lkICgqZnVuY3Rpb24pKCkpCiAgICAg
ewogICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oZnVuY3Rpb24pKTsKICAgICB9CisjZW5kaWYKICAgICBleHBsaWNpdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKICAgICAgICAgOiBtX3ZhbHVlKHJh
LnZhbHVlKCkpCiAgICAgewpAQCAtMzU0LDExICszNjMsMTggQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICAvLyBIZWxwZXIgZm9yIGNyZWF0aW5nIHNlbGYtbWFuYWdlZCBjb2RlIHJlZnMgZnJv
bSBMTEludC4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIC8vIG1sYW0gc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjcmVhdGVMTEludENvZGVSZWYoTExJbnRPcGNvZGUgb3Bjb2Rl
KQorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3JlYXRlTExJbnRDb2RlUmVmKExM
SW50T3Bjb2RlSUQgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRk
cmVzcyhyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGNvZGUpKSk7CisgICAgfQorI2Vsc2UKICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNyZWF0ZUxMSW50Q29kZVJlZih2b2lkICgq
ZnVuY3Rpb24pKCkpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJp
dHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7CiAgICAgfQotICAgIAorI2VuZGlmCiAgICAg
RXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9leGVjdXRhYmxlTWVtb3J5LmdldCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyNDY0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDI2LDEzICsyMDI2LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdFdlYWtS
ZWZlcmVuY2VzKFNsb3QKICAgICBwZXJmb3JtVHJhY2luZ0ZpeHBvaW50SXRlcmF0aW9uKHZpc2l0
b3IpOwogfQogCi0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkK
KyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gdHJ1ZTsK
ICNlbHNlCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5k
aWYKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorLyogbWxhbSBVTlVTRUQgLyBtbGFtIEJFR0lOCisj
ZWxzZSAKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKKy8vIG1s
YW0gRU5EICovCisvLyBtbGFtIG9yaWcgI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAKIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCiB7CkBAIC0yNTc1LDEyICsyNTgxLDM0IEBAIHZv
aWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKICAgICB3aGlsZSAobV9pbmNvbWlu
Z0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29t
aW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwog
fQorLy8gbWxhbSBCRUdJTgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQorLy8gbWxhbSBFTkQKIHVuc2lnbmVkIENvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCiB7CiAjaWYgRU5BQkxFKExMSU5UKQorICAgIC8qIG1sYW0gQkVHSU4KICAgICBp
ZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Jl
Z2luKQogICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZW5kKSkgeworICAgICovCisjaWYgRU5BQkxFKEpJVCkKKyAgICAvLyBXaGVu
IHVzaW5nIHRoZSBKSVQsIHdlIGNvdWxkIGhhdmUgYWRkcmVzc2VzIHRoYXQgbm90IGJ5dGVjb2Rl
IGFkZHJlc3Nlcy4KKyAgICAvLyBXZSBjaGVjayBpZiB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4g
dGhlIExMaW50IGdsdWUgYW5kIG9wY29kZSBoYW5kbGVycworICAgIC8vIHJhbmdlIGhlcmUgdG8g
ZW5zdXJlIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgYnl0ZWNvZGUgYmVmb3JlIGF0dGVtcHRpbmcK
KyAgICAvLyB0byBjb252ZXJ0IHRoZSByZXR1cm4gYWRkcmVzcyBpbnRvIGEgYnl0ZWNvZGUgb2Zm
c2V0LgorICAgIC8vCisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhlIEMgTG9vcCBMTEludCwgdGhl
IEpJVCBpcyBkaXNhYmxlZCwgYW5kIHRoZSBvbmx5CisgICAgLy8gdmFsaWQgcmV0dXJuIGFkZHJl
c3NlcyBzaG91bGQgYmUgYnl0ZWNvZGUgUENzLiAgU28sIHdlIGNhbiBieXBhc3MgdGhpcworICAg
IC8vIGNoZWNrIGluIHRoYXQgY2FzZS4KKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49
IExMSU5UX0FERFJFU1NfT0ZfR0xVRShsbGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRk
cmVzcy52YWx1ZSgpIDw9IExMSU5UX0FERFJFU1NfT0ZfR0xVRShsbGludF9lbmQpKSAKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHJldHVybkFkZHJlc3MpOworI2VuZGlmCisgICAgeworICAgIC8v
IG1sYW0gRU5ECiAgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgICAgIEFT
U0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKICAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwpAQCAtMjU5NCwxOCArMjYyMiw1MiBAQCB1
bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAgICAgICAgIEFTU0VSVChP
UENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChvcF9jYWxsKSk7
CiAgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgo
b3BfY29uc3RydWN0KSk7CiAgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09
IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgICAgIC8qIG1sYW0gQkVHSU4KICAg
ICAgICAgaWYgKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyldLnUu
cG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfdmFyYXJncykpIHsK
KyAgICAgICAgKi8KKyAgICAgICAgaWYgKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2Nh
bGxfdmFyYXJncyldLnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9wX2Nh
bGxfdmFyYXJncykpIHsKKyAgICAgICAgLy8gbWxhbSBFTkQKICAgICAgICAgICAgIC8vIFdlIGtu
b3cgdGhhdCB0aGUgcHJlY2VkaW5nIGluc3RydWN0aW9uIG11c3QgYmUgb3BfY2FsbF92YXJhcmdz
IGJlY2F1c2UgdGhlcmUgaXMgbm8gd2F5IHRoYXQKICAgICAgICAgICAgIC8vIHRoZSBwb2ludGVy
IHRvIHRoZSBjYWxsX3ZhcmFyZ3MgY291bGQgYmUgYW4gb3BlcmFuZCB0byB0aGUgY2FsbC4KICAg
ICAgICAgICAgIGluc3RydWN0aW9uIC09IE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKTsK
KyAgICAgICAgICAgIC8qIG1sYW0gQkVHSU4KICAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlv
blstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4obGxpbnRfb3BfY2FsbCkKICAgICAgICAgICAgICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BD
T0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxp
bnRfb3BfY29uc3RydWN0KQogICAgICAgICAgICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENP
REVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGlu
dF9vcF9jYWxsX2V2YWwpKTsKKyAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiBtbGFtCisg
ICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUu
cG9pbnRlciAhPSBMTElOVF9BRERSRVNTX09GX09QQ09ERV9IQU5ETEVSKG9wX2NhbGwpCisgICAg
ICAgICAgICAgICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUu
cG9pbnRlciAhPSBMTElOVF9BRERSRVNTX09GX09QQ09ERV9IQU5ETEVSKG9wX2NvbnN0cnVjdCkK
KyAgICAgICAgICAgICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxs
KV0udS5wb2ludGVyICE9IExMSU5UX0FERFJFU1NfT0ZfT1BDT0RFX0hBTkRMRVIob3BfY2FsbF9l
dmFsKSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uWy1P
UENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgIT0gTExJbnQ6OkRhdGE6OmdldE9wY29k
ZVB0cihvcF9jYWxsKQorICAgICAgICAgICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENPREVf
TEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgIT0gTExJbnQ6OkRhdGE6OmdldE9wY29kZVB0cihv
cF9jb25zdHJ1Y3QpCisgICAgICAgICAgICAgICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9M
RU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9w
X2NhbGxfZXZhbCkpOworICAgICAgICAgICAgLy8gbWxhbSBFTkQgKi8KICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIE11c3QgYmUgdGhhdCB0aGUgbGFzdCBpbnN0cnVjdGlvbiB3YXMg
c29tZSBvcF9jYWxsLgorICAgICAgICAgICAgLyogbWxhbSBCRUdJTgogICAgICAgICAgICAgQVNT
RVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gYml0
d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsKQogICAgICAgICAgICAgICAgICAgIHx8IGlu
c3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9j
YXN0PHZvaWQqPihsbGludF9vcF9jb25zdHJ1Y3QpCiAgICAgICAgICAgICAgICAgICAgfHwgaW5z
dHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciA9PSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfZXZhbCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIGlmICghKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIg
PT0gTExJbnQ6OkRhdGE6OmdldE9wY29kZVB0cihvcF9jYWxsKQorICAgICAgICAgICAgICAgICAg
IHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gTExJ
bnQ6OkRhdGE6OmdldE9wY29kZVB0cihvcF9jb25zdHJ1Y3QpCisgICAgICAgICAgICAgICAgICB8
fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IExMSW50
OjpEYXRhOjpnZXRPcGNvZGVQdHIob3BfY2FsbF9ldmFsKSkpIHsKKyAgICAgICAgICAgICAgICBw
cmludGYoImluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPSAl
cFxuIiwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlcik7Cisg
ICAgICAgICAgICAgICAgcHJpbnRmKCJMTElOVF9BRERSRVNTX09GX09QQ09ERV9IQU5ETEVSKG9w
X2NhbGwpID0gJXBcbiIsIExMSW50OjpEYXRhOjpnZXRPcGNvZGVQdHIob3BfY2FsbCkpOworICAg
ICAgICAgICAgICAgIHByaW50ZigiTExJTlRfQUREUkVTU19PRl9PUENPREVfSEFORExFUihvcF9j
b25zdHJ1Y3QpID0gJXBcbiIsIExMSW50OjpEYXRhOjpnZXRPcGNvZGVQdHIob3BfY29uc3RydWN0
KSk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJMTElOVF9BRERSRVNTX09GX09QQ09ERV9IQU5E
TEVSKG9wX2NhbGxfZXZhbCkgPSAlcFxuIiwgTExJbnQ6OkRhdGE6OmdldE9wY29kZVB0cihvcF9j
YWxsX2V2YWwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIG1sYW0KKyAgICAgICAg
ICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVy
ID09IExMSU5UX0FERFJFU1NfT0ZfT1BDT0RFX0hBTkRMRVIob3BfY2FsbCkKKyAgICAgICAgICAg
ICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVy
ID09IExMSU5UX0FERFJFU1NfT0ZfT1BDT0RFX0hBTkRMRVIob3BfY29uc3RydWN0KQorICAgICAg
ICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBv
aW50ZXIgPT0gTExJTlRfQUREUkVTU19PRl9PUENPREVfSEFORExFUihvcF9jYWxsX2V2YWwpKTsK
KyAgICAgICAgICAgICovCisgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9M
RU5HVEgob3BfY2FsbCldLnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9w
X2NhbGwpCisgICAgICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgo
b3BfY2FsbCldLnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKG9wX2NvbnN0
cnVjdCkKKyAgICAgICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChv
cF9jYWxsKV0udS5wb2ludGVyID09IExMSW50OjpEYXRhOjpnZXRPcGNvZGVQdHIob3BfY2FsbF9l
dmFsKSk7CisgICAgICAgICAgICAvLyBtbGFtIEVORCAqLwogICAgICAgICAgICAgaW5zdHJ1Y3Rp
b24gLT0gT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI2
MTQsMTIgKzI2NzYsMTUgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVj
UwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShK
SVQpIC8vIG1sYW0gaXMgdGhpcyB0cnVseSBKSVQgb25seT8gIENoZWNrIHdpdGggRmlsaXAuCiAg
ICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMTsKICAgICBWZWN0b3I8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1f
Y2FsbFJldHVybkluZGV4VmVjdG9yOwogICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGlj
ZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0
dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworI2VuZGlmIC8vIEVOQUJMRShK
SVQpIC8vIG1sYW0gaXMgdGhpcyB0cnVseSBKSVQgb25seT8gIENoZWNrIHdpdGggRmlsaXAuCiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBACiAvLyAoYXMgb3Bw
b3NlZCB0byBhcHAgZGVidWdnaW5nKSwgdGhpcyBmZWF0dXJlIGlzIHRvIGJlIGRpc2FibGVkIGJ5
IGRlZmF1bHQsCiAvLyBhbmQgY2FuIGJlIGVuYWJsZWQgYXMgbmVlZGVkIGZvciBWTSBkZXZlbG9w
bWVudCB1c2Ugb25seS4KIAotI2RlZmluZSBFTkFCTEVfQllURUNPREVfQ09NTUVOVFMgMAorI2Rl
ZmluZSBFTkFCTEVfQllURUNPREVfQ09NTUVOVFMgMSAvLyBtbGFtIHdhcyAwCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0yMjgsOSArMjI4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1
bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxs
TGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2Rl
SW5kZXgpKTsKICAgICAgICAgfQorI2VuZGlmIC8vIG1sYW0KIAogICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAorI2lmIEVOQUJM
RShKSVQpIC8vIG1sYW0KICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX3JhcmVE
YXRhKQpAQCAtMjUwLDYgKzI1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKSAvLyBtbGFtCiAjaWYgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lk
IGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQogICAgICAgICB7
CkBAIC0yNTgsNyArMjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
I2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklU
Q29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQpAQCAtMzM0
LDEwICszMzcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25l
ZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0IEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQmIHdhdGNo
cG9pbnQpCiAgICAgICAgIHsKKyNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgY3JlYXRlREZH
RGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0Rh
dGEtPndhdGNocG9pbnRzLnNpemUoKTsKICAgICAgICAgICAgIG1fZGZnRGF0YS0+d2F0Y2hwb2lu
dHMuYXBwZW5kKHdhdGNocG9pbnQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNl
CisgICAgICAgICAgICBVTlVTRURfUEFSQU0od2F0Y2hwb2ludCk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZk9TUkV4aXRzKCkKQEAgLTgxMiw2ICs4MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBtX3JhcmVEYXRhICYmICEhbV9yYXJlRGF0YS0+bV9jb2RlT3JpZ2lucy5z
aXplKCk7CiAgICAgICAgIH0KICAgICAgICAgCisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAg
ICAgICBib29sIGNvZGVPcmlnaW5Gb3JSZXR1cm4oUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IWhhc0NvZGVPcmlnaW5zKCkpCkBAIC04MjMsNyArODMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBjb2RlT3JpZ2luID0gZW50cnktPmNvZGVPcmlnaW47CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKKyNlbmRpZgorCiAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbih1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKG1fcmFyZURhdGEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw4IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7Ci0jaWYgRU5BQkxFKExMSU5UKQor
Ly8gbWxhbSAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShM
TElOVF9DX0xPT1ApCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CiAgICAgCiAgICAgaWYg
KGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lv
biAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBJbnN0cnVjdGlvbl9o
CiAKICNpbmNsdWRlICJKSVRTdHViUm91dGluZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIgLy8gbWxhbSBSRUZBQ1RPUiB0aGlzIGludG8gYSBMTEludE9wY29kZS5oLgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlTbG90LmgiCkBAIC0xOTcsNiArMTk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQorICAgICAgICAgICAgTExJbnRPcGNvZGUgbGxpbnRPcGNvZGU7CisjZW5kaWYK
ICAgICAgICAgICAgIGludCBvcGVyYW5kOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZTsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0
dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNyArMjIxLDIzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9J
RCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKy8vIG1sYW0gb3JpZyAj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExM
SU5UKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjZGVm
aW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMQorI2Vsc2UKKyAgIC8vIElmIHdlIGdl
dCBoZXJlLCB0aGVuIHRoZSBvbmx5IG90aGVyIHJlYXNvbiB3aHkgd2Ugd2lsbCB3YW50IGNvbXB1
dGVkIGdvdG8KKyAgIC8vIG9wY29kZXMgaXMgaWYgd2UgaGF2ZSB0aGUgTExJTlQgYW5kIHdlJ3Jl
IG5vdCB1c2luZyB0aGUgQyBMb29wLgorICAgLy8gSWYgd2UgYXJlIHVzaW5nIHRoZSBDIExvb3Ag
YW5kIHdlIHdhbnRlZCBjb21wdXRlZCBnb3Rvcywgd2Ugd291bGQgaGF2ZQorICAgLy8gZW5hYmxl
ZCBDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIsIGFuZCB0aGF0IHdvdWxkIGJlIGhh
bmRsZWQKKyAgIC8vIGluIHRoZSBjYXNlIGFib3ZlLgorICAgI2lmIEVOQUJMRShMTElOVCkgJiYg
IUVOQUJMRShMTElOVF9DX0xPT1ApCisgICAjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09Q
Q09ERVMgMQorICAgI2Vsc2UKKyAgICNkZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9fT1BDT0RF
UyAwCisgICAjZW5kaWYKKyNlbmRpZgorCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZv
aWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDggQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQog
ICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNv
ZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKLSNpZiBFTkFCTEUoTExJTlQpCisv
LyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUy
LDEwIEBAIHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEkKIHsKICNpZiBF
TkFCTEUoTExJTlQpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKLSAgICAKKworI2lmICFFTkFC
TEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCiAgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bj
b2RlID09IGxsaW50X29wX3Jlc29sdmVfZ2xvYmFsKTsKKyNlbmRpZiAvLyBtbGFtCiAgICAgCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQo
KTsKICAgICBpZiAoIXN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
OCBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+
CiAKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2lm
IENQVShYODZfNjQpCkBAIC0xNDI4LDMgKzE0MzAsNCBAQCBleHRlcm4gIkMiIEVuY29kZWRKU1Zh
bHVlIEhPU1RfQ0FMTF9SRVRVCiAKICNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCiAKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKSAvLyBtbGFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQWJzdHJhY3RQQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBBYnN0cmFjdFBDOjpBYnN0cmFjdFBD
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxEYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7IC8vIG1sYW0KICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgUmVnaXN0ZXJG
aWxlKiBDYWxsRnJhbWU6OnJlZ2lzdGVyRmlsZSgpCiB9CiAKICNlbmRpZgotCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKIHVuc2lnbmVkIENhbGxGcmFtZTo6Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdD
b2RlKCkgY29uc3QKIHsKQEAgLTE5Nyw2ICsxOTYsMTEgQEAgUmVnaXN0ZXIqIENhbGxGcmFtZTo6
ZnJhbWVFeHRlbnRJbnRlcm5hbAogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+
Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgI2lmIG1sYW1fUFJJTlRG
CisgICAgcHJpbnRmKCJtbGFtIDo6IENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJbnRlcm5hbCgpIHJl
Z2lzdGVycygpICVwIGNiLT5tX251bUNhbGxlZVJlZ2lzdGVycyAlZCA9PT4gJXAgQCAlcyAlczol
ZFxuIiwgCisgICAgICAgICAgIHJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzLCByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsCisg
ICAgICAgICAgIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYK
ICAgICByZXR1cm4gcmVnaXN0ZXJzKCkgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsOCBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgICAgIENhbGxGcmFtZSYgb3BlcmF0b3I9KGNvbnN0IFJlZ2lzdGVy
JiByKSB7ICpzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpID0gcjsgcmV0dXJuICp0aGlzOyB9
CiAKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNb
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0uY2FsbEZyYW1lKCk7IH0KLSNpZiBFTkFCTEUoSklU
KQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJ
TlQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBS
ZXR1cm5BZGRyZXNzUHRyKHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9CiAg
ICAgICAgIGJvb2wgaGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAhIXRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICAgICAgICAgdm9pZCBjbGVhclJldHVyblBDKCkgeyBy
ZWdpc3RlcnMoKVtSZWdpc3RlckZpbGU6OlJldHVyblBDXSA9IHN0YXRpY19jYXN0PEluc3RydWN0
aW9uKj4oMCk7IH0KQEAgLTE0OCw3ICsxNDksNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5U
RVJQUkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElO
VF9DX0xPT1ApIC8vIG1sYW0KICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0
IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0yNzIsNiArMjczLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
IHsKICNlbmRpZgogICAgICAgICBFeGVjU3RhdGUoKTsKICAgICAgICAgfkV4ZWNTdGF0ZSgpOwor
CisgICAgICAgIC8vIG1sYW0gQkVHSU4KKyAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9y
OworICAgICAgICAvLyBtbGFtIEVORAogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5j
bHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3Iu
aCIgLy8gbWxhbQogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNTU0LDcgKzU1NSw4IEBAIEludGVycHJldGVyOjpJ
bnRlcnByZXRlcigpCiAKIEludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJM
RShMTElOVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX09QQ09ERVMpCiAgICAgaWYgKG1fY2xhc3NpY0VuYWJsZWQpCiAgICAgICAgIGRl
bGV0ZVtdIG1fb3Bjb2RlVGFibGU7CiAjZW5kaWYKQEAgLTU3MCwyMCArNTcyLDM1IEBAIHZvaWQg
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEKICNlcnJvciAiQnVpbGRpbmcgYm90
aCBMTEludCBhbmQgdGhlIENsYXNzaWMgSW50ZXJwcmV0ZXIgaXMgbm90IHN1cHBvcnRlZCBiZWNh
dXNlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZS4iCiAjZW5kaWYKIAorLy8gbWxhbSBvcmlnIAorICAg
ICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIGxsaW50Q0xvb3BFeGVjdXRlKEluaXRpYWxp
emVBbmRSZXR1cm4sIDAsIDAsIGxsaW50X3VudXNlZCwgbGxpbnREYXRhKTsKKyAgICAjZW5kaWYK
KworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAjaWYgRU5BQkxFKExMSU5UKQor
CiAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKICAgICAgICAgbV9vcGNvZGVJRFRhYmxl
LmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgIG1f
Y2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKKwogI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xB
U1NJQ19JTlRFUlBSRVRFUikKICAgICBpZiAoY2FuVXNlSklUKSB7CiAgICAgICAgIC8vIElmIHRo
ZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVz
LgotICAgICAgICAKKworICAgICAgICAvLyBtbGFtIDo6IFRoZSBmb2xsb3dpbmcgY29kZSBpcyBv
YnNvbGV0ZSBiZWNhdXNlIHdlIHNob3VsZCBuZXZlciBlbmNvdW50ZXIgdGhpcworICAgICAgICAv
LyBjYXNlLiAgSW4gcHJpdmF0ZUV4ZWN1dGUoKSwgdGhlcmUgaXMgYW4gYXNzZXJ0aW9uIHRoYXQg
ZW5zdXJlcyB0aGF0IHdlIG5ldmVyCisgICAgICAgIC8vIG1peCB0aGUgSklUIHdpdGggdGhlIGNs
YXNzaWMgY29tcGlsZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtp
XSA9IG9wY29kZTsKICAgICAgICAgfQogICAgICAgICBtX2NsYXNzaWNFbmFibGVkID0gZmFsc2U7
CisgICAgICAgIC8vIG1sYW0gOjogTk9URTogQmFzZWQgb24gSlNHbG9iYWxEYXRhJ3MgZW5hYmxl
QXNzZW1ibGVyKCksIGl0IGxvb2tzIGxpa2UgdGhlIGNsYXNzaWMKKyAgICAgICAgLy8gaW50ZXJw
cmV0ZXIgaXMgc3RpbGwgaW4gdXNlIHdoZW4gLS11c2VKSVQ9ZmFsc2UuICBXaWxsIGhhdmUgdG8g
Zml4IHRoaXMgc28gdGhhdAorICAgICAgICAvLyBMTElOVCBjYW4gc3RhbmQgYWxvbmUuCisKICAg
ICB9IGVsc2UgewogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAw
LCAwKTsKICAgICAgICAgCkBAIC01OTIsMTMgKzYwOSwxOCBAQCB2b2lkIEludGVycHJldGVyOjpp
bml0aWFsaXplKExMSW50OjpEYXRhCiAgICAgICAgIAogICAgICAgICBtX2NsYXNzaWNFbmFibGVk
ID0gdHJ1ZTsKICAgICB9CisjZW5kaWYgLy8gbWxhbSBuZXcKKwogI2Vsc2UKICNpZiBFTkFCTEUo
Q0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBtX2NsYXNzaWNFbmFibGVkID0gdHJ1ZTsKICNlbHNl
CiAgICAgbV9jbGFzc2ljRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxF
KENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKy8vIG1sYW0gb3JpZyAjZW5kaWYg
Ly8gIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUo
TExJTlQpCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC03
MDksNyArNzMxLDggQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQog
CiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYg
IUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fY2xhc3NpY0VuYWJsZWQpCiAgICAgICAgIHJldHVy
biBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOwpAQCAtNzczLDcgKzc5Niw4IEBAIE5FVkVSX0lOTElO
RSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBD
KCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKLSNlbGlmIEVOQUJMRShKSVQp
CisvLyBtbGFtIG9yaWcgI2VsaWYgRU5BQkxFKEpJVCkKKyNlbGlmIEVOQUJMRShKSVQpIHx8IEVO
QUJMRShMTElOVF9DX0xPT1ApCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAg
ICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5WUEMoKSkgLSAxOwpAQCAtMTA2MSwxMiArMTA4NSwyMSBAQCBORVZFUl9JTkxJTkUgSGFu
ZGxlckluZm8qIEludGVycHJldGVyOjp0CiAgICAgLy8gQ2FsY3VsYXRlIGFuIGV4Y2VwdGlvbiBo
YW5kbGVyIHZQQywgdW53aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vzc2FyeS4KICAgICBIYW5k
bGVySW5mbyogaGFuZGxlciA9IDA7CiAgICAgd2hpbGUgKGlzSW50ZXJydXB0IHx8ICEoaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkp
IHsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiXG5cbiBtbGFtIFVO
V0lORCBjdXJyZW50IGNmciAlcFxuXG4iLCBjYWxsRnJhbWUpOworICAgICAgICAjZW5kaWYKICAg
ICAgICAgaWYgKCF1bndpbmRDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgYnl0
ZWNvZGVPZmZzZXQsIGNvZGVCbG9jaykpIHsKKyAgICAgICAgICAgICNpZiBtbGFtX1BSSU5URgor
ICAgICAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgIDw8PCBQT1BQ
RUQgdG8gcmVzdG9yZWQgIik7IC8vIG1sYW0KKyAgICAgICAgICAgICNlbmRpZgogICAgICAgICAg
ICAgaWYgKFByb2ZpbGVyKiBwcm9maWxlciA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmVuYWJs
ZWRQcm9maWxlcigpKQogICAgICAgICAgICAgICAgIHByb2ZpbGVyLT5leGNlcHRpb25VbndpbmQo
Y2FsbEZyYW1lKTsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnRvcENhbGxG
cmFtZSA9IGNhbGxGcmFtZTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAg
ICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxG
cmFtZSwgIiAgPDw8IFBPUFBFRCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQorICAgICAgICAjZW5k
aWYKICAgICB9CiAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkudG9wQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lOwogCkBAIC0xMTEwLDcgKzExNDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBj
aGVja2VkUmV0dXJuKEpTCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1KU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTT2JqZWN0KiB0aGlzT2Jq
KQorSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChQcm9ncmFtRXhlY3V0YWJsZSog
cHJvZ3JhbSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
LCBKU09iamVjdCogdGhpc09iaikKIHsKICAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmplY3QodGhp
c09iaiwgY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJUKCFzY29wZUNoYWluLT5nbG9iYWxEYXRhLT5l
eGNlcHRpb24pOwpAQCAtMTEyMSw2ICsxMTU0LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShQcm9ncmFtRXhlYwogICAgIGlmIChtX3JlZW50cnlEZXB0aCA+PSBNYXhTbWFsbFRocmVh
ZFJlZW50cnlEZXB0aCAmJiBtX3JlZW50cnlEZXB0aCA+PSBjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS5tYXhSZWVudHJ5RGVwdGgpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhl
ICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEgSlNPTiBvYmplY3QuIElmIHNvLAorICAgIC8v
IHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3QgaGVyZS4gRWxzZSwgd2UnbGwgaGFuZGxlIHJl
YWwgSlMgY29kZQorICAgIC8vIGJlbG93IGF0IGZhaWxlZEpTT05QLgogICAgIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSgqc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSwg
c2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBWZWN0b3I8SlNPTlBEYXRhPiBK
U09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKQEAgLTEyMjEsMzYgKzEyNTcsNTUgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIGZhaWxlZEpTT05QOgorICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVu
IHdlIGhhdmUgYWxyZWFkeSBwcm92ZW4gdGhhdCB0aGUgc2NyaXB0IGlzIG5vdCBhIEpTT04KKyAg
ICAvLyBvYmplY3QuCisKKyAgICAvLyBDb21waWxlIHNvdXJjZSB0byBieXRlY29kZSBpZiBuZWNl
c3Nhcnk6CiAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y29tcGlsZShjYWxsRnJhbWUs
IHNjb3BlQ2hhaW4pOwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dFcnJvcihjYWxsRnJhbWUsIGVycm9yKSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSAmcHJvZ3JhbS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIAorICAgIC8vIFJlc2VydmUgc3Rh
Y2sgc3BhY2UgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAgICBSZWdpc3Rlciogb2xkRW5kID0gbV9y
ZWdpc3RlckZpbGUuZW5kKCk7CiAgICAgUmVnaXN0ZXIqIG5ld0VuZCA9IG9sZEVuZCArIGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXpl
ICsgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICBpZiAoIW1fcmVnaXN0ZXJG
aWxlLmdyb3cobmV3RW5kKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKKyAgICAvLyBQdXNoIHRoZSBjYWxsIGZyYW1l
IGZvciB0aGlzIGludm9jYXRpb246CiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShvbGRFbmQgKyBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIFJlZ2lz
dGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIG5ld0Nh
bGxGcmFtZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3BlQ2hhaW4sIENhbGxGcmFtZTo6bm9DYWxs
ZXIoKSwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIDApOworICAgICNpZiBtbGFtX1BSSU5U
RgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobmV3Q2FsbEZyYW1lLCAiICArKysgaW5pdCAi
LCAwLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAgICAg
bmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7CiAgICAgVG9wQ2FsbEZyYW1lU2V0
dGVyIHRvcENhbGxGcmFtZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbmV3Q2FsbEZyYW1lKTsK
KyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6
OmR1bXBGcmFtZShuZXdDYWxsRnJhbWUsICIgID4+PiBQVVNIRUQgdG8gbmV3ICIsIDAsIF9fRlVO
Q1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtIEVO
RAogCiAgICAgaWYgKFByb2ZpbGVyKiBwcm9maWxlciA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZy
YW1lLCBwcm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+bGluZU5vKCkpOwogCisgICAgLy8g
RXhlY3V0ZSB0aGUgY29kZToKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICB7CiAgICAgICAgIFNh
bXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAKICAg
ICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAorI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIGlmICghY2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAg
IHJlc3VsdCA9IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS5leGVjdXRlKCZtX3JlZ2lzdGVy
RmlsZSwgbmV3Q2FsbEZyYW1lLCBzY29wZUNoYWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgZWxz
ZQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAgICAgICAgIHJlc3VsdCA9IHBy
aXZhdGVFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2Vs
c2UgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgcmVzdWx0ID0gbGxpbnRDTG9vcEV4
ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgbGxpbnRfcHJvZ3Jh
bV9wcm9sb2d1ZSk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogICAgICAgICBt
X3JlZW50cnlEZXB0aC0tOwogICAgIH0KQEAgLTEyNzUsNiArMTMzMCwxMiBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCiAgICAgUmVnaXN0ZXIq
IG9sZEVuZCA9IG1fcmVnaXN0ZXJGaWxlLmVuZCgpOworICAgIC8vIG1sYW0gQkVHSU4gdGVzdCBk
ZWJ1ZworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50ZigiICAgbWxhbSBjYWxsRnJhbWUt
PmZyYW1lRXh0ZW50KCkgJXAgPD0gb2xkRW5kICAlcCA9PT4gcmVzdWx0ICVkXG4iLCBjYWxsRnJh
bWUtPmZyYW1lRXh0ZW50KCksIG9sZEVuZCwgKGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQoKSA8PSBv
bGRFbmQpKTsKKyAgICBwcmludGYoIiAgIG1sYW0gY2FsbEZyYW1lICVwID09IGNhbGxGcmFtZS0+
c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSAlcCA9PT4gcmVzdWx0ICVk
XG4iLCBjYWxsRnJhbWUsICBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIChjYWxsRnJhbWUgPT0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpKSk7CisgICAgI2VuZGlmCisgICAgLy8gbWxhbSBFTkQgdGVz
dCBkZWJ1ZwogICAgIEFTU0VSVChjYWxsRnJhbWUtPmZyYW1lRXh0ZW50KCkgPD0gb2xkRW5kIHx8
IGNhbGxGcmFtZSA9PSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpOwogICAgIGludCBhcmdDb3VudCA9IDEgKyBhcmdzLnNpemUoKTsgLy8gaW1wbGlj
aXQgInRoaXMiIHBhcmFtZXRlcgogICAgIHNpemVfdCByZWdpc3Rlck9mZnNldCA9IGFyZ0NvdW50
ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTMxNywxMiArMTM3OCwx
NyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgICAgICAg
ICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwog
CiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgIUVOQUJMRShMTElOVF9DX0xP
T1ApCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgICAgIGlmICghY2xhc3NpY0VuYWJsZWQoKSkK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0Nh
bGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVs
c2UKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7
CisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAgICAgcmVzdWx0ID0gbGxp
bnRDTG9vcEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOyAvLyBtbGFtIENIRUNLPworI2VuZGlm
IC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisKICAgICAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07
CiAgICAgICAgIH0KIApAQCAtMTQxMSwxMiArMTQ3NywxNiBAQCBKU09iamVjdCogSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNv
cmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBtX3JlZW50cnlE
ZXB0aCsrOyAgCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgICAgIGlmICghY2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
ckNvbnN0cnVjdCgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGNvbnN0
cnVjdERhdGFTY29wZUNoYWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVsc2UKLSNlbmRp
ZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0
ZUV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZWxzZSAv
LyBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAgICAgcmVzdWx0ID0gbGxpbnRDTG9vcEV4
ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICAgICAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgICAgIH0KIApAQCAtMTUx
NCwxOCArMTU4NCwyNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNs
CiAgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5n
ZXQoKSk7CiAgICAgICAgIAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCi0jaWYgRU5BQkxF
KEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1Ap
CisgICAgICAgIC8vKiBtbGFtIFZFUklGWWluZyB0aGF0IExMSU5UIGRvZXNuJ3QgdXNlIHByaXZh
dGVFeGVjdXRlKCk6CiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIGlm
IChjbG9zdXJlLm5ld0NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogI2VuZGlm
Ci0gICAgICAgICAgICByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdD
YWxsRnJhbWUsIGNsb3N1cmUuZ2xvYmFsRGF0YSk7CisgICAgICAgIC8vKi8KKyAgICAgICAgcmVz
dWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxs
KCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lLCBjbG9zdXJl
Lmdsb2JhbERhdGEpOworICAgICAgICAvLyogbWxhbSBWRVJJRllpbmcgdGhhdCBMTElOVCBkb2Vz
bid0IHVzZSBwcml2YXRlRXhlY3V0ZSgpOgogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVS
KQogICAgICAgICBlbHNlCiAjZW5kaWYKLSNlbmRpZgorICAgICAgICAvLyovCisjZWxzZSAvLyBF
TkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAgICAgcmVzdWx0ID0gbGxpbnRDTG9vcEV4ZWN1
dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lLCBsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7IC8vIG1sYW0gPz8/CisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQgTExJTlQg
ZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikKICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwgJm1fcmVn
aXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CiAjZW5kaWYKKyAgICAgICAgLy8qLwog
ICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgIH0KIApAQCAtMTYxOSwxOCArMTY5OCwyNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICAgICAgbV9y
ZWVudHJ5RGVwdGgrKzsKICAgICAgICAgCi0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVO
QUJMRShKSVQpCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgIC8vKiBtbGFtIFZF
UklGWWluZyB0aGF0IExMSU5UIGRvZXNuJ3QgdXNlIHByaXZhdGVFeGVjdXRlKCk6CiAjaWYgRU5B
QkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKS5jYW5Vc2VKSVQoKSkKICNlbmRpZgotICAgICAgICAgICAgcmVzdWx0ID0gZXZhbC0+Z2Vu
ZXJhdGVkSklUQ29kZSgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNj
b3BlQ2hhaW4tPmdsb2JhbERhdGEpOworICAgICAgICAvLyovCisgICAgICAgIHJlc3VsdCA9IGV2
YWwtPmdlbmVyYXRlZEpJVENvZGUoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZy
YW1lLCBzY29wZUNoYWluLT5nbG9iYWxEYXRhKTsKKyAgICAgICAgLy8qIG1sYW0gVkVSSUZZaW5n
IHRoYXQgTExJTlQgZG9lc24ndCB1c2UgcHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xB
U1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgZWxzZQogI2VuZGlmCi0jZW5kaWYKKyAgICAgICAg
Ly8qLworI2Vsc2UgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIHJlc3VsdCA9
IGxsaW50Q0xvb3BFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUs
IGxsaW50X2V2YWxfcHJvbG9ndWUpOyAvLyBtbGFtCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0Nf
TE9PUCkKKyAgICAgICAgLy8qIG1sYW0gVkVSSUZZaW5nIHRoYXQgTExJTlQgZG9lc24ndCB1c2Ug
cHJpdmF0ZUV4ZWN1dGUoKToKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAg
ICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBu
ZXdDYWxsRnJhbWUpOwogI2VuZGlmCisgICAgICAgIC8vKi8KICAgICAgICAgbV9yZWVudHJ5RGVw
dGgtLTsKICAgICB9CiAKQEAgLTE5MDYsMTIgKzE5OTQsMTUgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SW50ZXJwcmV0ZXI6OnVuY2FjaGVHZQogCiAjZW5kaWYgLy8gRU5BQkxFKENMQVNTSUNfSU5URVJQ
UkVURVIpCiAKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogSlNWYWx1ZSBJbnRlcnByZXRl
cjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lz
dGVyRmlsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gT25lLXRpbWUgaW5pdGlh
bGl6YXRpb24gb2Ygb3VyIGFkZHJlc3MgdGFibGVzLiBXZSBoYXZlIHRvIHB1dCB0aGlzIGNvZGUK
ICAgICAvLyBoZXJlIGJlY2F1c2Ugb3VyIGxhYmVscyBhcmUgb25seSBpbiBzY29wZSBpbnNpZGUg
dGhpcyBmdW5jdGlvbi4KICAgICBpZiAoVU5MSUtFTFkoZmxhZyA9PSBJbml0aWFsaXplQW5kUmV0
dXJuKSkgewogICAgICAgICAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBS
RVRFUikKKyAgICAgICAgLy8gbWxhbSAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykK
ICAgICAgICAgICAgICNkZWZpbmUgTElTVF9PUENPREVfTEFCRUwoaWQsIGxlbmd0aCkgJiZpZCwK
ICAgICAgICAgICAgICAgICBzdGF0aWMgT3Bjb2RlIGxhYmVsc1tdID0geyBGT1JfRUFDSF9PUENP
REVfSUQoTElTVF9PUENPREVfTEFCRUwpIH07CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGxhYmVscyk7ICsraSkKQEAgLTE5OTEsOSArMjA4
Miw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAgICAg
ICAgIFVQREFURV9CWVRFQ09ERV9PRkZTRVQoKTsKICNlbHNlCiAgICAgI2RlZmluZSBERUZJTkVf
T1BDT0RFKG9wY29kZSkgb3Bjb2RlOiBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7Ci0jZW5kaWYK
KyNlbmRpZiAvLyBFTkFCTEUoT1BDT0RFX1NUQVRTKQogICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
LSNlbHNlCisjZWxzZSAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRF
UikKICAgICAjZGVmaW5lIE5FWFRfSU5TVFJVQ1RJT04oKSBTQU1QTEUoY29kZUJsb2NrLCB2UEMp
OyBnb3RvIGludGVycHJldGVyTG9vcFN0YXJ0CiAjaWYgRU5BQkxFKE9QQ09ERV9TVEFUUykKICAg
ICAjZGVmaW5lIERFRklORV9PUENPREUob3Bjb2RlKSBcCkBAIC0yMDA2LDcgKzIwOTcsNyBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjCiAgICAgd2hpbGUgKDEpIHsg
Ly8gaXRlcmF0b3IgbG9vcCBiZWdpbnMKICAgICBpbnRlcnByZXRlckxvb3BTdGFydDo7CiAgICAg
c3dpdGNoICh2UEMtPnUub3Bjb2RlKQotI2VuZGlmCisjZW5kaWYgLy8gIUVOQUJMRShDT01QVVRF
RF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgewogICAgIERFRklORV9PUENPREUob3Bf
bmV3X29iamVjdCkgewogICAgICAgICAvKiBuZXdfb2JqZWN0IGRzdChyKQpAQCAtNTMxNyw2ICs1
NDA4LDkgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZiAvLyBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikKIH0KIAorI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisKIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OnJldHJpZXZlQXJndW1lbnRzRnJvbVZNQ29kZShDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgQ2FsbEZyYW1l
KiBmdW5jdGlvbkNhbGxGcmFtZSA9IGZpbmRGdW5jdGlvbkNhbGxGcmFtZUZyb21WTUNvZGUoY2Fs
bEZyYW1lLCBmdW5jdGlvbik7CkBAIC01Mzg1LDcgKzU0NzksNyBAQCB2b2lkIEludGVycHJldGVy
OjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2spCiAgICAg
ICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7Ci0jaWYgRU5BQkxF
KENMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8
IEVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICBpZiAoIWNhbGxlckZyYW1lLT5nbG9i
YWxEYXRhKCkuY2FuVXNlSklUKCkpCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFC
TEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAi
TExJbnREYXRhLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIiAvLyBtbGFtCiAj
aW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTE5NCw3
ICsxOTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShM
TElOVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVU
RVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQog
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAg
IHJldHVybiBpZDsKQEAgLTIwNCw2ICsyMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
T3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09E
RVMpCiAjaWYgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29k
ZSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKQEAg
LTIxMyw2ICsyMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwog
CiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VuZGlm
IC8vIG1sYW0gbmV3CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgpA
QCAtMjI1LDcgKzIyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNPcGNv
ZGUoT3Bjb2RlKTsKIAotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUq
LCBDYWxsRnJhbWUqLCBTY29wZUNoYWluTm9kZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKKyAgICAg
ICAgSlNWYWx1ZSBleGVjdXRlX21sYW1QKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwg
U2NvcGVDaGFpbk5vZGUqLCBKU09iamVjdCogdGhpc09iaik7CiAgICAgICAgIEpTVmFsdWUgZXhl
Y3V0ZUNhbGwoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3Qg
Q2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBK
U09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24s
IENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAg
ICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTVmFs
dWUgdGhpc1ZhbHVlLCBTY29wZUNoYWluTm9kZSopOwpAQCAtMjgwLDcgKzI4NCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBmaW5kRnVuY3Rpb25DYWxs
RnJhbWVGcm9tVk1Db2RlKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKTsKIAorI2lmIEVOQUJMRShM
TElOVF9DX0xPT1ApCisgICAgICAgIEpTVmFsdWUgbGxpbnRDTG9vcEV4ZWN1dGUoRXhlY3V0aW9u
RmxhZywgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZyYW1lKiwgTExJbnRPcGNvZGVJRCBib290c3RyYXBP
cGNvZGVJZCA9IGxsaW50X3VudXNlZCAvKiBtbGFtIEZJWE1FICovLCBMTEludDo6RGF0YSogZGF0
YSA9IDApOworI2Vsc2UKICAgICAgICAgSlNWYWx1ZSBwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnLCBSZWdpc3RlckZpbGUqLCBDYWxsRnJhbWUqKTsKKyNlbmRpZgogCiAgICAgICAgIHZvaWQg
ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqKTsKICAgICAgICAgCkBAIC0yOTQsNiArMzAyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwog
ICAgICAgICAKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKSAvLyBtbGFtCiAjaWYg
RU5BQkxFKExMSU5UKQogICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bj
b2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9w
Y29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBk
ZWNvbXBpbGluZwpAQCAtMzAxLDExICszMTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4g
T3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBt
X29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGlu
ZwogI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogI2VuZGlmCiAg
ICAgICAgIGJvb2wgbV9jbGFzc2ljRW5hYmxlZDsKKworICAgICAgICAvLyBtbGFtIEJFR0lOCisg
ICAgICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKKyAgICAgICAgLy8gbWxhbSBFTkQKICAg
ICB9OwogCiAgICAgLy8gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBvYmplY3QgdGhhdCB3b3Vs
ZCByZXF1aXJlIHRoaXMgY29udmVyc2lvbiAoV2ViQ29yZSdzIGdsb2JhbCBvYmplY3QpLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3Iu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZN
SW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzggQEAKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgY2hhciogVk1JbnNwZWN0b3I6OmdldFR5cGVOYW1lKEpTVmFsdWUgdmFsdWUpCit7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdCBjaGFyKiB2UENUYWdEZWNvZGVTdHIgPSAi
IjsKKyAgICBzd2l0Y2ggKHZhbHVlLnRhZygpKSB7CisgICAgY2FzZSBKU1ZhbHVlOjpJbnQzMlRh
ZzogICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPEludDMyPiI7IGJyZWFrOworICAgIGNhc2Ug
SlNWYWx1ZTo6Qm9vbGVhblRhZzogICAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjxCb29sPiI7IGJy
ZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6TnVsbFRhZzogICAgICAgICAgdlBDVGFnRGVjb2RlU3Ry
ID0gIjxOdWxsPiI7IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6VW5kZWZpbmVkVGFnOiAgICAg
dlBDVGFnRGVjb2RlU3RyID0gIjxVbmRlZmluZWQ+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVl
OjpDZWxsVGFnOiAgICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPENlbGw+IjsgYnJlYWs7Cisg
ICAgY2FzZSBKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnOiAgICB2UENUYWdEZWNvZGVTdHIgPSAiPEVt
cHR5PiI7IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6RGVsZXRlZFZhbHVlVGFnOiAgdlBDVGFn
RGVjb2RlU3RyID0gIjxEZWxldGVkPiI7IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHZQ
Q1RhZ0RlY29kZVN0ciA9ICI8PiI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdlBDVGFnRGVj
b2RlU3RyOworI2Vsc2UKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKSAgICAgICAgICAgcmV0dXJu
ICI8SW50MzI+IjsKKyAgICBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgICAgcmV0dXJuICI8
Qm9vbGVhbj4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVsbCgpKSAgICAgICByZXR1cm4gIjxF
bXB0eT4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpICByZXR1cm4gIjxVbmRl
ZmluZWQ+IjsKKyAgICBlbHNlIGlmICh2YWx1ZS5pc0NlbGwoKSkgICAgICAgcmV0dXJuICI8Q2Vs
bD4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzRW1wdHkoKSkgICAgICByZXR1cm4gIjxFbXB0eT4i
OworICAgIC8vIG1sYW0gRklYTUUgPyBlbHNlIGlmIChKU1ZhbHVlOjppc0RlbGV0ZWRWYWx1ZSh2
YWx1ZS4pKSByZXR1cm4gIjxEZWxldGVkPiI7CisgICAgcmV0dXJuICIiOworI2VuZGlmCit9CisK
K3ZvaWQgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZTAoQ2FsbEZyYW1lKiBmcmFtZSkgeworICAgIGR1
bXBGcmFtZShmcmFtZSwgMCwgMCwgMCwgMCwgMCk7Cit9CisKK3ZvaWQgVk1JbnNwZWN0b3I6OmR1
bXBGcmFtZShDYWxsRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcmVmaXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCogcGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZnVuY05hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQoreworICAg
IGludCBmcmFtZUNvdW50ID0gVk1JbnNwZWN0b3I6OmNvdW50RnJhbWVzKGZyYW1lKTsKKyAgICBp
ZiAoZnJhbWVDb3VudCA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIEluc3RydWN0aW9uKiB2
UEMgPSAwOworICAgIGlmIChmcmFtZS0+Y29kZUJsb2NrKCkpCisgICAgICAgIHZQQyA9IGZyYW1l
LT5jdXJyZW50VlBDKCk7CisKKyAgICAjZGVmaW5lIENBU1QgcmVpbnRlcnByZXRfY2FzdAorCisg
ICAgcHJpbnRmKCJcbiIpOyAvLyBtbGFtIFRFU1QKKyAgICBpZiAocHJlZml4KQorICAgICAgICBw
cmludGYoIiVzIiwgcHJlZml4KTsKKyAgICBwcmludGYoIkZSQU1FIFslZF0gJXAgJXMgcGMgJXAg
fCB2cGMgJXAlcyB8IGNiICVwOiVzIHJldFBDICVwOiVzIHNjb3BlICVwOiVzIGNhbGxlckZyYW1l
ICVwOiVzIGFyZ2MgJWQ6JXMgY2FsbGVlICVwOiVzIiwKKyAgICAgICAgICAgZnJhbWVDb3VudCwg
ZnJhbWUsICI8dW5rbm93bj4iLCBwYywKKworICAgICAgICAgICB2UEMsCisgICAgICAgICAgICIi
LCAvLyBtbGFtIERvIHdlIG5lZWQgdGhpcz8gZ2V0VHlwZU5hbWUoQ0FTVDxpbnRwdHJfdD4odlBD
KSksCisKKyAgICAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxlOjpDb2RlQmxv
Y2tdLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVOYW1lKGZyYW1lW1JlZ2lzdGVyRmls
ZTo6Q29kZUJsb2NrXS5qc1ZhbHVlKCkpLAorCisgICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1l
W1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVO
YW1lKGZyYW1lW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLmpzVmFsdWUoKSksCisKKyAgICAgICAg
ICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXS5wYXlsb2FkKCkp
LAorICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5d
LmpzVmFsdWUoKSksCisKKyAgICAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxl
OjpDYWxsZXJGcmFtZV0ucGF5bG9hZCgpKSwKKyAgICAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVb
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0uanNWYWx1ZSgpKSwKKworICAgICAgICAgICBmcmFt
ZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSwKKyAgICAgICAgICAgZ2V0
VHlwZU5hbWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS5qc1ZhbHVlKCkpLAor
CisgICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5wYXls
b2FkKCkpLAorICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxl
ZV0uanNWYWx1ZSgpKSk7CisKKyAgICBpZiAoZnVuY05hbWUgfHwgZmlsZSkgeworICAgICAgICBw
cmludGYoIiBAIik7CisgICAgICAgIGlmIChmdW5jTmFtZSkKKyAgICAgICAgICAgIHByaW50Zigi
ICVzIiwgZnVuY05hbWUpOworICAgICAgICBpZiAoZmlsZSkKKyAgICAgICAgICAgIHByaW50Zigi
ICVzIiwgZmlsZSk7CisgICAgICAgIHByaW50ZigiOiVkIiwgbGluZSk7CisgICAgfQorICAgIHBy
aW50ZigiXG4iKTsKKworICAgIHByaW50ZigiXG4iKTsgLy8gbWxhbSBURVNUCisKKyAgICAjdW5k
ZWYgQ0FTVAorfQorCitpbnQgVk1JbnNwZWN0b3I6OmNvdW50RnJhbWVzKENhbGxGcmFtZSogZnJh
bWUpCit7CisgICAgaW50IGNvdW50ID0gLTE7CisgICAgLy8gbWxhbSBERUJVRyBBU1NFUlQoISFm
cmFtZSk7CisgICAgLy8gbWxhbSBGSVhNRTogRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGNoYW5nZSB0
aGlzIHNvIHRoYXQgd2UgYWxsb3cgdGhlIEhvc3QgZmxhZyB0bworICAgIC8vIGJlIHNldCBidXQg
d2UgZ2V0IHRoZSBjYWxsZXIgd2l0aCB0aGUgSG9zdCBmbGFnIG1hc2tlZCBvdXQsIGFuZCBvbmx5
IHRlcm1pbmF0ZQorICAgIC8vIHdoZW4gdGhlIGNhbGxlciBGcmFtZSBpcyBOVUxMLgorICAgIHdo
aWxlIChmcmFtZSAmJiAhZnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIHsKKyAgICAgICAg
Y291bnQrKzsKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAg
Ly8gbWxhbSBERUJVRyBBU1NFUlQoISFmcmFtZSk7CisgICAgfQorICAgIHJldHVybiBjb3VudDsK
K30KKworY29uc3QgY2hhciogVk1JbnNwZWN0b3I6OmdldEZ1bmN0aW9uTmFtZShKU0Z1bmN0aW9u
KiBmdW5jLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVVN0cmluZyBuYW1lID0gZnVuYy0+Y2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKGV4ZWMpOworICAgIGNvbnN0IGNoYXIqIG5hbWVTdHIgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYW1lLmNoYXJhY3RlcnM4KCkpOworICAgIGlmIChu
YW1lU3RyKQorICAgICAgICByZXR1cm4gbmFtZVN0cjsKKyAgICByZXR1cm4gIjx1bmtub3duPiI7
Cit9CisKKwordm9pZCBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIGludCBkZXB0aCA9IDA7CisgICAgcHJpbnRmKCJTdGFjayBzdGFydGluZyBmcm9t
IGZyYW1lICVwXG4iLCBjYWxsRnJhbWUpOworICAgIHdoaWxlIChjYWxsRnJhbWUpIHsKKyAgICAg
ICAgSlNGdW5jdGlvbiogZnVuYyA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEZyYW1lLT5jYWxs
ZWUoKSk7CisgICAgICAgIC8vaWYgKGZ1bmMpIHsKKyAgICAgICAgICAgIC8vY29uc3QgY2hhciog
ZnVuY05hbWUgPSBnZXRGdW5jdGlvbk5hbWUoZnVuYywgY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
IC8vcHJpbnRmKCIgIFslZF0gJXMgQCVwIHwgZnJhbWUgJXBcbiIsIGRlcHRoKyssIGZ1bmNOYW1l
LCBmdW5jLCBjYWxsRnJhbWUpOworICAgICAgICAgICAgLy99IGVsc2UgeworICAgICAgICAgICAg
cHJpbnRmKCIgIFslZF0gPG51bGw+IEAlcCB8IGZyYW1lICVwXG4iLCBkZXB0aCsrLCBmdW5jLCBj
YWxsRnJhbWUpOworICAgICAgICAgICAgLy99CisgICAgICAgIC8vIGR1bXBSZWdpc3RlcnMoY2Fs
bEZyYW1lKTsKKyAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwor
ICAgIH0KKyAgICBwcmludGYoIkVORCBvZiBzdGFjayBmcm9tIGZyYW1lICVwXG4iLCBjYWxsRnJh
bWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMyBAQAorI2lmbmRlZiBWTUluc3BlY3Rvcl9oCisjZGVmaW5lIFZNSW5zcGVj
dG9yX2gKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFZNSW5zcGVjdG9yIHsKK3B1YmxpYzogICAgCisgICAgc3RhdGlj
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIGdldFR5cGVOYW1lKEpTVmFsdWUgdmFsdWUp
OworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBGcmFtZTAoQ2FsbEZyYW1l
KiBmcmFtZSk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcEZyYW1lKENh
bGxGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByZWZpeCA9IDAsIHZvaWQqIHBjID0gMCwgY29u
c3QgY2hhciogZnVuY05hbWUgPSAwLCBjb25zdCBjaGFyKiBmaWxlID0gMCwgaW50IGxpbmUgPSAw
KTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvdW50RnJhbWVzKENhbGxGcmFt
ZSogZnJhbWUpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBnZXRG
dW5jdGlvbk5hbWUoSlNGdW5jdGlvbiogZnVuYywgRXhlY1N0YXRlKiBleGVjKTsKKyAgICBzdGF0
aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wU3RhY2soQ2FsbEZyYW1lKik7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFZNSW5zcGVjdG9yLmgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lv
biAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQAogLy8gVW5mb3J0dW5hdGVseSB0
aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkg
b25seSB1c2VkCiAvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVk
IHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCiAvLyBwcm9iYWJseSBmaXggdGhhdCBh
dCBzb21lIHBvaW50LgotI2lmIENPTVBJTEVSKEdDQykKKy8vIG1sYW0gb3JpZyAjaWYgQ09NUElM
RVIoR0NDKQorI2lmIENPTVBJTEVSKEdDQykgJiYgRU5BQkxFKEpJVCkgLy8gbWxhbQogCiAjaWYg
Q0FMTElOR19DT05WRU5USU9OX0lTX1NURENBTEwKICNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9W
QUxVRV9PUFRJT04gQ0RFQ0wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShy
ZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDEzIEBACiAjaWZuZGVmIEpJVENvZGVfaAogI2Rl
ZmluZSBKSVRDb2RlX2gKIAotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2lmIEVOQUJM
RShKSVQpCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyLmgiCi0jZW5kaWYKKyAgIC8vIG1sYW0gb3JpZyAjZW5kaWYK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQxLDEzICs0MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAjZW5kaWYKICAgICAKKy8vIG1sYW0gTk9URVMKKy8v
IEpJVENvZGUgc2VlbXMgdG8gYmUgYSBuYXRpdmUgY29kZSBjb250YWluZXIuICBMTEludCBuZWVk
cyBpdC4gIFNvLCBtYXliZSB3ZQorLy8gbmVlZCB0byBlbmFibGUgaXQgYWxsIHRoZSB0aW1lLgor
CiAgICAgY2xhc3MgSklUQ29kZSB7Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJl
ZjsKICAgICAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ29kZVB0cjsKLSNlbHNl
CisvKi8gbWxhbSBvcmlnICNlbHNlCiAgICAgICAgIEpJVENvZGUoKSB7IH0KLSNlbmRpZgorLy8g
bWxhbSBvcmlnICAjZW5kaWYgKi8KICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSklUVHlwZSB7
IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdK
SVQgfTsKICAgICAgICAgCkBAIC03Nyw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJh
c2VsaW5lSklUOwogICAgICAgICB9CiAgICAgICAgIAotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFt
IG9yaWcgI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQogICAgICAgICAgICAgOiBt
X2ppdFR5cGUoTm9uZSkKICAgICAgICAgewpAQCAtMTMwLDggKzEzNCwxOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZSEKICAgICAgICAgaW5saW5lIEpTVmFs
dWUgZXhlY3V0ZShSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAgICAgeworI2lmIEVOQUJMRShKSVQp
IC8vIG1sYW0KICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGN0
aVRyYW1wb2xpbmUobV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlZ2lzdGVyRmls
ZSwgY2FsbEZyYW1lLCAwLCAwLCBnbG9iYWxEYXRhKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uID8ganNOdWxsKCkgOiByZXN1bHQ7CisgICAgICAgICAgICAvLyBt
bGFtIEJFR0lOCisjZWxzZSAvLyAhRU5BQkxFKEpJVCkKKyAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShyZWdpc3RlckZpbGUpOworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Cisg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBDUkFTSCgp
OyAvLyBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUuCisgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7
CisjZW5kaWYgLy8gIUVOQUJMRShKSVQpCisgICAgICAgICAgICAvLyBtbGFtIEVORAogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCogc3RhcnQoKSBjb25zdApAQCAtMTgyLDcgKzE5Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIENvZGVSZWYgbV9yZWY7CiAgICAgICAgIEpJVFR5cGUg
bV9qaXRUeXBlOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAgICAgfTsKIAogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzAg
KzMxLDY3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERh
dGEuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8g
bWxhbSBURVNUIG9ubHkKIAotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2lmIEVOQUJM
RShKSVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQog
CiBuYW1lc3BhY2UgSlNDIHsKIAogRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRp
b25WYWx1ZSwgdW5zaWduZWQgdlBDSW5kZXgpCiB7CiAgICAgQVNTRVJUKGV4Y2VwdGlvblZhbHVl
KTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxG
cmFtZSwgIiAgIG1sYW0gOjogZ2VuZXJpY1Rocm93IEJFRk9SRSBoYW5kbGVyOiAiLCAodm9pZCop
dlBDSW5kZXgsIF9fRklMRV9fLCBfX0ZVTkNUSU9OX18sX19MSU5FX18pOworICAgICNlbmRpZgog
CiAgICAgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gSlNWYWx1ZSgpOwogICAgIEhhbmRsZXJJbmZv
KiBoYW5kbGVyID0gZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnRocm93RXhjZXB0aW9uKGNhbGxG
cmFtZSwgZXhjZXB0aW9uVmFsdWUsIHZQQ0luZGV4KTsgLy8gVGhpcyBtYXkgdXBkYXRlIGNhbGxG
cmFtZSAmIGV4Y2VwdGlvblZhbHVlIQogICAgIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGV4Y2Vw
dGlvblZhbHVlOworICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJh
bWUoY2FsbEZyYW1lLCAiICAgbWxhbSA6OiBnZW5lcmljVGhyb3cgQUZURVIgaGFuZGxlcjogIiwg
KHZvaWQqKXZQQ0luZGV4LCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAg
I2VuZGlmCiAKICAgICB2b2lkKiBjYXRjaFJvdXRpbmU7CiAgICAgSW5zdHJ1Y3Rpb24qIGNhdGNo
UENGb3JJbnRlcnByZXRlciA9IDA7CiAgICAgaWYgKGhhbmRsZXIpIHsKLSAgICAgICAgY2F0Y2hS
b3V0aW5lID0gaGFuZGxlci0+bmF0aXZlQ29kZS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAg
ICBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAmY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKClbaGFuZGxlci0+dGFyZ2V0XTsKLSAgICB9IGVsc2UKKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgICAgICBjYXRjaFJvdXRpbmUgPSByZWludGVycHJldF9jYXN0PEluc3RydWN0
aW9uKj4oY2F0Y2hQQ0ZvckludGVycHJldGVyLT51Lm9wY29kZSk7CisjZWxzZQorICAgICAgICBj
YXRjaFJvdXRpbmUgPSBoYW5kbGVyLT5uYXRpdmVDb2RlLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisj
ZW5kaWYKKyAgICAgICAgLy8gbWxhbSBCRUdJTgorICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAg
ICAgICAgcHJpbnRmKCJcbiAgICBtbGFtIDo6IGdlbmVyaWNUaHJvdygpIFNFVCBoYW5kbGVyICVw
IHwgY2F0Y2hQQ0ZvckludGVycHJldGVyID0gJXAgY2F0Y2hSb3V0aW5lICVwXG4iLCBoYW5kbGVy
LCBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIsIGNhdGNoUm91dGluZSk7CisgICAgICAgICNlbmRpZiAv
LyBtbGFtX1BSSU5URgorICAgICAgICAvLyBtbGFtIEVORAorICAgIH0gZWxzZSB7CisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgLy8gbWxhbSBvcmlnIGNhdGNoUm91dGluZSA9IExM
SU5UX0FERFJFU1NfT0ZfR0xVRShsbGludF9jdGlPcFRocm93Tm90Q2F1Z2h0KTsKKyAgICAgICAg
Ly8gbWxhbSBDT01QVVRFRF9HT1RPIGNhdGNoUm91dGluZSA9IGNvbnN0X2Nhc3Q8dm9pZCo+KExM
SW50OjpEYXRhOjpnZXRPcGNvZGUobGxpbnRfY3RpT3BUaHJvd05vdENhdWdodCkpOworICAgICAg
ICBjYXRjaFJvdXRpbmUgPSBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKGxsaW50X2N0aU9wVGhy
b3dOb3RDYXVnaHQpOworI2Vsc2UKICAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rpb25QdHIo
Y3RpT3BUaHJvd05vdENhdWdodCkudmFsdWUoKTsKKyNlbmRpZgorICAgICAgICAvLyBtbGFtIEJF
R0lOCisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuICAgIG1sYW0g
OjogZ2VuZXJpY1Rocm93KCkgU0VUIE5PIGhhbmRsZXIgfCBjYXRjaFJvdXRpbmUgPSAlcFxuIiwg
Y2F0Y2hSb3V0aW5lKTsKKyAgICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGCisgICAgICAgIC8v
IG1sYW0gRU5ECisgICAgfQogICAgIAogICAgIGdsb2JhbERhdGEtPmNhbGxGcmFtZUZvclRocm93
ID0gY2FsbEZyYW1lOworICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1w
RnJhbWUoY2FsbEZyYW1lLCAiICAgbWxhbSA6OiBnZW5lcmljVGhyb3cgVEFSR0VUIGNhbGxGcmFt
ZTogIiwgKHZvaWQqKXZQQ0luZGV4LCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7
CisgICAgI2VuZGlmCiAgICAgZ2xvYmFsRGF0YS0+dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cgPSBj
YXRjaFJvdXRpbmU7CiAgICAgZ2xvYmFsRGF0YS0+dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93
ID0gY2F0Y2hQQ0ZvckludGVycHJldGVyOworICAgIC8vIG1sYW0gQkVHSU4KKyAgICAjaWYgbWxh
bV9QUklOVEYKKyAgICBwcmludGYoIlxuICAgIG1sYW0gOjogZ2VuZXJpY1Rocm93KCkgY2F0Y2hS
b3V0aW5lICVwIGNhdGNoUENGb3JJbnRlcnByZXRlciA9ICVwXG4iLCBjYXRjaFJvdXRpbmUsIGNh
dGNoUENGb3JJbnRlcnByZXRlcik7CisgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGCisgICAgLy8g
bWxhbSBFTkQKICAgICAKICAgICBBU1NFUlQoY2F0Y2hSb3V0aW5lKTsKICAgICBFeGNlcHRpb25I
YW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIgPSB7IGNhdGNoUm91dGluZSwgY2FsbEZyYW1lIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAkocmV2aXNpb24g
MTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDggQEAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAKLSNpZiBFTkFCTEUoQVNTRU1CTEVSKQor
Ly8gbWxhbSAjaWYgRU5BQkxFKEFTU0VNQkxFUikKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKSB8fCBF
TkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0MzIsMTcgKzM0MzIsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIEpJVFRodW5rczo6Y3Rp
U3R1YgogICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCi1OYXRpdmVFeGVj
dXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Ip
CitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWJfbWxhbTEoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IpCiB7CiAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4
ZWN1dGFibGUgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmdldChmdW5jdGlvbikpCiAgICAgICAg
IHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZl
RXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpj
b21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25z
dHJ1Y3QoKSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyk7CisgICAgTmF0aXZlRXhlY3V0YWJs
ZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZV9tbGFtKCpnbG9i
YWxEYXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKSwg
ZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY29uc3RydWN0b3IsIE5vSW50cmluc2ljKTsKICAgICB3
ZWFrQWRkKCptX2hvc3RGdW5jdGlvblN0dWJNYXAsIGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFi
bGU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dl
bmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxl
KiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWJfbWxhbTIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVF
eGVjdXRhYmxlID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5nZXQoZnVuY3Rpb24pKQogICAgICAg
ICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKQEAgLTM0NTYsNyArMzQ1Niw3IEBAIE5hdGl2ZUV4
ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW8KICAgICB9IGVsc2UKICAgICAgICAgY29k
ZSA9IEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pOwogCi0g
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6
OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNpYyk7CisgICAgTmF0aXZlRXhlY3V0YWJs
ZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZV9tbGFtKCpnbG9i
YWxEYXRhLCBjb2RlLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjYWxsSG9zdEZ1bmN0aW9uQXND
b25zdHJ1Y3RvciwgaW50cmluc2ljKTsKICAgICB3ZWFrQWRkKCptX2hvc3RGdW5jdGlvblN0dWJN
YXAsIGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxl
KSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFC
TEUoSklUKQogCiAgICAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvOwpAQCAtNjQsNiArNjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWFr
OwogCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgdW5pb24gSklUU3R1YkFy
ZyB7CiAgICAgICAgIHZvaWQqIGFzUG9pbnRlcjsKICAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNF
bmNvZGVkSlNWYWx1ZTsKQEAgLTI5NSwxMSArMjk3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH0KICNlbmRpZgogCisvLyBtbGFtICNlbmRpZiAvLyBFTkFCTEUoSklUKSAvLyBtbGFtCisKICAg
ICBjbGFzcyBKSVRUaHVua3MgewogICAgIHB1YmxpYzoKICAgICAgICAgSklUVGh1bmtzKEpTR2xv
YmFsRGF0YSopOwogICAgICAgICB+SklUVGh1bmtzKCk7CiAKKy8vIG1sYW0gI2lmIEVOQUJMRShK
SVQpIC8vIG1sYW0KICAgICAgICAgc3RhdGljIHZvaWQgdHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFt
ZSosIENvZGVCbG9jayosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSlNWYWx1ZSBi
YXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKTsKICAgICAgICAgc3RhdGljIHZvaWQg
dHJ5Q2FjaGVQdXRCeUlEKENhbGxGcmFtZSosIENvZGVCbG9jayosIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgYm9vbCBkaXJlY3QpOwogCkBAIC0zMTAsNyAr
MzE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
dGlWaXJ0dWFsQ29uc3RydWN0KCkgeyByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0dXJlLmN0aVZp
cnR1YWxDb25zdHJ1Y3Q7IH0KICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2
ZUNhbGwoKQogICAgICAgICB7Ci0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxhbSAjaWYgRU5BQkxF
KExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAg
ICAgICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKICAgICAgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZlX2Nh
bGxfdHJhbXBvbGluZSk7CiAjZW5kaWYKQEAgLTMxOCwxNyArMzI0LDE5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVD
b25zdHJ1Y3QoKQogICAgICAgICB7Ci0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxhbSAjaWYgRU5B
QkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAg
ICAgICAgICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKICAgICAgICAgICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZl
X2NvbnN0cnVjdF90cmFtcG9saW5lKTsKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG1fdHJh
bXBvbGluZVN0cnVjdHVyZS5jdGlOYXRpdmVDb25zdHJ1Y3Q7CiAgICAgICAgIH0KIAorLy8gbWxh
bSAjZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY3RpU3R1YihKU0dsb2JhbERhdGEqLCBUaHVua0dlbmVyYXRvcik7CiAKLSAgICAgICAg
TmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqLCBOYXRpdmVG
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpOwotICAgICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSosIE5hdGl2ZUZ1bmN0aW9uLCBU
aHVua0dlbmVyYXRvciwgSW50cmluc2ljKTsKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9z
dEZ1bmN0aW9uU3R1Yl9tbGFtMShKU0dsb2JhbERhdGEqLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpOworICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVu
Y3Rpb25TdHViX21sYW0yKEpTR2xvYmFsRGF0YSosIE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVy
YXRvciwgSW50cmluc2ljKTsKIAogICAgICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMo
KTsKIApAQCAtMzM3LDExICszNDUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENUSVN0
dWJNYXAgbV9jdGlTdHViTWFwOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8TmF0aXZlRnVuY3Rp
b24sIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gPiBIb3N0RnVuY3Rpb25TdHViTWFwOwogICAgICAg
ICBPd25QdHI8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4gbV9ob3N0RnVuY3Rpb25TdHViTWFwOworLy8g
bWxhbSAjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAgICBSZWZQdHI8RXhlY3V0YWJsZU1l
bW9yeUhhbmRsZT4gbV9leGVjdXRhYmxlTWVtb3J5OwogCiAgICAgICAgIFRyYW1wb2xpbmVTdHJ1
Y3R1cmUgbV90cmFtcG9saW5lU3RydWN0dXJlOworLy8gbWxhbSAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkgLy8gbWxhbQogICAgIH07CiAKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KKwog
ZXh0ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2FkZChTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRf
U1RVQiBjdGlfb3BfYml0YW5kKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwpA
QCAtNDY4LDcgKzQ4MCwxNCBAQCBleHRlcm4gIkMiIHsKICAgICB2b2lkKiBKSVRfU1RVQiBjdGlf
dm1fdGhyb3coU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9J
TlRFUk5BTDsKIH0gLy8gZXh0ZXJuICJDIgogCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyNlbHNl
IC8vICFFTkFCTEUoSklUKQorCisvLyBOZWVkZWQgZm9yIHRoZSBMTEludCBDKysgSW50ZXJwcmV0
ZXIgYmFja2VuZDoKK3N0cnVjdCBKSVRTdGFja0ZyYW1lIHsKKyAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGE7Cit9OworCisjZW5kaWYgLy8gIUVOQUJMRShKSVQpCiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
CShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDkgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworCisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQor
CiAgICAgY2xhc3MgSlNJbnRlcmZhY2VKSVQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAg
IHB1YmxpYzoKICAgICAgICAgLy8gTk9URVM6CkBAIC0zMzEsNiArMzM0LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAgIH0KIAot
fQorI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KKworfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBKU0ludGVyZmFjZUpJVF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgU3BlY2lhbGl6ZWRUaHVua0pJVF9oCiAKICNp
ZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQog
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShy
ZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxF
KEpJVCkgfHwgRU5BQkxFKExMSU5UKQogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCShyZXZpc2lvbiAxMjQ2NDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIFRodW5rR2VuZXJhdG9yc19oCiAjZGVm
aW5lIFRodW5rR2VuZXJhdG9yc19oCiAKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNp
ZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkgLy8gbWxhbQog
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY3V0YWJsZVBvb2w7CiAgICAgY2xhc3MgSlNH
bG9iYWxEYXRhOwpAQCAtMzQsNiArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiAoKlRodW5rR2VuZXJhdG9yKShKU0dsb2JhbERhdGEqKTsKKworI2lmIEVOQUJMRShKSVQpIC8v
IG1sYW0KICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqKTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNo
YXJDb2RlVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CkBAIC00NSw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1Ro
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1s
YW0KIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIwICszMSwzNyBAQAogI2luY2x1
ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCi0jaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorLy8g
bWxhbSAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIgLy8gbWxhbQorLy8gbWxhbSAjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorLy8gbWxhbSBCRUdJTgorYm9vbCBEYXRhOjpzX2lz
SW5pdGVkID0gZmFsc2U7CitJbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlv
bnMgPSAwOworTExJbnRPcGNvZGUqIERhdGE6OnNfb3Bjb2RlTWFwID0gMDsKKy8vIG1sYW0gRU5E
CisKIERhdGE6OkRhdGEoKQorLyogbWxhbSBCRUdJTiBvcmlnCiAgICAgOiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCi0gICAgLCBt
X29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCisgICAgICAvLyBtbGFtIG9yaWcg
LCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCisgICAgLCBtX29wY29kZU1h
cChuZXcgT3Bjb2RlW251bUxMSW50T3Bjb2RlSURzXSkKKyovCiB7CisgICAgaWYgKCFzX2lzSW5p
dGVkKSB7CisgICAgICAgIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gbmV3IEluc3RydWN0aW9u
W21heE9wY29kZUxlbmd0aCArIDFdOworICAgICAgICBzX29wY29kZU1hcCA9IG5ldyBMTEludE9w
Y29kZVtudW1MTEludE9wY29kZUlEc107CisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCi0gICAgICAgIG1f
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwotI2RlZmluZSBPUENPREVf
RU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgICAgIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21fc2xv
d19wYXRoX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgp
IHNfb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29k
ZSk7CiAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CiAjdW5kZWYgT1BDT0RF
X0VOVFJZCisgICAgICAgIHNfaXNJbml0ZWQgPSB0cnVlOworI2VuZGlmIC8vICFFTkFCTEUoTExJ
TlRfQ19MT09QKQorICAgIH0KIH0KIAogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAtMTIyLDggKzEz
OSwxMCBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0CiAKIERhdGE6
On5EYXRhKCkKIHsKKyAgICAvKiBtbGFtIEJFR0lOIG9yaWcKICAgICBkZWxldGVbXSBtX2V4Y2Vw
dGlvbkluc3RydWN0aW9uczsKICAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKKyAgICAqLwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAK
ICNpZm5kZWYgTExJbnREYXRhX2gKICNkZWZpbmUgTExJbnREYXRhX2gKIAotI2luY2x1ZGUgIk9w
Y29kZS5oIgorLy8gbWxhbSBvcmlnICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJMb3dM
ZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDYsMTYgKzQ4LDY2
IEBAIHB1YmxpYzoKICAgICAKICAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICAg
ICAgLy8gbWxhbSBvcmlnIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICAgICAg
cmV0dXJuIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwogICAgIH0KICAgICAKLSAgICBPcGNvZGUq
IG9wY29kZU1hcCgpCisgICAgTExJbnRPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAg
ICAvLyBtbGFtIHJldHVybiBtX29wY29kZU1hcDsKKyAgICAgICAgcmV0dXJuIHNfb3Bjb2RlTWFw
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzSW5pdGVkKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzX2lzSW5pdGVkOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNldElzSW5pdGVkKCkK
KyAgICB7CisgICAgICAgIHNfaXNJbml0ZWQgPSB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBM
TEludE9wY29kZSBnZXRPcGNvZGUoTExJbnRPcGNvZGVJRCBpZCkKKyAgICB7CisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAgICAgcmV0dXJuIHNfb3Bjb2RlTWFwW2lkXTsK
KyNlbHNlCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMTEludE9wY29kZT4oaWQpOworI2Vu
ZGlmCisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgTExJbnRPcGNvZGUgZ2V0T3Bj
b2RlKE9wY29kZUlEIGlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldE9wY29kZShzdGF0aWNf
Y2FzdDxMTEludE9wY29kZUlEPihpZCkpOworICAgIH0KKworI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCogZ2V0T3Bjb2RlUHRyKExMSW50T3Bj
b2RlSUQgaWQpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Z2V0T3Bjb2RlKGlkKSk7CisgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkKiBnZXRPcGNvZGVQdHIodm9pZCBnbHVlSGVscGVyKCkpCisgICAgeworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dm9pZCo+KGdsdWVIZWxwZXIpOworICAgIH0KKyNlbmRpZgorCisgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCogZ2V0T3Bjb2RlUHRyKE9wY29kZUlEIGlkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKGlkKSk7CiAgICAgfQorCiBwcml2YXRlOgorICAgIC8q
IG1sYW0gQkVHSU4gb3JpZwogICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKICAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworICAgICovCisgICAgc3RhdGljIGJvb2wgc19p
c0luaXRlZDsKKyAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
OworICAgIHN0YXRpYyBMTEludE9wY29kZSogc19vcGNvZGVNYXA7CisgICAgLy8gbWxhbSBFTkQg
Ki8KIH07CiAjZWxzZSAvLyBFTkFCTEUoTExJTlQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDEyNDY0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKIAorLy8gbWxhbSAjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KKwog
dm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciYgYXJpdHlDaGVjaykKIHsKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkp
IHsKQEAgLTUyLDYgKzU0LDcgQEAgdm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorI2lmIEVOQUJMRShKSVQpIC8vIG1s
YW0KICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICBqaXRDb2RlID0gSklU
Q29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwogICAgICAgICBhcml0eUNoZWNrID0g
Z2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcikuY29kZSgpOwpAQCAtNjEsNiArNjQsNyBAQCB2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2lu
dChKU0dsb2JhbERhdGEmCiAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAg
ICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwog
ICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyNlbmRpZiAvLyBtbGFtCiB9CiAK
IHZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2Rl
JiBqaXRDb2RlKQpAQCAtNjksOCArNzMsOSBAQCB2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xv
YmFsRGF0YSYgZ2xvCiAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKyNpZiBFTkFC
TEUoSklUKSAgICAKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIo
ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyNl
bmRpZgogfQogCiB2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSklUQ29kZSYgaml0Q29kZSkKQEAgLTc5LDEwICs4NCwxMyBAQCB2b2lkIGdldFByb2dy
YW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgCiAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJv
bG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKyNpZiBFTkFCTEUoSklUKQogICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERh
dGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworI2VuZGlmCiB9CiAKKy8vIG1sYW0gI2VuZGlmIC8vICFFTkFCTEUoTExJ
TlRfQ19MT09QKSAvLyBtbGFtCisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCiAjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMTEludEV4Y2Vw
dGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiIC8vIG1sYW0KIAogI2lm
IEVOQUJMRShMTElOVCkKIApAQCAtNjIsNyArNjMsNyBAQCBJbnN0cnVjdGlvbiogcmV0dXJuVG9U
aHJvdyhFeGVjU3RhdGUqIGV4CiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChy
ZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsK
ICNlbmRpZgogICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5l
eGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OwotICAgIAorCiAgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0
cnVjdGlvbnMoKTsKIH0KIApAQCAtNzQsOCArNzUsOSBAQCB2b2lkKiBjYWxsVG9UaHJvdyhFeGVj
U3RhdGUqIGV4ZWMsIEluc3RyCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChj
YWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CiAj
ZW5kaWYKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
LSAgICAKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5n
X2NhbGxfdHJhbXBvbGluZSk7CisKKyAgICAvLyBtbGFtIG9yaWcgcmV0dXJuIGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworICAgIHJldHVy
biBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1w
b2xpbmUpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJl
dmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTkgKzMxLDI2IEBACiAjaW5jbHVk
ZSA8d3RmL0lubGluZUFTTS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgQ1BV
KFg4NikKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjZGVmaW5lIE9GRkxJTkVfQVNNX0Nf
TE9PUCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9DX0xPT1AgMAorI2VuZGlmCisKKyNp
ZiBDUFUoWDg2KSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNkZWZpbmUgT0ZGTElORV9BU01f
WDg2IDEKICNlbHNlCiAjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCiAjZW5kaWYKIAotI2lmIENQ
VShBUk1fVEhVTUIyKQorI2lmIENQVShBUk1fVEhVTUIyKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9P
UCkKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQogI2Vsc2UKICNkZWZpbmUgT0ZGTElORV9B
U01fQVJNdjcgMAogI2VuZGlmCiAKLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQpICYm
ICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZfNjQgMQogI2Vs
c2UKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0IDAKQEAgLTkxLDYgKzk4LDEwIEBACiAjZGVm
aW5lIE9GRkxJTkVfQVNNX1ZBTFVFX1BST0ZJTEVSIDAKICNlbmRpZgogCisvKiBtbGFtIFRSWSBt
b3ZpbmcgdG8gTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKworI2lmICFFTkFCTEUoTExJTlRfQ19M
T09QKQorCiAvLyBUaGVzZSBhcmUgZm9yIGJ1aWxkaW5nIGFuIGludGVycHJldGVyIGZyb20gZ2Vu
ZXJhdGVkIGFzc2VtYmx5IGNvZGU6CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0JFR0lOICAgYXNtICgK
ICNkZWZpbmUgT0ZGTElORV9BU01fRU5EICAgICApOwpAQCAtMTA4LDcgKzExOSwyMSBAQAogICAg
IEhJREVfU1lNQk9MKGxhYmVsKSAiXG4iICAgICAgICAgICAgICAgICAgICAgXAogICAgIFNZTUJP
TF9TVFJJTkcobGFiZWwpICI6XG4iCiAjZW5kaWYKKyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RF
X0xBQkVMKG9wY29kZSkgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxsaW50XyMjb3Bjb2RlKQog
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKGxhYmVsKSAgIExPQ0FMX0xBQkVMX1NU
UklORyhsYWJlbCkgIjpcbiIKIAorI2Vsc2UgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKworLy8g
VGhlc2UgYXJlIGZvciBidWlsZGluZyBhIEMgTG9vcCBpbnRlcnByZXRlcjoKKyNkZWZpbmUgT0ZG
TElORV9BU01fQkVHSU4KKyNkZWZpbmUgT0ZGTElORV9BU01fRU5ECisjZGVmaW5lIE9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcGNvZGUpIERFRklORV9PUENPREUob3Bjb2RlKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICBsYWJlbDoKKyNkZWZpbmUgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwobGFiZWwpICAgbGFiZWw6CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRf
Q19MT09QKQorCisvLyBtbGFtIEVORCB0cnkgbW92aW5nIHRvIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwICovCisKICNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNs
dWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYx
LDcgKzYyLDggQEAgcHVibGljOgogCiBjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSgpCiB7Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQp
CisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQogLy8gVGhpcyBpcyBhIGZpbGUgZ2Vu
ZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBj
b250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5k
IGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmluYXRpb24gb2YKIC8vIFBsYXRmb3JtLmgg
bWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBM
TEludE9mZnNldHNFeHRyYWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsOCBAQAogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiUHJv
ZmlsZXIuaCIgLy8gbWxhbQorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiIC8vIG1sYW0KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKQEAgLTcyLDcgKzc0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChl
eGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQogCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08o
Zmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCi0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
Zmlyc3QsIHNlY29uZCk7ICAgICAgICBcCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocmVp
bnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KGZpcnN0KSwgc2Vjb25kKTsgXAogICAgIH0gd2hp
bGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhw
YywgZXhlYykKQEAgLTIzMSw5ICsyMzMsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9h
cml0eUNoZWNrX2ZvCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogewotICAgIGRhdGFM
b2coIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBzY29wZSAlcFxuIiwKKyAgICBkYXRh
TG9nKCIlcCB2cGMgJXA6IGV4ZWN1dGluZyAlcCBiYyMlenUsICVzLCBzY29wZSAlcFxuIiwKICAg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAotICAgICAgICAgICAgZXhlYywKKyAgICAgICAg
ICAgIGV4ZWMsIHBjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAogICAgICAgICAgICAgb3Bj
b2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1sw
XS51Lm9wY29kZSldLAogICAgICAgICAgICAgZXhlYy0+c2NvcGVDaGFpbigpKTsKQEAgLTI2NCw2
ICsyNjYsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQogLy8gUmV0
dXJucyB0cnVlIGlmIHdlIHNob3VsZCB0cnkgdG8gT1NSLgogaW5saW5lIGJvb2wgaml0Q29tcGls
ZUFuZFNldEhldXJpc3RpY3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgY29kZUJsb2NrLT51cGRhdGVBbGxQcmVk
aWN0aW9ucygpOwogICAgIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmSklUVGhyZXNob2xk
UmVhY2hlZCgpKSB7CkBAIC0yOTYsOCArMjk5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVB
bmRTZXRIZXVyaXN0aWNzKEMKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGZhbHNlOworI2Vsc2UgLy8gIUVOQUJMRShKSVQpCisgICAgVU5VU0VEX1BBUkFNKGNv
ZGVCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZiAvLyAhRU5BQkxFKEpJVCkKIH0KIAorI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KIGVudW0g
RW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKIHsKQEAgLTM5
MCw2ICszOTksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQogICAgICAgICBjb2Rl
QmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChyZWdp
c3Rlcl9maWxlX2NoZWNrKQogewpAQCAtNDAzLDYgKzQxMyw5IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2sKICNlbmRpZgogICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0
ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwogICAgIGlmIChV
TkxJS0VMWSghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhl
Yy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkp
KSB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZy
YW1lKGV4ZWMsICIgICAqKiogbWxhbSBsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrOiAiKTsKKyAg
ICAgICAgI2VuZGlmCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5y
ZXR1cm5QQygpOwogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICAgICAg
Z2xvYmFsRGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CkBA
IC02MzcsNiArNjUwLDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tdWwpCiAg
ICAgTExJTlRfQkVHSU4oKTsKICAgICBkb3VibGUgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpOwogICAgIGRvdWJsZSBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYyk7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCJcbiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICBwcmlu
dGYoIiBsbGludCBzbG93X3BhdGhfbXVsICVlICogJWUgPT0+ICVlXG4iLCBhLCBiLCBhKmIpOwor
ICAgIHByaW50ZigiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT1cbiIpOworICAgICNlbmRpZgogICAgIExMSU5UX1JFVFVSTihqc051bWJlcihhICogYikpOwog
fQogCkBAIC03NzgsNyArNzk2LDkgQEAgc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVj
U3RhdGUqIAogICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOwogICAg
IGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOwotICAgIAorCisgICAgLy9zdGF0aWMgaW50IG1s
YW1Db3VudCA9IDA7CisgICAgLy9wcmludGYoIlxuXG4gKioqIFslZF0gc3RydWN0dXJlICVwLCBn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpICVwXG5cbiIsICsrbWxhbUNvdW50LCBzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJl
LCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgCiAgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwpAQCAtNzky
LDcgKzgxMiwxMiBAQCBzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogCiAg
ICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHBjWzRdID0g
c2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgLyogbWxh
bQorICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgaWYgKHJlc3VsdC5pc0ludDMyKCkp
CisgICAgICAgICAgICBwcmludGYoIiAgIG1sYW0gU0xPVyByZXNvbHZlR2xvYmFsIHwgY29kZUJs
b2NrICVwIG9iaiAlcCByZXN1bHQgPSAlZFxuIiwgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIHJl
c3VsdC5hc0ludDMyKCkpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgLy8gbWxhbSAqLwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTg5NywxMCArOTIyLDEwIEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgIHBjWzRd
LnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX2dldF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lKTsKICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTkzMCwxMiArOTU1LDM0IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwotICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisg
ICAgaWYgKHBjWzhdLnUub3BlcmFuZCkgewogICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5w
dXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90
KTsKLSAgICBlbHNlCisgICAgICAgIC8qIG1sYW0KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgICAgIGlmIChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS5pc0ludDMyKCkpIHsKKyAgICAgICAg
ICAgIC8vIHByaW50ZigiICAgbWxhbSBQQVRIXzEgc2xvd19wYXRoX3B1dF9ieV9pZCB8IGNvZGVi
bG9jayAlcCByZXN1bHQgPSAlZFxuIiwgY29kZUJsb2NrLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KS5hc0ludDMyKCkpOworICAgICAgICB9CisgICAgICAgICNlbmRpZgorICAgICAgICAvLyBtbGFt
ICovCisgICAgfSBlbHNlIHsKICAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgICAgICAvKiBtbGFtCisgICAgICAgICNp
ZiBtbGFtX1BSSU5URgorICAgICAgICBpZiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkuaXNJbnQz
MigpKSB7CisgICAgICAgICAgICAvLyBwcmludGYoIiAgIG1sYW0gUEFUSF8yIHNsb3dfcGF0aF9w
dXRfYnlfaWQgfCBvYmogJXAgY29kZWJsb2NrICVwIHJlc3VsdCA9ICVkXG4iLCBiYXNlVmFsdWUu
Z2V0T2JqZWN0KCksIGNvZGVCbG9jaywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkuYXNJbnQzMigp
KTsKKyAgICAgICAgfQorICAgICAgICAjZW5kaWYKKyAgICAgICAgLy8gbWxhbSAqLworICAgIH0K
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAKKyAgICAvKiBtbGFtCisgICAgI2lm
IG1sYW1fUFJJTlRGCisgICAgaWYgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLmlzSW50MzIoKSkg
eworICAgICAgICAvLyBwcmludGYoIiAgIG1sYW0gTk9fRVhDRVBUSU9OIHNsb3dfcGF0aF9wdXRf
YnlfaWQgfCBjb2RlYmxvY2sgJXAgcmVzdWx0ID0gJWRcbiIsIGNvZGVCbG9jaywgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkuYXNJbnQzMigpKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgLy8gbWxh
bSAqLworCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFz
ZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgewpAQCAtOTUz
LDcgKzEwMDAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRl
ZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAogICAgICAgICAgICAgICAgICAg
ICAvLyBiZWxvdyBtYXkgR0MuCi0gICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKIAogICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihleGVjLCBiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtOTczLDI0ICsx
MDIwLDI0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hl
ZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxE
YXRhLmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRhLmlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9v
Zl9saW5lKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAog
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUu
b3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0x
MzA0LDYgKzEzNTEsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNf
CiAKIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiB7CisgICAgLy8gbWxhbSBwcmludGYoIiAgIG1sYW0gU0xPVyBQQVRI
IGhhbmRsZUhvc3RDYWxsIGZwICVwIHBjICVwIGNhbGxlZSAlcCBraW5kICVkIEAgJXM6JWRcbiIs
IGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWUuZ2V0T2JqZWN0KCksIGtpbmQsIF9fRklMRV9fLCBfX0xJ
TkVfXyk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAKQEAg
LTEzNzQsMTkgKzE0MjIsNTMgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwo
RXhlYwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gMDsKLSAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24o
KSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICAvKiBt
bGFtCisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuIG1sYW0gQ0FM
TElORyBIT1NUIEZVTkNUSU9OIEAgJXMgJXM6JWRcbiIsIF9fRlVOQ1RJT05fXywgX19GSUxFX18s
IF9fTElORV9fKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIC8vIG1sYW0gKi8KKyNpZiBFTkFC
TEUoSklUKSAvLyBtbGFtIEZJWE1FCiAgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5l
cmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7Ci0gICAgZWxzZSB7CisjZWxz
ZQorICAgICAgICBjb2RlUHRyID0gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8KKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9j
YWxsX3RyYW1wb2xpbmUpIDoKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisjZW5k
aWYgLy8gbWxhbSBGSVhNRQorICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOwotICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgLyogbWxhbQor
ICAgICAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgICAgICBwcmludGYoIlxuIG1sYW0g
VEhST1cgQCAlcyAlczolZFxuIiwgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOwor
ICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAvLyBtbGFtICovCiAgICAgICAgICAgICBM
TElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7Cisg
ICAgICAgIH0KICAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3Ioa2luZCk7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAg
ICAvKiBtbGFtCisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuIG1s
YW0gQ09NUElMRUQgY29kZUJsb2NrPSAlcCBleGVjdXRhYmxlICVwIEAgJXMgJXM6JWRcbiIsCisg
ICAgICAgICAgICAgICBjb2RlQmxvY2ssIGZ1bmN0aW9uRXhlY3V0YWJsZSwgX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKKyAgICAgICAgLy8gbWxhbSAq
LworI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0gRklYTUUKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSkKICAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworI2Vsc2UgLy8gRU5BQkxFKExM
SU5UX0NfTE9PUCkKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgPworICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSA6CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjayk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIg
PSAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgPworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSA6CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTElu
dENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7CisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICB9CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rSW5m
bykgewpAQCAtMTQwMCw2ICsxNDgyLDEwIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0
VXBDYWxsKEV4ZWMKICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxs
TGlua0luZm8pOwogICAgIH0KICAgICAKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAvL1ZNSW5z
cGVjdG9yOjpkdW1wRnJhbWUoZXhlY0NhbGxlZSwgIiAgPj4+IFBVU0hFRCB0byBuZXcgIiwgcGMs
IF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKwogICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNz
KCkpOwogfQogCkBAIC0xNDI1LDYgKzE1MTEsMTIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlw
ZSBnZW5lcmljQ2FsbChFeAogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbCkK
IHsKKyAgICAvKiBtbGFtCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCJcblxuIG1s
YW0gJiYmJiYmJiYgbGxpbnRfc2xvd19wYXRoX2NhbGwgfCBwYyAlcCBmcmFtZSglcCktPmN1cnJl
bnRWUEMoKSA9ICVwIEAgJXM6JWRcblxuIiwKKyAgICAgICAgICAgcGMsIGV4ZWMsIGV4ZWMtPmN1
cnJlbnRWUEMoKSwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFt
ICovCiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgcmV0dXJuIGdlbmVyaWNDYWxs
KGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7CiB9CkBAIC0xNDY4LDcgKzE1NjAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsCiAgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CiAgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6
OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpKTsKLSAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNl
X2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKGxsaW50X2dl
bmVyaWNfcmV0dXJuX3BvaW50KSk7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwog
ICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkp
OwogICAgIApAQCAtMTUxNCw2ICsxNjA2LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9zdHJjYXQpCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRp
dmUpCiB7CisgICAgLyogbWxhbQorICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9y
OjpkdW1wRnJhbWUoZXhlYywgIiAgID09PSBpbnNwZWN0ICIsIHBjLCBfX0ZVTkNUSU9OX18sIF9f
RklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCisgICAgLy8gbWxhbSAqLwogICAgIExMSU5U
X0JFR0lOKCk7CiAgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJp
bWl0aXZlKGV4ZWMpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjYgKzQzLDMy
IEBAIG5hbWVzcGFjZSBMTEludCB7CiAvLyAnZXh0ZXJuICJDIicpIG5lZWRzIHRvIGJlIFBPRDsg
aGVuY2UgcHV0dGluZyBhbnkgY29uc3RydWN0b3JzIGludG8gaXQgY291bGQgY2F1c2UgZWl0aGVy
IGNvbXBpbGVyCiAvLyB3YXJuaW5ncywgb3Igd29yc2UsIGEgY2hhbmdlIGluIHRoZSBBQkkgdXNl
ZCB0byByZXR1cm4gdGhlc2UgdHlwZXMuCiBzdHJ1Y3QgU2xvd1BhdGhSZXR1cm5UeXBlIHsKLSAg
ICB2b2lkKiBhOwotICAgIHZvaWQqIGI7CisgICAgSW5zdHJ1Y3Rpb24qIGE7CisgICAgRXhlY1N0
YXRlKiBiOwogfTsKIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9p
ZCogYSwgdm9pZCogYikKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KElu
c3RydWN0aW9uKiBhLCBFeGVjU3RhdGUqIGIpCiB7CiAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJl
c3VsdDsKICAgICByZXN1bHQuYSA9IGE7CiAgICAgcmVzdWx0LmIgPSBiOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CisKK2lubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0LCBJbnN0cnVjdGlvbiomIGEsIEV4ZWNTdGF0ZSomIGIpCit7CisgICAgYSA9IHJlc3Vs
dC5hOworICAgIGIgPSByZXN1bHQuYjsKK30KICNlbHNlCiB0eXBlZGVmIGludDY0X3QgU2xvd1Bh
dGhSZXR1cm5UeXBlOwogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2
b2lkKiBhLCB2b2lkKiBiKQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQo
SW5zdHJ1Y3Rpb24qIGEsIEV4ZWNTdGF0ZSogYikKIHsKICAgICB1bmlvbiB7CiAgICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICB2b2lkKiBhOwotICAgICAgICAgICAgdm9pZCogYjsKKyAgICAg
ICAgICAgIEluc3RydWN0aW9uKiBhOworICAgICAgICAgICAgRXhlY1N0YXRlKiBiOwogICAgICAg
ICB9IHBhaXI7CiAgICAgICAgIGludDY0X3QgaTsKICAgICB9IHU7CkBAIC03MCw2ICs3NiwyMCBA
QCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2CiAgICAgdS5wYWlyLmIg
PSBiOwogICAgIHJldHVybiB1Lmk7CiB9CisKK2lubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0LCBJbnN0cnVjdGlvbiomIGEsIEV4ZWNTdGF0ZSomIGIpCit7
CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24q
IGE7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGI7CisgICAgICAgIH0gcGFpcjsKKyAgICAgICAg
aW50NjRfdCBpOworICAgIH0gdTsKKyAgICB1LmkgPSByZXN1bHQ7CisgICAgYSA9IHUucGFpci5h
OworICAgIGIgPSB1LnBhaXIuYjsKK30KICNlbmRpZgogCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50
IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
NiwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorI2lmICFFTkFC
TEUoTExJTlRfQ19MT09QKQorCisvKiAvIG1sYW0gI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApIC8v
IG1sYW0KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBPcGNvZGUqIGxsaW50VGh1bmssIGNvbnN0IGNo
YXIgKnRodW5rS2luZCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsRGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKHRodW5rS2luZCk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50VGh1bmspOworfQorLy8gbWxhbSAjZWxzZSAvLyAhRU5B
QkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbSAqLwogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQg
KCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKICAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CkBAIC00Nyw2ICs1Nyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2Vu
ZXJhdGVUaHUKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBH
TE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKSk7CiB9CisvLyBtbGFtICNlbmRp
ZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQogCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCiB7CkBAIC03OCw2ICs4OSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFt
RW50cnlUaHVua0cKICAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0
YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKTsKIH0KIAorI2VuZGlmIC8vICFF
TkFCTEUoTExJTlRfQ19MT09QKQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjQ2
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODMsMTUgKzgzLDIzIEBAIGNvbnN0IExvd2VzdFRh
ZyA9IERlbGV0ZWRWYWx1ZVRhZwogCiAKICMgVXRpbGl0aWVzCittYWNybyBqdW1wVG9QQygpCisg
ICAgaWYgQ19MT09QCisgICAgICAgIGN4eE5leHRPcGNvZGUKKyAgICBlbHNlCisgICAgICAgIGpt
cCBbUENdICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CisgICAg
ZW5kCitlbmQKKwogbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKLSAgICBhZGRwIGFkdmFuY2UgKiA0
LCBQQwotICAgIGptcCBbUENdCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKKyAgICBqdW1wVG9QQygpCiBlbmQKIAog
bWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQogICAgIGxzaGlmdGkgMiwg
cGNPZmZzZXQKICAgICBhZGRwIHBjT2Zmc2V0LCBQQwotICAgIGptcCBbUENdCisgICAganVtcFRv
UEMoKQogZW5kCiAKIG1hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQpAQCAtMTAwLDIxICsx
MDgsMjUgQEAgbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCiBlbmQKIAogbWFjcm8gZGlz
cGF0Y2hBZnRlckNhbGwoKQotICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XSwgUEMKLSAgICBqbXAgW1BDXQorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50
ZigiXG4gbWxhbSA6OiBQUklOVCBkaXNwYXRjaEFmdGVyQ2FsbCgpIHwgcGMgPSBjZnIuQXJndW1l
bnRDb3VudC5UYWc7XG5cbiIpOworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7IC8vIFJlbG9hZCBhIHBy
ZXZpb3VzbHkgc3Rhc2hlZCByZXR1cm5QQy4KKyAgICBqdW1wVG9QQygpCiBlbmQKIAogbWFjcm8g
Y0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQogICAgIGlmIEFSTXY3Ci0gICAgICAgIG1vdmUg
YXJnMSwgdDAKLSAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzEsIHQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMSA9IC4uLjsKKyAgICAgICAgbW92ZSBhcmcy
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzIgPSAuLi47CisgICAgICAgIGNh
bGwgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb247
CiAgICAgZWxzaWYgWDg2Ci0gICAgICAgIHBva2UgYXJnMSwgMAotICAgICAgICBwb2tlIGFyZzIs
IDEKKyAgICAgICAgcG9rZSBhcmcxLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFy
ZzEgPSAuLi47CisgICAgICAgIHBva2UgYXJnMiwgMSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhcmcyID0gLi4uOworICAgICAgICBjYWxsIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uOworICAgIGVsc2lmIENfTE9PUAorICAgICAgICBj
eHhDYWxsU2xvd1BhdGggZnVuY3Rpb24sIGFyZzEsIGFyZzIgICAgLy8gY2FsbCBDIGZ1bmN0aW9u
KGFyZzEsIGFyZzIpOwogICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKLSAgICBjYWxs
IGZ1bmN0aW9uCiBlbmQKIAogIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91
bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KQEAgLTEyNCwyMSArMTM2LDI0IEBAIG1hY3JvIGND
YWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywKICAgICAgICAgbW92ZSBhcmcyLCB0MQog
ICAgICAgICBtb3ZlIGFyZzMsIHQyCiAgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICAgICAgY2Fs
bCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NgogICAgICAgICBwb2tlIGFyZzEsIDAKICAgICAgICAg
cG9rZSBhcmcyLCAxCiAgICAgICAgIHBva2UgYXJnMywgMgogICAgICAgICBwb2tlIGFyZzQsIDMK
KyAgICAgICAgY2FsbCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBlcnJvcgog
ICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKLSAgICBjYWxsIGZ1bmN0aW9uCiBlbmQK
IAogbWFjcm8gY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGNDYWxsMihzbG93UGF0aCwgY2Zy
LCBQQykKLSAgICBtb3ZlIHQwLCBQQwotICAgIG1vdmUgdDEsIGNmcgorICAgIG1vdmUgdDAsIFBD
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KKyAgICBtb3Zl
IHQxLCBjZnIgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KIGVu
ZAogCiAjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVy
YW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQpAQCAtMTYyLDggKzE3Nyw5
IEBAIGVuZAogCiAjIENhbGwgYSBzbG93UGF0aCBmb3IgY2FsbCBvcGNvZGVzLgogbWFjcm8gY2Fs
bENhbGxTbG93UGF0aChhZHZhbmNlLCBzbG93UGF0aCwgYWN0aW9uKQotICAgIGFkZHAgYWR2YW5j
ZSAqIDQsIFBDLCB0MAotICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwICAgICAgICAgICAgICAgICAgICAvLyBy
ZXR1cm5QQzx0MD4gPSBwYyArIGFkdmFuY2UqNDsKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHJldHVyblBD
PHQwPjsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6
IFBSSU5UIGNhbGxDYWxsU2xvd1BhdGgoKSB8IGNmciAlcCBwYyAlcCB8IHJldHVyblBDPHQwPiA9
IHBjICsgYWR2YW5jZSo0OyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSByZXR1cm5QQzx0MD47XG5c
biIsIGNhbGxGcmFtZSwgclBDLnUudnApOwogICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykK
ICAgICBtb3ZlIHQxLCBjZnIKICAgICBhY3Rpb24odDApCkBAIC0xNzMsMzAgKzE4OSwzMCBAQCBt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVCgKICAg
ICAgICAgMSwKICAgICAgICAgbWFjcm8gKCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHBjOwog
ICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKICAgICAgICAgICAg
IG1vdmUgdDEsIGNmcgogICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKICAgICAgICAgICAg
IGptcCB0MAogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXSwgUEMgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7CiAg
ICAgICAgIGVuZCkKIGVuZAogCiAjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlm
ZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CiAjIGNoYW5nZWQuCiBtYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4LCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCBwYXlsb2FkCi0gICAgam1wIC5kb25lCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgpIGdvdG8gLmNvbnN0YW50OworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5
bG9hZDsKKyAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAu
ZG9uZTsKIC5jb25zdGFudDoKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAotICAg
IGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNl
dFtwYXlsb2FkXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBh
eWxvYWQgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxh
Mj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgICMgVGhlcmUgaXMgYSBiaXQg
b2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRv
ICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgotICAgIGxvYWRwIFRh
Z09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRb
cGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFn
OworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEy
PiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwogLmRvbmU6CiBlbmQKIApA
QCAtMjE1LDM1ICsyMzEsNDAgQEAgZW5kCiAKICMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRo
ZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKLSAgICBiaWd0ZXEgaW5kZXgs
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKLSAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybzogbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgeworICAgIGJpZ3RlcSBpbmRleCwg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5k
ZXg8YTA+XS5QYXlsb2FkOworICAgIGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBnb3RvIC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
YWcKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENvZGVCbG9j
azo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29kZUJsb2NrPGEx
Pi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICAgIyBUaGVyZSBpcyBhIGJpdCBv
ZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LAogICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8g
KHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCi0gICAgbHNoaWZ0aSAz
LCBpbmRleAotICAgIGFkZHAgaW5kZXgsIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFn
XSwgcGF5bG9hZAotICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKyAgICBsc2hpZnRpIDMs
IGluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8
PCAzOworICAgIGFkZHAgaW5kZXgsIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFu
dDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsKKyAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4u
UGF5bG9hZDsKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFn
PGExPiA9IGNvbnN0YW50PGExPi5UYWc7CiAuZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZy4KIGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCi0gICAgYmlndGVx
IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgdGFnQ2hl
Y2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQp
IHsKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3Rh
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICB0YWdD
aGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5U
YWcpOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2Fk
ID0gY2ZyW2luZGV4XS5QYXlsb2FkOworICAgIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHBy
aW50ZigiICAgICAgbWxhbSBBU00gbG9hZCB2YXIgfCBvYmogJXAgY2ZyICVwW2luZGV4ICVsZF1c
biIsIHIwLnUudnAsIGNhbGxGcmFtZSwgcjQudS5pKTsgbWxhbVByaW50PSBmYWxzZTsgfQorICAg
IGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwogLmNv
bnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCi0gICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRd
LCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNv
ZGVCbG9jazxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2Fk
ICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxw
YXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgICMgVGhlcmUgaXMg
YSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVx
dWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgotICAgIHRh
Z0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCi0gICAgbG9hZHAgUGF5bG9hZE9m
ZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRb
cGF5bG9hZCwgaW5kZXgsIDhdKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4
XS5UYWcpOworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXls
b2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXls
b2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwogLmRvbmU6CisgICAg
Ly8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiBl
bmQKIAogIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIElu
ZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKQEAgLTI1MiwxMCArMjczLDE0IEBAIGVuZAogIyBiZSBm
YXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJh
bmNoIG9uIHRoZQogIyB0YWcuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChp
bmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgLy8gbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCiAgICAgICAgIGlu
ZGV4LAotICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVk
VGFnLCBzbG93IGVuZCwKLSAgICAgICAgcGF5bG9hZCkKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRh
ZykKKyAgICAgICAgICAgIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgIC8vICAg
aWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKKyAgICAgICAgZW5kLAor
ICAgICAgICBwYXlsb2FkKSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bSguLi4pOworICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
LgogZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGlu
ZGV4LCBwYXlsb2FkKQpAQCAtMjcxLDggKzI5NiwxMCBAQCBlbmQKIAogbWFjcm8gdmFsdWVQcm9m
aWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKICAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAgICAg
ICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxl
XQotICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXls
b2FkT2Zmc2V0W3Byb2ZpbGVdCisgICAgLy8gbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9h
ZCwgcHJvZmlsZSBpLmUuIG9yYWNsZUNhY2hlSWQpIHsKKyAgICAgICAgc3RvcmVpIHRhZywgVmFs
dWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0gICAgICAgICAgICAvLyAg
IFZhbHVlUHJvZmlsZTo6YnVja2V0c1tvcmFjbGVDYWNoZUlkXS5UYWcgPSB0YWc8YTA+OworICAg
ICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zm
c2V0W3Byb2ZpbGVdICAgIC8vICAgVmFsdWVQcm9maWxlOjpidWNrZXRzW29yYWNsZUNhY2hlSWRd
LlBheWxvYWQgPSBwYXlsb2FkPGExPjsKKyAgICAvLyB9IEVORCB2YWx1ZVByb2ZpbGUuCiAgICAg
ZW5kCiBlbmQKIApAQCAtMjg4LDcgKzMxNSw4IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhk
b25lTGFiZWwsIHNsb3cKICAgICBidGl6IHQwLCAuY29udGludWUKICAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKICAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxG
cmFtZUZvclRocm93W3QxXSwgdDAKLSAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5l
UENGb3JUaHJvd1t0MV0KKyAgICAjIG1sYW0gam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3dbdDFdCisgICAgaW5kaXJlY3RKdW1wKEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFj
aGluZVBDRm9yVGhyb3dbdDFdKQogLmNvbnRpbnVlOgogICAgICMgUmVsb2FkIENvZGVCbG9jayBh
bmQgUEMsIHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIGl0LgogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MQpAQCAtMjk5LDYzMiArMzI3LDk2NiBAQCBlbmQKIAogIyBJbnN0cnVjdGlv
biBpbXBsZW1lbnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisvLyBmdW5jdGlvbjogZm9y
IGVhY2ggaWQgaW4gbG9jYWxzIHsgY2ZyW2lkXSA9IHVuZGVmaW5lZDsgfQorLy8KKy8vICAgSW5p
dGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4gSWYgdGhlIGNvZGUgYmxvY2sg
cmVxdWlyZXMKKy8vICAgYW4gYWN0aXZhdGlvbiwgZW50ZXJfd2l0aF9hY3RpdmF0aW9uIGlzIHVz
ZWQgaW5zdGVhZC4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5p
bmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfZW50ZXI6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAgICAgICAgICAvLyB0MjxD
b2RlQmxvY2s+ID0gY2ZyLkNvZGVCbG9jawotICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJz
W3QyXSwgdDIgICAgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKLSAg
ICBidGl6IHQyLCAub3BFbnRlckRvbmUKLSAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKLSAgICBt
b3ZlIDAsIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8v
IGNvZGVCbG9jazx0Mj4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRpIENvZGVCbG9jazo6bV9u
dW1WYXJzW3QyXSwgdDIgICAgICAvLyBudW1WYXJzPHQyPiA9IGNvZGVCbG9jazx0Mj4ubV9udW1W
YXJzOworICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZSAgICAgICAgICAgICAgICAgICAvLyBpZiAo
bnVtVmFyczx0Mj4gPT0gMCkgZ290byAuZG9uZTsKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAg
ICAgICAgICAgICAgICAgICAgLy8ganNVbmRlZmluZWQ8dDA+ID0gVW5kZWZpbmVkVGFnOworICAg
IG1vdmUgMCwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB6ZXJvPHQxPiA9IDA7
CiAub3BFbnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0MgotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0g
ICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorICAgIHN1YmkgMSwgdDIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIG51bVZhcnM8dDI+LS07CisgICAgc3RvcmVpIHQwLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0gICAgICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5UYWcgPSBqc1VuZGVm
aW5lZDx0MD47CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgIC8v
ICAgY2ZyW251bVZhcnM8dDI+XS5QYXlsb2FkID0gemVybzx0MT47CisgICAgYnRpbnogdDIsIC5v
cEVudGVyTG9vcCAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQyPiAhPSAwKSBnb3Rv
IC5sb29wOwogLm9wRW50ZXJEb25lOgotICAgIGRpc3BhdGNoKDEpCisgICAgZGlzcGF0Y2goMSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisv
LyBieXRlY29kZTogY3JlYXRlX2FjdGl2YXRpb24gZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJb
ZHN0UmVnSWRdID0gbmV3IEFjdGl2YXRpb24oKSBpZiBub3QgYWxyZWFkeSBwcmVzZW50OworLy8K
Ky8vICAgSWYgdGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxmcmFtZSBoYXMgbm90
IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQgd3JpdGVzIGl0IGJh
Y2sgdG8gZHN0LgorCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAgICAgdHJhY2VFeGVj
dXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKLSAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAgICBsb2FkaSA0W1BD
XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFjdGl2YXRpb25SZWc8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRv
bmUgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVnPHQwPl0uVGFnICE9IEVtcHR5VmFsdWVUYWcpIGdv
dG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2
YXRpb24pICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZh
dGlvbjsKIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlz
cGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGluaXRfbGF6
eV9yZWcgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gSlNWYWx1ZSgpOwor
Ly8KKy8vICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8vICAgVGhpcyBvcGNv
ZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgogCiBfbGxp
bnRfb3BfaW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQ
Q10sIHQwCi0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQot
ICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikK
KyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgc3Rv
cmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjZnJbZHN0PHQwPl0uVGFnID0gRW1wdHlWYWx1ZVRhZzsKKyAgICBzdG9yZWkg
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmcltkc3Q8dDA+XS5QYXlsb2FkID0gMDsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FyZ3VtZW50cyBkc3RSZWdJ
ZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBuZXcgQXJndW1lbnRzKCkgaWYgbm90IGFs
cmVhZHkgcHJlc2VudDsKKy8vCisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVudHMnIG9iamVjdCBh
bmQgcGxhY2VzIGl0IGluIGJvdGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNhbGwgZnJhbWUgc2xv
dCBhbmQgdGhlIGxvY2FsICdhcmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBpZiBpdCBoYXMgbm90
IGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4KKwogX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9u
ZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCisg
ICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRz
RG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XS5UYWcgIT0gRW1wdHlWYWx1ZVRhZykgZ290byAuZG9u
ZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKSAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHM7CiAu
b3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG9wX2NyZWF0ZV90aGlzIHRo
aXNSZWdJZAorLy8gZnVuY3Rpb246IGNmclt0aGlzUmVnSWRdID0gbmV3IE9iamVjdChjdXJyZW50
IFByb3RvPyk7CisvLyBtbGFtIEZJWE1FOiBIb3cgZG9lcyB0aGUgY2FjaGVkSW5oZXJpdG9yIGdl
dCBwb3B1bGF0ZWQ/CisvLyAgICAgICBDbGFzc2ljIHNwZWNpZmllcyBhIDJuZCBvcGVyYW5kIHBy
b3RvKHIpLCBidXQgb3VyIGRpc3BhdGNoIGJlbG93IGlnbm9yZXMgaXQuCisvLworLy8gICBBbGxv
Y2F0ZSBhbiBvYmplY3QgYXMgJ3RoaXMnLCBmb3IgdXNlIGluIGNvbnN0cnVjdGlvbi4KKy8vICAg
VGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29k
ZSBibG9jay4KIAogX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hl
ZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAg
IGxvYWRwIENhbGxlZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnIuQ2FsbGVlOworICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgLy8g
aW5oZXJpdG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOworICAgIGJ0cHogdDIs
IC5vcENyZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWYgKGluaGVyaXRvciA9PSAwKSBnb3RvIC5zbG93OworICAgIC8vIGFsbG9jYXRlQmFz
aWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNG
aW5hbE9iamVjdENsYXNzSW5mbywgaW5oZXJpdG9yPHQyPiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRl
VGhpc1Nsb3cpOwogICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNs
YXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0
MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhp
c0lEPHQxPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbdGhp
c0lEPHQxPl0uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmclt0aGlzSUQ8dDE+
XS5QYXlsb2FkID0gdGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
IHNsb3dfcGF0aF9jcmVhdGVfdGhpczsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogCisvLyBieXRlY29kZTogY29udmVydF90aGlzIHRoaXNSZWdJZCBvcmFjbGVDYWNo
ZUlkCisvLyBmdW5jdGlvbjogY2ZyW3RoaXNSZWdJZF0gPSBDb252ZXJ0VG9UaGlzKGNmclt0aGlz
UmVnSWRdKTsKKy8vCisvLyAgIFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3RoaXMnIHJlZ2lzdGVy
LCBjb252ZXJ0cyBpdCB0byBhCisvLyAgIHZhbHVlIHRoYXQgaXMgc3VpdGFibGUgZm9yIHVzZSBh
cyB0aGUgJ3RoaXMnIHZhbHVlLCBhbmQKKy8vICAgc3RvcmVzIGl0IGluIHRoZSAndGhpcycgcmVn
aXN0ZXIuIFRoaXMgb3Bjb2RlIGlzIGVtaXR0ZWQKKy8vICAgdG8gYXZvaWQgZG9pbmcgdGhlIGNv
bnZlcnNpb24gaW4gdGhlIGNhbGxlciB1bm5lY2Vzc2FyaWx5LgorLy8KKy8vICAgVGhpcyBvcGNv
ZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZQorLy8gICBi
bG9jay4KKwogX2xsaW50X29wX2NvbnZlcnRfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxs
VGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwg
Lm9wQ29udmVydFRoaXNTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxl
KENlbGxUYWcsIHQwLCB0MSkKLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDRbUENdLCB0MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhp
c0lEPHQwPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgICAgICAgICAvLyBpZiAoY2Zy
W3RoaXNJRDx0MD5dLlRhZyAhPSBDZWxsVGFnKSBnb3RvIC5zbG93OworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpczx0MD4gPSBjZnJbdGhpc0lEPHQwPl0uUGF5bG9hZDsKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHN0cnVjdHVyZTx0MD4gPSB0aGlzPHQwPi5zdHJ1Y3R1cmU7CisgICAgYmJiIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0
VGhpc1Nsb3cgICAgLy8gaWYgKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlwZSA8IE9iamVjdFR5
cGUpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJZDx0MT4gPSBvcGVyYW5k
c1tvcmFjbGVDYWNoZUlkXTsKKyAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywgdDAsIHQxKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlUHJvZmlsZShDZWxsVGFn
LCBzdHJ1Y3R1cmU8dDA+LCBvcmFjbGVJZDx0MT4pOworICAgIGRpc3BhdGNoKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogCiAub3BDb252ZXJ0VGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfY29udmVydF90aGlzKQotICAgIGRpc3BhdGNoKDMpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKSAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jb252ZXJ0X3RoaXM7CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5ld19vYmplY3QgZHN0UmVnSWQK
Ky8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IE9iamVjdCgpOworLy8KKy8vICAgQ29u
c3RydWN0cyBhIG5ldyBlbXB0eSBPYmplY3QgaW5zdGFuY2UgdXNpbmcgdGhlIG9yaWdpbmFsCisv
LyAgIGNvbnN0cnVjdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KKwog
X2xsaW50X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBd
LCB0MAotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MCAgICAgICAgICAgICAgICAgLy8gZ2xvYmFs
T2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTR2xv
YmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEgICAgLy8gZW1wdHlTdHJ1
Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5lbXB0eU9iamVjdFN0cnVjdHVyZTsKKyAgICAv
LyBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0ds
b2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIGVtcHR5U3RydWN0dXJlPHQxPiwgdDAs
IHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdyk7CiAgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpT
RmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKLSAgICBsb2FkaSA0W1BD
XSwgdDEKLSAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlRh
ZyA9IENlbGxUYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0gYWxsb2NhdGVkT2Jq
ZWN0PHQwPjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmV3T2JqZWN0U2xvdzoK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KQotICAgIGRpc3Bh
dGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X29iamVjdCkgICAg
ICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXdfb2JqZWN0OworICAgIGRpc3BhdGNoKDIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBtb3YgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY1JlZ0lkXTsKKy8vCisvLyAgIENvcGllcyBy
ZWdpc3RlciBzcmMgdG8gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfbW92OgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRd
OworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDEsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHZhbHVlPHQyLCB0Mz4pOworICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2Rz
dElkPHQwPl0uVGFnID0gc3JjVGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlBheWxvYWQg
PSBzcmNQYXlsb2FkPHQzPjsKKyAgICAjIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50
ZigiICAgbWxhbSBvcF9tb3YgfCBwYXlsb2FkPHQzPiA9ICVsZFxuIiwgcjQudS5pKTsKKyAgICBk
aXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogbm90IGRzdFJlZ0lkIHNyY1Jl
Z0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3JjcmVnSWRdOworLy8KKy8v
ICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0ZXIgc3JjIChjb252ZXJ0ZWQgdG8KKy8v
ICAgYm9vbGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxp
bnRfb3Bfbm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAg
ICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMp
Ci0gICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKLSAgICB4b3JpIDEsIHQzCi0g
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0g
b3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAgICAgICAgICAgICAg
ICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MD4gPT4gdGFnPHQyPiwgcGF5
bG9hZDx0Mz4pOworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93ICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gIT0gQm9vbGVhblRhZykgZ290byAuc2xvdzsK
KyAgICB4b3JpIDEsIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBheWxvYWQ8dDM+ID0gIXBheWxvYWQ8dDM+OworICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdHhzSWQ8dDE+
XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IHBheWxvYWQ8
dDM+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BOb3RTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fs
bCBzbG93X3BhdGhfbm90OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVj
b2RlOiBlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2Rz
dHJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSA9PSBjZnJbc3JjMlJlZ0lkXSk7CisvLworLy8gICBD
aGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBlcXVhbCwK
Ky8vICAgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPT0nIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUg
cmVzdWx0CisvLyAgIGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9l
cToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgMTJbUENdLCB0MgotICAgIGxvYWRp
IDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQotICAgIGJpbmVxIHQyLCB0Mywg
Lm9wRXFTbG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93Ci0gICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcEVxU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MgotICAgIGNpZXEgdDAsIHQx
LCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAg
IGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0g
b3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklk
PHQyPiA9PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHNyYzFJZDx0MD4gPT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CisgICAgYmlu
ZXEgdDIsIHQzLCAub3BFcVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4pIGdvdG8gLnNsb3c7CisgICAgYmllcSB0MiwgQ2VsbFRh
ZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4g
PT0gQ2VsbFRhZykgZ290byAuc2xvdzsKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPCBM
b3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJ
ZF07CisgICAgY2llcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByZXN1bHQ8dDA+ID0gKHBheWxvYWQyPHQxPiA9PSBwYXlsb2FkMTx0MD4pOwor
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0
Mj5dLlBheWxvYWQgPSBwYXlsb2FkMTx0MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IC5vcEVxU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9lcSkKLSAgICBk
aXNwYXRjaCg0KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2VxKSAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfZXE7CisgICAgZGlzcGF0Y2goNCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGVxX251bGwgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0cmVnSWRdID0gKGNmcltzcmNSZWdJZF0gPT0gbnVsbCk7CisvLworLy8g
ICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMgaXMgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNj
cmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVh
biBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9lcV9udWxsOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMKLSAgICBhc3Nl
cnROb3RDb25zdGFudCh0MCkKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0g
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxCi0gICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCi0gICAgam1wIC5vcEVxTnVsbE5vdElt
bWVkaWF0ZQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRp
IDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0Tm90Q29uc3RhbnQoc3Jj
SWQ8dDA+KTsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRhZzx0MT4gPSBjZnJbc3JjSWQ8dDA+XS5UYWc7CisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAgICAgICAgICAgICAgICAgICAgICAvLyBwYXls
b2FkPHQwPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcEVxTnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQxPiAhPSBD
ZWxsVGFnKSBnb3RvIC5pbW1lZGlhdGU7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0
MD4uc3RydWN0dXJlOworICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MSAvLyByZXN1bHQ8dDE+ID0g
KChzdHJ1Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWcgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSAh
PSAwKTsKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gLm5vdEltbWVkaWF0ZTsKIC5vcEVxTnVsbEltbWVkaWF0ZToKLSAg
ICBjaWVxIHQxLCBOdWxsVGFnLCB0MgotICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKLSAg
ICBvcmkgdDIsIHQxCisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpc051bGw8dDI+ID0gKHRhZzx0MT4gPT0gTnVsbHRhZyk7Cisg
ICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiA9PSBVbmRlZmluZWRUYWcpOworICAgIG9y
aSB0MiwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cmVzdWx0PHQxPiA9IGlzTnVsbDx0Mj4gfCBpc1VuZGVmaW5lZDx0MT47CiAub3BFcU51bGxOb3RJ
bW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQot
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMp
CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAg
ICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IAorLy8gYnl0ZWNvZGU6IG5lcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5j
dGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPSBjZnJbc3JjMlJlZ0lkXSk7
CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMy
IGFyZSBub3QKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJyE9JyBvcGVyYXRv
ciwgYW5kIHB1dHMgdGhlCisvLyAgIHJlc3VsdCBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0
LgorCiBfbGxpbnRfb3BfbmVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSAxMltQ
Q10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCi0g
ICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVx
U2xvdwotICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93Ci0gICAgbG9hZGkgNFtQQ10s
IHQyCi0gICAgY2luZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
LSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07
CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7Cisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAgICAgICAgICAg
ICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwg
cGF5bG9hZDE8dDA+KTsKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSB0YWcyPHQzPikgZ290byAuc2xv
dzsKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlmICh0YWcxPHQyPiA9PSBDZWxsdGFnKSBnb3RvIC5zbG93OworICAgIGJpYiB0
MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KCh1bnNpZ25lZCl0YWcxPHQyPiA8IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSA0
W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElk
PHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBjaW5lcSB0MCwgdDEsIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MD4gPSAocGF5bG9hZDE8
dDA+ICE9IHBheWxvYWQyPHQxPik7CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFu
VGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHJlc3VsdDx0MD47CisgICAgZGlz
cGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcE5lcVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfbmVxKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfbmVxKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9u
ZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICAgCiAKKy8vIGJ5dGVjb2RlOiBuZXFf
bnVsbCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2Zy
W3NyY1JlZ0lkXSAhPSBudWxsKTsKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNy
YyBpcyBub3QgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9y
LCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9s
bGludF9vcF9uZXFfbnVsbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10s
IHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCi0gICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCi0gICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlh
dGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKLSAgICB0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCB0MQotICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisgICAgbG9hZGkgOFtQ
Q10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0
MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mz4gPSBvcGVyYW5kc1tkc3RS
ZWdJZF07CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhc3NlcnROb3RDb25zdGFudChzcmNJZDx0MD4pOworICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQx
PiA9IGNmcltzcmNJZDx0MD5dLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MCAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDA+ID0gY2ZyW3NyY0lkPHQw
Pl0uUGF5bG9hZDsKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZSAg
ICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IENlbGxUYWcpIGdvdG8gLmltbWVkaWF0
ZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQwPi5zdHJ1Y3R1cmU7CisgICAgdGJ6
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgdDEgLy8gcmVzdWx0PHQxPiA9ICgoc3RydWN0dXJlPHQxPi50eXBlSW5m
by5mbGFncyAmIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpID09IDApOworICAgIGptcCAub3BOZXFO
dWxsTm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byAubm90
SW1tZWRpYXRlOwogLm9wTmVxTnVsbEltbWVkaWF0ZToKLSAgICBjaW5lcSB0MSwgTnVsbFRhZywg
dDIKLSAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQotICAgIGFuZGkgdDIsIHQxCisgICAg
Y2luZXEgdDEsIE51bGxUYWcsIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpc05vdE51bGw8dDI+ID0gKHRhZzx0MT4gIT0gTnVsbFRhZyk7CisgICAgY2luZXEgdDEsIFVu
ZGVmaW5lZFRhZywgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc05vdFVuZGVm
aW5lZDx0MT4gPSAodGFnPHQxPiAhPSBVbmRlZmluZWRUYWcpOworICAgIGFuZGkgdDIsIHQxICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9
IChpc05vdE51bGw8dDI+ICYgaXNOb3RVbmRlZmluZWQ8dDE+KTsKIC5vcE5lcU51bGxOb3RJbW1l
ZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAg
ICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQz
Pl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAog
bWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxvYWRpIDEy
W1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkK
LSAgICBiaW5lcSB0MiwgdDMsIC5zbG93Ci0gICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0g
ICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKLSAg
ICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3Ry
aW5nVHlwZSwgLm5vdFN0cmluZwotICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93CisgICAgbG9hZGkgMTJbUENdLCB0
MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0g
b3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVn
SWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkgICAgICAgICAgICAg
ICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcyPHQz
PiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJ
ZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIGJpbmVxIHQyLCB0MywgLnNs
b3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9
IHRhZzI8dDM+KSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+IDwgTG93ZXN0VGFnKSBn
b3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IENlbGxUYWcpIGdvdG8gLm5vdFN0cmlu
ZzsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHN0cnVjdHVyZTE8dDI+ID0gcGF5bG9hZDE8dDA+LnN0cnVjdHVyZTsKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMgICAgICAgICAgICAgICAgICAgICAgIC8v
IHN0cnVjdHVyZTI8dDM+ID0gcGF5bG9hZDI8dDE+LnN0cnVjdHVyZTsKKyAgICBiYm5lcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5v
dFN0cmluZyAgLy8gaWYgKHN0cnVjdHVyZTE8dDI+LnR5cGVJbmZvLnR5cGUgIT0gU3RyaW5nVHlw
ZSkgZ290byAubm90U3RyaW5nOworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93ICAgICAgICAvLyBpZiAoc3RydWN0
dXJlMjx0Mz4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKSBnb3RvIC5zbG93OwogLm5vdFN0
cmluZzoKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEs
IHQwKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAg
IGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGVxdWFsaXR5T3BlcmF0aW9u
KHQwLCB0MSwgdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IHBh
eWxvYWQxPHQwPiBDT01QQVJBVE9SIHBheWxvYWQyPHQxPjsKKyAgICBzdG9yZWkgQm9vbGVhblRh
ZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5d
LlRhZyA9IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0
PHQwPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQ
YXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQYXRoPGExPjsK
KyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIGVuZAogCisvLyBieXRlY29kZTogc3RyaWN0ZXEg
ZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0g
PSAoY2ZyW3NyYzFSZWdkXSA9PT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdo
ZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgc3RyaWN0bHkKKy8vICAg
ZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz09PScgb3BlcmF0b3IsIGFuZCBwdXRzIHRo
ZQorLy8gICByZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29w
X3N0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAvLyBzdHJpY3RFcShtYWNybyAo
bGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1Bh
dGg8X2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcT4pOworICAgIC8vIENPTVBBUkFUT1IgPSAiPT0i
CiAgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmln
aHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNv
ZGU6IG5zdHJpY3RlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjog
Y2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPT0gY2ZyW3NyYzJSZWdJZF0pOworLy8K
Ky8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUg
bm90CisvLyAgIHN0cmljdGx5IGVxdWFsLCBhcyB3aXRoIHRoZSBFQ01BU2NyaXB0ICchPT0nIG9w
ZXJhdG9yLCBhbmQKKy8vICAgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3Rl
ciBkc3QuCisKIF9sbGludF9vcF9uc3RyaWN0ZXE6CiAgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IC8vIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdo
dCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXE+KTsKKyAg
ICAvLyBDT01QQVJBVE9SID0gIiE9IgogICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwg
cmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3dfcGF0aF9u
c3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IHByZV9pbmMgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0
aW9uOiBjZnJbc3JjRHN0cmVnSWRdID0gKytjZnJbc3JjRHN0cmVnSWRdOworLy8KKy8vICAgQ29u
dmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlciwgYWRkcyBvbmUsIGFuZCBwdXRzIHRoZSBy
ZXN1bHQKKy8vICAgYmFjayBpbiByZWdpc3RlciBzcmNEc3QuCisKIF9sbGludF9vcF9wcmVfaW5j
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93Ci0gICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUlu
Y1Nsb3cKLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNw
YXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHJlZ0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93ICAg
ICAgICAvLyBpZiAoY2ZyW3JlZ0lkPHQwPl0uVGFnICE9IEludDMyVGFnKSBnb3RvIC5zbG93Owor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJlc3VsdDx0MT4gPSBjZnJbcmVnSWQ8dDA+XS5QYXlsb2FkOworICAgIGJhZGRp
byAxLCB0MSwgLm9wUHJlSW5jU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmICgrK3Jlc3VsdDx0MT4gb3Zlcmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3Jl
Z0lkPHQwPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAub3BQcmVJbmNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X3ByZV9pbmMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9wcmVfaW5jKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9wcmVf
aW5jOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogcHJl
X2RlYyBzcmNEc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltzcmNEc3RSZWdJZF0gPSAtLWNmcltz
cmNEc3RSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmNEc3QgdG8gbnVtYmVy
LCBzdWJ0cmFjdHMgb25lLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGJhY2sgaW4gcmVnaXN0
ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcHJlX2RlYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUHJlRGVjU2xvdwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCi0gICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93Ci0gICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwg
dDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdJZDx0
MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdyAgICAgICAgLy8gaWYgKGNmcltyZWdJZDx0MD5d
LlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDE+ID0gY2Zy
W3JlZ0lkPHQwPl0uUGF5bG9hZDsKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1yZXN1bHQ8dDE+IG92ZXJsb3dz
KSBnb3RvIC5zbG93OworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltyZWdJZDx0MD5dLlBheWxvYWQgPSByZXN1bHQ8
dDE+OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUHJlRGVjU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQotICAgIGRpc3BhdGNoKDIp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfcHJlX2RlYzsKKyAgICBkaXNwYXRjaCgyKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IHBvc3RfaW5jIGRzdFJlZ0lkIHNyY0RzdFJlZ0lk
CisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmNEc3RSZWdJZF0rKzsKKy8vCisv
LyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBudW1iZXIgaXRzZWxm
IGlzCisvLyAgIHdyaXR0ZW4gdG8gcmVnaXN0ZXIgZHN0LCBhbmQgdGhlIG51bWJlciBwbHVzIG9u
ZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0LgorCiBfbGxpbnRfb3Bf
cG9zdF9pbmM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAotICAg
IGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJU
YWcsIC5vcFBvc3RJbmNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCi0gICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBtb3ZlIHQyLCB0MwotICAg
IGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDhb
UENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNy
Y0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBv
cGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUG9zdEluY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJ
bnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQx
PikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0MD5d
LlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAg
ICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoKytuZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7CisgICAg
c3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltzcmNJZDx0MD5d
LlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3RJbmNEb25lOgotICAgIGRpc3BhdGNo
KDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0SW5jU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2luYykKLSAgICBkaXNwYXRjaCgz
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfaW5jKSAgICAgICAgICAg
ICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfaW5jOworICAgIGRpc3BhdGNoKDMpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogcG9zdF9kZWMgZHN0UmVnSWQgc3JjRHN0UmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY0RzdFJlZ0lkXS0tOworLy8K
Ky8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlci4gVGhlIG51bWJlciBpdHNl
bGYgaXMKKy8vICAgd3JpdHRlbiB0byByZWdpc3RlciBkc3QsIGFuZCB0aGUgbnVtYmVyIG1pbnVz
IG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRf
b3BfcG9zdF9kZWM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MAot
ICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcFBvc3REZWNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCi0g
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBtb3ZlIHQyLCB0Mwot
ICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRp
IDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4g
PSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJ
bnQzMlRhZywgLm9wUG9zdERlY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAh
PSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElk
PHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0
MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsK
KyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAoLS1uZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7Cisg
ICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAg
ICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2Rz
dElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltzcmNJZDx0
MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3REZWNEb25lOgotICAgIGRpc3Bh
dGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0RGVjU2xvdzoK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2RlYykKLSAgICBkaXNwYXRj
aCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVjKSAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfZGVjOworICAgIGRpc3BhdGNoKDMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogdG9fanNudW1iZXIgZHN0UmVnSWQgc3Jj
UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gTnVtYmVyKGNmcltkc3RSZWdJZF0p
OworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjIHRvIG51bWJlciwgYW5kIHB1dHMgdGhl
IHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF90b19qc251bWJlcjoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQ
Q10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQotICAgIGJpZXEg
dDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKLSAgICBiaWFlcSB0MiwgRW1wdHlWYWx1
ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tz
cmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+ID09PiB0YWc8dDI+LCBwYXls
b2FkPHQzPik7CisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludCAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gPT0gSW50MzJUYWcpIGdvdG8gLmlzSW50
OworICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdyAgICAgICAg
ICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQyPiA+PSBFbXB0eVZhbHVlVGFnKSBnb3Rv
IC5zbG93OwogLm9wVG9Kc251bWJlcklzSW50OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCi0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAg
ZGlzcGF0Y2goMykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBwYXlsb2FkPHQzPjsKKyAgICBkaXNwYXRj
aCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFRvSnNudW1iZXJTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3RvX2pzbnVtYmVyKQotICAgIGRpc3BhdGNoKDMpCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIpICAgICAgICAgICAgICAgICAg
Ly8gY2FsbCBzbG93X3BhdGhfdG9fanNudW1iZXI7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBuZWdhdGUgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0
aW9uOiBjZnJbZHN0UmVnSWRdID0gLWNmcltzcmNSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyBy
ZWdpc3RlciBzcmMgdG8gbnVtYmVyLCBuZWdhdGVzIGl0LCBhbmQgcHV0cyB0aGUKKy8vICAgcmVz
dWx0IGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX25lZ2F0ZToKICAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQxLCBJbnQzMlRhZywg
Lm9wTmVnYXRlU3JjTm90SW50Ci0gICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xv
dwotICAgIG5lZ2kgdDIKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNo
KDMpCisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRp
IDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGRzdElkPHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQwLCB0MSwgdDIpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNyY0lkPHQwPiA9PT4gdGFnPHQxPiwgcGF5bG9hZDx0Mj4pOworICAgIGJpbmVx
IHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50ICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmICh0YWc8dDE+ICE9IEludDMyVGFnKSBnb3RvIC5zcmNOb3RJbnQ7CisgICAgYnRpeiB0Miwg
MHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KChwYXlsb2FkPHQyPiAmIDB4N2ZmZmZmZmYpID09IDApIGdvdG8gLnNsb3c7IC8vIGlmIChpcyAw
IG9yIElOVF9NSU4pIC4uLgorICAgIG5lZ2kgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDI+ID0gLXBheWxvYWQ8dDI+Owor
ICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEludDMyVGFnOworICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltk
c3RJZDx0Mz5dLlBheWxvYWQgPSBwYXlsb2FkPHQyPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiAub3BOZWdhdGVTcmNOb3RJbnQ6Ci0gICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5l
Z2F0ZVNsb3cKLSAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
LSAgICBkaXNwYXRjaCgzKQorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQxPiA+IExvd2Vz
dFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBXZSBoYXZlIGFuIHVuYm94ZWQgZG91YmxlLCBqdXN0
IGludmVydCBpdHMgc2lnbiBiaXQ6CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGlnaFdvcmQ8dGFnPHQxPj4uc2lnbkJp
dCA9ICFoaWdoV29yZDx0YWc8dDE+Pi5zaWduQml0OworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5d
LlRhZyA9IHRhZzx0MT47CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHBheWxv
YWQ8dDI+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmVnYXRlU2xvdzoK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCi0gICAgZGlzcGF0Y2go
MykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZWdhdGU7CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlv
bkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxvYWRpIDEyW1BDXSwg
dDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBi
aW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKLSAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5v
cDJOb3RJbnQKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3Rv
cmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQotICAgIGRpc3BhdGNoKDUpCisgICAgLy8gbWFjcm8g
YmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJh
dGlvbiwgc2xvd1BhdGgpIHsKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJl
Z0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0Mj4gPT0+IHRhZzI8dDM+LCBwYXls
b2FkMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApICAg
ICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0
MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIG1sYW1EbyAvLyBwcmludGYoIiBt
bGFtIEJJTiBPUCBzdGVwIDFcbiIpOworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdElu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSBJbnQzMlRh
ZykgZ290byAub3AxTm90SW50OworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJbnQzMlRhZykg
Z290byAub3AyTm90SW50OworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVw
IDIgfCB0MSAlbGQsIHQwICVsZFxuIiwgcjEudS5pLCByMC51LmkpOworICAgIC8vIG9wMSBhbmQg
b3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBlbmQuCisgICAgbG9h
ZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGludGVnZXJPcGVyYXRpb25B
bmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpICAgICAgICAgICAgIC8vIGludGVnZXJPcGVy
YXRpb25BbmRTdG9yZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0MD4sIC5zbG93
LCB0Mik7CisgICAgIyBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiBtbGFtIEJJ
TiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4iLCByMC51LmkpOworICAgIG1sYW1EbyAvLyBw
cmludGYoIiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4iLCByMC51LmkpOwor
ICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wMU5vdEludDoKLSAgICAjIEZpcnN0
IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291
bGQgYmUgYW55dGhpbmcuCi0gICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgYmliIHQz
LCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKLSAgICBiaW5lcSB0MywgSW50MzJUYWcs
IC5zbG93Ci0gICAgY2kyZCB0MSwgZnQxCi0gICAgam1wIC5vcDFOb3RJbnRSZWFkeQorICAgIG1s
YW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDNcbiIpOworICAgIC8vIEZpcnN0IG9w
ZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQg
YmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA+IExvd2VzdFRh
ZykgZ290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMg
Pz8/OiBjaGVjayBvcDIuCisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA8IExvd2Vz
dFRhZykgZ290byAub3AxTm90SW50T3AyRG91YmxlOworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
LnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghdGFnMjx0Mz4g
IT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJs
ZSwgb3AyIGlzIGludDMyOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAgY2kyZCB0MSwgZnQx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJs
PGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+KTsKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIC5vcDFOb3RJbnRS
ZWFkeTsKIC5vcDFOb3RJbnRPcDJEb3VibGU6Ci0gICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA0XG4iKTsKKyAgICAvLyBvcDEgaXMg
aW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50LWVuY29kZWQtZG91YmxlOiBjb252ZXJ0IG9w
MiB0byBkb3VibGUuCisgICAgZmlpMmQgdDEsIHQzLCBmdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+
LCB0YWcyPHQzPik7CiAub3AxTm90SW50UmVhZHk6Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAg
ZmlpMmQgdDAsIHQyLCBmdDAKLSAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCi0gICAgc3Rv
cmVkIGZ0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goNSkKKyAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA1XG4iKTsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQt
ZG91YmxlLCBvcDIgaXMgZG91YmxlOgorICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2Rz
dFJlZ0lkXTsKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERvdWJsZShwYXlsb2FkMTx0MD4sIHRh
ZzE8dDI+KTsKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJE
Ymw8ZnQxPiwgb3AxRGJsPGZ0MD4pOworICAgICMgbWxhbSBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJ
TlRGKSBwcmludGYoIiBtbGFtIEJJTiBPUCBkb3VibGUgfCByZXN1bHQ8ZnQwPiA9ICVlXG4iLCBk
MC51LmQpOworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBkb3VibGUgfCByZXN1
bHQ8ZnQwPiA9ICVlXG4iLCBkMC51LmQpOworICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLkRvdWJs
ZSA9IHJlc3VsdERibDxmdDA+OworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9w
Mk5vdEludDoKLSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBz
ZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAg
ICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKLSAgICBjaTJkIHQwLCBmdDAKLSAgICBmaWkyZCB0
MSwgdDMsIGZ0MQotICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBzdG9yZWQgZnQw
LCBbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBt
bGFtIEJJTiBPUCBzdGVwIDZcbiIpOworICAgIC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVs
eSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2Fk
aSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmlhIHQzLCBMb3dlc3RUYWcs
IC5zbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25l
ZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50MzIs
IG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6CisgICAgY2kyZCB0MCwgZnQwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJsPGZ0MD4gPSBEb3Vi
bGUocGF5bG9hZDE8dDA+KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmaWkyZCB0MSwg
dDMsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDJE
Ymw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKKyAgICBkb3VibGVPcGVy
YXRpb24oZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1
bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOwor
ICAgICMgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgbWxhbSBCSU4gT1AgZG91
YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAudS5kKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRm
KCIgbWxhbSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAudS5kKTsKKyAg
ICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5Eb3VibGUgPSByZXN1bHREYmw8ZnQwPjsKKyAgICBkaXNw
YXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNhbGxTbG93UGF0aChzbG93UGF0
aCkKLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBz
dGVwIDdcbiIpOworICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvdyBwYXRoOworICAgIGRpc3BhdGNoKDUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKKyAgICAvLyB9IEVORCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlLiAKIGVu
ZAogCiBtYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIHNs
b3dQYXRoKQorICAgIC8vIG1hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9w
ZXJhdGlvbiwgc2xvd1BhdGgpIHsKICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAogICAgICAgICBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKLSAgICAgICAgICAgIGlu
dGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCi0gICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICAvLyBtYWNybyAoaW50
MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAgICAgaW50ZWdlck9w
ZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykgICAgICAgICAgICAgICAgIC8vICAgaW50ZWdlck9w
ZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdyk7CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAgICAgLy8gICBjZnJbaW5kZXhdLlRhZyA9
IGludDMyVGFnOworICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdICAgICAgICAgIC8vICAgY2ZyW2luZGV4XS5QYXlsb2FkID0gcmlnaHQ7CisgICAg
ICAgICAgICAjIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHByaW50ZigiICAgICAgICBtbGFt
IEFTTSBBREQgfCBjZnIgJXBbaW5kZXggJWxkXSA9IHJlc3VsdCAlbGQgfCBjZnJbMV08JXA+ID0g
JXBcbiIsIGNhbGxGcmFtZSwgcjIudS5pLCByMC51LmksIENBU1Q8dm9pZCAqPihmcC51Lmk4cCAr
ICgxIDw8IDMpICsgMCksICpDQVNUPHZvaWQgKio+KGZwLnUuaThwICsgKDEgPDwgMykgKyAwKSk7
IG1sYW1QcmludCA9IGZhbHNlOyB9CisgICAgICAgICAgICBtbGFtRG8gLy8geyBwcmludGYoIiAg
ICAgICAgbWxhbSBBU00gQUREIHwgY2ZyICVwW2luZGV4ICVsZF0gPSByZXN1bHQgJWxkIHwgY2Zy
WzFdPCVwPiA9ICVwXG4iLCBjYWxsRnJhbWUsIHIyLnUuaSwgcjAudS5pLCBDQVNUPHZvaWQgKj4o
ZnAudS5pOHAgKyAoMSA8PCAzKSArIDApLCAqQ0FTVDx2b2lkICoqPihmcC51Lmk4cCArICgxIDw8
IDMpICsgMCkpOyBtbGFtUHJpbnQgPSBmYWxzZTsgfQorICAgICAgICAgICAgLy8gfSBFTkQgbWFj
cm8uCiAgICAgICAgIGVuZCwKLSAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkKKyAg
ICAgICAgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkgLy8gICBiaW5hcnlPcEN1c3RvbVN0b3Jl
KCk7CisgICAgLy8gfSBFTkQgbWFjcm8gYmluYXJ5T3AuCiBlbmQKIAorLy8gYnl0ZWNvZGU6IGFk
ZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lk
XSA9IGNmcltzcmMyUmVnSWRdICsgY2ZyW3NyYzFSZWdJZF07CisvLworLy8gICBBZGRzIHJlZ2lz
dGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNyYzIsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgaW4g
cmVnaXN0ZXIgZHN0LiAoSlMgYWRkIG1heSBiZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBvcgorLy8g
ICBudW1lcmljIGFkZCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlcyBvZiB0aGUgb3BlcmFuZHMuKQor
CiBfbGxpbnRfb3BfYWRkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBtbGFtRG8gLy8gbWxh
bVByaW50ID0gdHJ1ZTsKICAgICBiaW5hcnlPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRo
X2FkZCkKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgbWxh
bURvIC8vIHByaW50ZigiICAgKioqIG1sYW0gQEBAIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBA
ICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIGJhZGRpbyBs
ZWZ0LCByaWdodCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmICgocmln
aHQgKz0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgIGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICAgKioq
IG1sYW0gQEBAIGFkZGQgbGVmdCwgcmlnaHQgQCAlczolZFxuIiwgX19GVU5DVElPTl9fLCBfX0xJ
TkVfXyk7CisgICAgICAgICAgICBhZGRkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICByaWdodCA9IGxlZnQgKyByaWdodDsKKyAgICAgICAgZW5kLAor
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2FkZCkgLy8gYmluYXJ5T3AoImJhZGRpbyBsZWZ0LCBy
aWdodCwgc2xvdyIsICJhZGRkIGxlZnQsIHJpZ2h0IiwgX2xsaW50X3Nsb3dfcGF0aF9hZGQpIHsK
KyAgICAvLyB9IC8vIEVORCBiaW5hcnlPcCgpCiAKIAorLy8gYnl0ZWNvZGU6IG11bCBkc3RSZWdJ
ZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltz
cmMxUmVnSWRdICogY2ZyW3NyYzJSZWdJZF0KKy8vCisvLyAgIE11bHRpcGxpZXMgcmVnaXN0ZXIg
c3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvCisvLyAgIG51bWJlcnMpLCBhbmQg
cHV0cyB0aGUgcHJvZHVjdCBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9tdWw6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3Jv
IChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgY29uc3Qg
c2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBpbnQz
MlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KLSAgICAgICAgICAgIG1vdmUg
cmlnaHQsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNoLCBzbG93Ci0g
ICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQotICAgICAgICAgICAgYmlsdCBsZWZ0LCAw
LCBzbG93Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgICAgICAvLyBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAgICAg
Y29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25v
dyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEg
Y29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzY3JhdGNoID0gcmlnaHQ7CisgICAgICAgICAgICBibXVsaW8gbGVm
dCwgc2NyYXRjaCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHNjcmF0Y2ggKj0g
bGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAu
ZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc2NyYXRjaCAhPSAwKSBnb3Rv
IC5kb25lOworICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKGxlZnQgPCAwKSBnb3RvIC5zbG93OworICAgICAgICAgICAgYmls
dCByaWdodCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHJpZ2h0
IDwgMCkgZ290byAuc2xvdzsKICAgICAgICAgLmRvbmU6Ci0gICAgICAgICAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgc3RvcmVpIHNjcmF0
Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBJbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgIC8vIGNmcltpbmRleF0uVGFnID0g
SW50MzJUYWc7CisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XSAgICAvLyBjZnJbaW5kZXhdLlBheWxvYWQgPSBzY3JhdGNoOworICAgICAgICAg
ICAgLy8gfSBFTkQgbWFjcm8uCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KQorICAgICAgICAgICAgbXVsZCBsZWZ0LCByaWdodCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcmlnaHQgPSBsZWZ0ICogcmlnaHQ7CiAgICAgICAgIGVuZCwKLSAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50
X3Nsb3dfcGF0aF9tdWwpCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfbXVsKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBiaW5hcnlPcEN1c3RvbVN0b3JlKC4uLiwgX2xsaW50X3Ns
b3dfcGF0aF9tdWwpOwogCiAKKy8vIGJ5dGVjb2RlOiBzdWIgZHN0UmVnSWQgc3JjMVJlZ0lkIHNy
YzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSAtIGNm
cltzcmMyUmVnSWRdOworLy8KKy8vICAgU3VidHJhY3RzIHJlZ2lzdGVyIHNyYzIgKGNvbnZlcnRl
ZCB0byBudW1iZXIpIGZyb20gcmVnaXN0ZXIKKy8vICAgc3JjMSAoY29udmVydGVkIHRvIG51bWJl
ciksIGFuZCBwdXRzIHRoZSBkaWZmZXJlbmNlIGluCisvLyAgIHJlZ2lzdGVyIGRzdC4KKwogX2xs
aW50X29wX3N1YjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYmluYXJ5T3AoCi0gICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwK
LSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAg
ICAgX2xsaW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykKKyAgICAgICAgICAgIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgaWYgKChyaWdodCAtPSBsZWZ0KSBvdmVyZmxvd3MpIGdvdG8gc2xvdzsKKyAg
ICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAgICAgICAgICBzdWJk
IGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHJpZ2h0ID0g
cmlnaHQgLSBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfc3Vi
KSAvLyBiaW5hcnlPcCguLi4sIF9sbGludF9zbG93X3BhdGhfc3ViKSB7CisgICAgLy8gfSAvLyBF
TkQgYmluYXJ5T3AoKQogCiAKKy8vIGJ5dGVjb2RlOiBkaXYgZHN0UmVnSWQgZGl2aWRlbmRSZWdJ
ZCBkaXZpc29yUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW2RpdmlkZW5k
UmVnSWRdIC8gY2ZyW2Rpdmlzb3JSZWdJZF07CisvLworLy8gICBEaXZpZGVzIHJlZ2lzdGVyIGRp
dmlkZW5kIChjb252ZXJ0ZWQgdG8gbnVtYmVyKSBieSB0aGUKKy8vICAgcmVnaXN0ZXIgZGl2aXNv
ciAoY29udmVydGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZQorLy8gICBxdW90aWVudCBpbiBy
ZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9kaXY6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmln
aHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKLSAgICAgICAgICAg
IGNpMmQgcmlnaHQsIGZ0MQotICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQotICAgICAgICAgICAg
YmNkMmkgZnQxLCByaWdodCwgLm5vdEludAotICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgICAg
ICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAg
ICAgICAgY2kyZCBsZWZ0LCBmdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bGVmdERibDxmdDA+ID0gRG91YmxlKGxlZnQpOworICAgICAgICAgICAgY2kyZCByaWdodCwgZnQx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHREYmw8ZnQxPiA9IERvdWJs
ZShyaWdodCk7CisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQxPiA9IHJpZ2h0RGJsPGZ0MD4gLyBsZWZ0RGJs
PGZ0MT47CisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50ICAgICAgICAgICAg
ICAgICAgICAgICAvLyByZXN1bHQ8cmlnaHQ+ID0gSW50KHJlc3VsdERibDxmdDE+KSBpZiAoKGRv
dWJsZSkoaW50KXJlc3VsdERibCA9IHJlc3VsdERibCkgZWxzZSBnb3RvIC5ub3RJbnQ7CisgICAg
ICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAv
LyBjZnJbaW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgLy8gY2ZyW2luZGV4XS5QYXlsb2FkID0g
cmlnaHQ7CisgICAgICAgICAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIC5kb25lOwogICAgICAgICAubm90SW50OgotICAgICAgICAgICAg
c3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2Zy
LCBpbmRleCwgOF0gICAgICAgICAgICAgICAgICAgICAvLyBjZnJbaW5kZXhdLkRvdWJsZSA9IHJl
c3VsdERibDxmdDE+OwogICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIC8vIEVORCBtYWNyby4K
KyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAgICAgICAgICBk
aXZkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9
IHJpZ2h0IC8gbGVmdDsKICAgICAgICAgZW5kLAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikKKyAg
ICAgICAgX2xsaW50X3Nsb3dfcGF0aF9kaXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGJpbmFyeU9wQ3VzdG9tU3RvcmUoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2Rpdik7CiAKIAog
bWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKLSAgICBsb2FkaSAxMltQ
Q10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCi0g
ICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwotICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNs
b3cKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKLSAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgLy8gbWFjcm8g
Yml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkgeworICAgIGxvYWRpIDEyW1BDXSwg
dDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3Ny
YzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQorICAgIGJpbmVxIHQz
LCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzI8dDM+ICE9IElu
dDMyVGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAg
IGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+
ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KSAgICAg
ICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlvbihwYXlsb2FkMjx0MT4sIHBh
eWxvYWQxPHQwPiwgLnNsb3cpOworICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
ICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gdGFnMjx0Mz47CisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5Q
YXlsb2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaChhZHZhbmNlKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgY2FsbFNsb3dQYXRo
KHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQYXRoOworICAgIGRp
c3BhdGNoKGFkdmFuY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOworICAgIC8vIEVORCBtYWNybyBtYWNybyBiaXRPcC4KIGVuZAogCisKKy8vIGJ5dGVj
b2RlOiBsc2hpZnQgZHN0UmVnSWQgdmFsUmVnSWQgc2hpZnRSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltkc3RSZWdJZF0gPSBJbnQzMihjZnJbdmFsUmVnSWRdKSA8PCBjZnJbc2hpZnRSZWdJZF0pOwor
Ly8KKy8vICAgUGVyZm9ybXMgbGVmdCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRlZCB0
byBpbnQzMikgYnkKKy8vICAgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0byB1aW50MzIpLCBh
bmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2xz
aGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGxzaGlmdGkgbGVmdCwgcmlnaHQgICAg
ICAgICAvLyByaWdodCA9IChyaWdodCA8PCBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBf
bGxpbnRfc2xvd19wYXRoX2xzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAgNCkgLy8gYml0T3Ao
Li4uLCBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwgNCkgeworICAgIC8vIH0gLy8gRU5EIGJpdE9w
KCkKKwogCisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQK
Ky8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbFJlZ0lkXSA+PiBjZnJbc2hpZnRS
ZWdJZF07CisvLworLy8gICBQZXJmb3JtcyBhcml0aG1ldGljIHJpZ2h0IHNoaWZ0IG9mIHJlZ2lz
dGVyIHZhbCAoY29udmVydGVkCisvLyAgIHRvIGludDMyKSBieSByZWdpc3RlciBzaGlmdCAoY29u
dmVydGVkIHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIg
ZHN0LgogCiBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRP
cCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgcnNo
aWZ0aSBsZWZ0LCByaWdodCAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0ID4+IGxlZnQpOworICAg
ICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0LAotICAgICAgICA0KQor
ICAgICAgICA0KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0LCA0KSB7Cisg
ICAgLy8gfSAvLyBFTkQgYml0T3AoKQogCisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZh
bFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOgorLy8KKy8vICAgUGVyZm9ybXMgbG9naWNh
bCByaWdodCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRlZAorLy8gICB0byB1aW50MzIp
IGJ5IHJlZ2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8KKy8vICAgdWludDMyKSwgYW5kIHB1dHMg
dGhlIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF91cnNoaWZ0OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KQotICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKLSAgICAgICAgICAgIGJpbHQg
cmlnaHQsIDAsIHNsb3cKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0ICAgICAgICAv
LyByaWdodCA9ICgodW5zaWduZWQpcmlnaHQgPj4gbGVmdCk7CisgICAgICAgICAgICBiaWx0IHJp
Z2h0LCAwLCBzbG93ICAgICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkgZ290byBzbG93OwogICAgICAg
ICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKLSAgICAgICAgNCkKKyAg
ICAgICAgNCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3Vyc2hpZnQsIDQpIHsKKyAg
ICAvLyB9IC8vIEVORCBiaXRPcCgpCiAKIAorLy8gYnl0ZWNvZGU6IGJpdGFuZCBkc3RSZWdJZCBz
cmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMx
UmVnSWRdICYgY2ZyW3NyYzJSZWdJZF07CisvLworLy8gICBDb21wdXRlcyBiaXR3aXNlIEFORCBv
ZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisvLyAgIGFuZCByZWdpc3RlciBz
cmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJl
Z2lzdGVyIGRzdC4KKwogX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgYml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAg
IGFuZGkgbGVmdCwgcmlnaHQgICAgICAgICAgICAvLyByaWdodCA9IChyaWdodCAmIGxlZnQpOwor
ICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5kLAotICAgICAgICA1
KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfYml0YW5kLCA1KSB7
CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBiaXR4b3IgZHN0UmVn
SWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJb
c3JjMVJlZ0lkXSBeIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgYml0d2lzZSBY
T1Igb2YgcmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8gICBhbmQgcmVnaXN0
ZXIgc3JjMiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBp
biByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAg
ICAgICB4b3JpIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgXiBsZWZ0
KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKLSAgICAg
ICAgNSkKKyAgICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwg
NSkgeworICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKKwogCisvLyBieXRlY29kZTogYml0b3IgZHN0
UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJRAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBj
ZnJbc3JjMVJlZ0lkXSB8IGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgYml0d2lz
ZSBPUiBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisvLyAgIGFuZCByZWdp
c3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUKKy8vICAgcmVzdWx0
IGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2JpdG9yOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAg
ICAgICBvcmkgbGVmdCwgcmlnaHQgICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgfCBsZWZ0
KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdG9yLAotICAgICAg
ICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfYml0b3IsIDUp
IHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCiAKIAorLy8gYnl0ZWNvZGU6IGNoZWNrX2hhc19p
bnN0YW5jZSBjb25zdHJ1Y3RvclJlZ0lkCisvLyBmdW5jdGlvbjogYXNzZXJ0KHR5cGVvZiBjZnJb
Y29uc3RydWN0b3JSZWdJZF0uSGFzSW5zdGFuY2UgPT0gImZ1bmN0aW9uIik7CisvLworLy8gICBD
aGVjayAnY29uc3RydWN0b3InIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBpbnRlcm5hbCBwcm9wZXJ0
eQorLy8gICBbSGFzSW5zdGFuY2VdIChpLmUuIGlzIGEgZnVuY3Rpb24gLi4uICpzaGFrZXMgaGVh
ZCBzYWRseSBhdAorLy8gICBKU0MgQVBJKikuIFJhaXNlcyBhbiBleGNlcHRpb24gaWYgcmVnaXN0
ZXIgY29uc3RydWN0b3IgaXMgbm90CisvLyAgIGEgdmFsaWQgcGFyYW1ldGVyIGZvciBpbnN0YW5j
ZW9mLgorCiBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNr
SGFzSW5zdGFuY2VTbG93Ci0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
b25zdHJ1Y3RvcklkPHQxPiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9yUmVnSWRdOworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3cpIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNvbnN0cnVjdG9ySWQ8
dDE+LCBDZWxsVGFnLCBvYmo8dDA+LCAub3BDaGVja0hhc0luc3RhbmNlU2xvdyk7CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0dXJlOworICAgIGJ0
YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93ICAvLyBpZiAhKHN0cnVjdHVy
ZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UpIGdvdG8gLnNsb3c7
CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BDaGVja0hh
c0luc3RhbmNlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19o
YXNfaW5zdGFuY2UpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
IHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2U7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBpbnN0YW5jZW9mIGRzdFJlZ0lkIHZh
bHVlUmVnSWQgY29uc3RydWN0b3JSZWdJZCBjb25zdHJ1Y3RvclByb3RvUmVnSWQKKy8vIGZ1bmN0
aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbHVlUmVnSWRdIGluc3RhbmNlb2YgY2ZyW2NvbnN0
cnVjdG9yUmVnaWRdOworLy8KKy8vICAgVGVzdHMgd2hldGhlciByZWdpc3RlciB2YWx1ZSBpcyBh
biBpbnN0YW5jZSBvZiByZWdpc3RlcgorLy8gICBjb25zdHJ1Y3RvciwgYW5kIHB1dHMgdGhlIGJv
b2xlYW4gcmVzdWx0IGluIHJlZ2lzdGVyCisvLyAgIGRzdC4gUmVnaXN0ZXIgY29uc3RydWN0b3JQ
cm90byBtdXN0IGNvbnRhaW4gdGhlICJwcm90b3R5cGUiCisvLyAgIHByb3BlcnR5IChub3QgdGhl
IGFjdHVhbCBwcm90b3R5cGUpIG9mIHRoZSBvYmplY3QgaW4KKy8vICAgcmVnaXN0ZXIgY29uc3Ry
dWN0b3IuIFRoaXMgbG9va3VwIGlzIHNlcGFyYXRlZCBzbyB0aGF0CisvLyAgIHBvbHltb3JwaGlj
IGlubGluZSBjYWNoaW5nIGNhbiBhcHBseS4KKy8vCisvLyAgIFJhaXNlcyBhbiBleGNlcHRpb24g
aWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90IGFuCisvLyAgIG9iamVjdC4KKwogX2xsaW50
X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQ2hlY2sgdGhhdCBi
YXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAg
Ly8gQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2Ug
YmVoYXZpb3IuCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KLSAgICBs
b2FkaSAxMltQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNr
ZWQodDEsIHQwKQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0
YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIAotICAgICMgQWN0
dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAgbG9hZGkgMTZbUENdLCB0MAotICAgIGxvYWRpIDRbUENd
LCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwg
Lm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQy
Ci0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBP
YmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2Vv
ZlNsb3cpCi0gICAgCi0gICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0g
dmFsdWUKLSAgICBtb3ZlIDEsIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y29uc3RydWN0b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lkXTsKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVu
Y2hlY2tlZChjb25zdHJ1Y3RvcklkPHQxPiwgb2JqPHQwPik7CisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0dXJlOworICAgIGJ0
YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdyAvLyBpZiAhKHN0cnVjdHVy
ZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSBnb3Rv
IC5zbG93OworCisgICAgLy8gQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENd
LCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JQcm90b0lkPHQwPiA9IG9wZXJhbmRzW2NvbnN0
cnVjdG9yUHJvdG9SZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpICAgICAgICAgICAgICAg
ICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNvbnN0cnVjdG9yUHJvdG9JZDx0
MD4sIENlbGxUYWcsIHByb3RvT2JqPHQxPiwgLnNsb3cpOworICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDFdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0cnVjdHVyZTx0Mj4gPSBwcm90b09iajx0MT4uc3RydWN0dXJlOworICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0
VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cgICAgIC8vIGlmICgodW5zaWduZWQpc3RydWN0dXJlPHQy
Pi50eXBlSW5mby50eXBlIDwgT2JqZWN0VHlwZSkgZ290byAuc2xvdzsKKyAgICBsb2FkaSA4W1BD
XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB2YWx1ZUlkPHQwPiA9IG9wZXJhbmRzW3ZhbHVlUmVnSWRdOwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5z
dGFuY2VvZlNsb3cpICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHZhbHVlSWQ8dDA+LCBDZWxsVGFnLCBvYmo8dDI+LCAuc2xvdyk7CisKKyAgICAvLyBS
ZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwcm90b1dhc0ZvdW5kPHQwPiA9IHRydWU7CiAub3BJbnN0YW5j
ZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKLSAgICBsb2Fk
aSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCi0gICAgYnBl
cSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZM
b29wCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzdHJ1Y3R1cmU8dDI+ID0g
b2JqPHQyPi5zdHJ1Y3R1cmU7CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBv
Ymo8dDI+ID0gc3RydWN0dXJlPHQyPi5wcm90b3R5cGUuUGF5bG9hZDsKKyAgICBicGVxIHQyLCB0
MSwgLm9wSW5zdGFuY2VvZkRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAgIGlmIChvYmo8dDI+ID09IHByb3RvT2JqKSBnb3RvIC5kb25l
OworICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChvYmo8dDI+ICE9IG51bGwp
IGdvdG8gLmxvb3A7CiAKLSAgICBtb3ZlIDAsIHQwCisgICAgbW92ZSAwLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSBmYWxzZTsKIC5vcEluc3RhbmNlb2ZEb25lOgot
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEJvb2xlYW5UYWc7
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9h
ZCA9IHByb3RvV2FzRm91bmQ7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDUpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfaW5zdGFuY2VvZjsKKyAgICBk
aXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8g
Ynl0ZWNvZGU6IGlzX3VuZGVmaW5lZCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltzcmNSZWdJZF0gPT0gInVuZGVmaW5lZCIpOworLy8K
Ky8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Igc3JjIGFjY29yZGlu
ZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAidW5kZWZpbmVkIiwgYW5kIHB1dHMg
dGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9pc191bmRlZmlu
ZWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MQotICAgIGxvYWRp
IDRbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKLSAgICBz
dG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wSXNVbmRlZmluZWRDZWxsCi0gICAgY2llcSB0MiwgVW5kZWZpbmVkVGFnLCB0Mwot
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIGRpc3BhdGNoKDMp
CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQwPiA9IG9wZXJhbmRzW2RzdFJl
Z0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpICAgICAgICAgICAg
ICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFnPHQyPiwgcGF5bG9h
ZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0gICAg
ICAgIC8vIGNmcltkc3RJZDx0MD5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wSXNVbmRlZmluZWRDZWxsICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gPT0gQ2Vs
bFRhZykgZ290byAuY2VsbDsKKyAgICBjaWVxIHQyLCBVbmRlZmluZWRUYWcsIHQzICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0Mz4gPSAodGFnPHQyPiA9PSBVbmRlZmluZWRU
YWcpOworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAg
IC8vIGNmcltkc3RJZDx0MD5dID0gaXNVbmRlZmluZWQ8dDM+OworICAgIGRpc3BhdGNoKDMpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
IC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDEKLSAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDNdLCB0MSAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQz
Pi5zdHJ1Y3R1cmU7CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxICAvLyBpc1VuZGVmaW5lZDx0
MT4gPSAoKHN0cnVjdHVyZTx0MT4udHlwZUluZm8uZmxhZ3MgJiBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSAhPSAwKTsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAg
ICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQxPjsKKyAgICBkaXNwYXRj
aCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGlzX2Jvb2xlYW4gZHN0UmVnSWQgc3JjUmVnSWQKKy8v
IGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJib29s
ZWFuIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBz
cmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlzICJib29sZWFuIiwg
YW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9p
c19ib29sZWFuOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAg
ICBsb2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnKHQxLCB0MCkK
LSAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBs
b2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0
Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0
MSwgdDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNJZDx0
MT4gPT0+IHRhZzx0MD4pOworICAgIGNpZXEgdDAsIEJvb2xlYW5UYWcsIHQwICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGlzQm9vbGVhbjx0MD4gPSAodGFnPHQwPiA9PSBCb29sZWFuVGFnKTsK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBj
ZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBp
c0Jvb2xlYW48dDA+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogaXNfbnVt
YmVyIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9ICh0eXBl
b2YgY2ZyW3NyY1JlZ0lkXSA9PSAibnVtYmVyIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRo
ZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2Ny
aXB0IHJ1bGVzIGlzICJudW1iZXIiLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lz
dGVyIGRzdC4KKwogX2xsaW50X29wX2lzX251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVRhZyh0MSwgdDApCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XQotICAgIGFkZGkgMSwgdDAKLSAgICBjaWIgdDAsIExvd2VzdFRhZyArIDEsIHQx
Ci0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgZGlzcGF0Y2go
MykKLQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tk
c3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApICAgICAgICAg
ICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNSZWdJZDx0MT4gPT0+IHRhZzx0
MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAg
IC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgYWRkaSAxLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQwPiArPSAxOworICAgIGNp
YiB0MCwgTG93ZXN0VGFnICsgMSwgdDEgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzTnVtYmVy
PHQxPiA9ICgodW5zaWduZWQpdGFnPHQwPiA8IExvd2VzdFRhZyArIDEpOworICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5d
LlBheWxvYWQgPSBpc051bWJlcjx0MT47CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCisKKy8vIGJ5dGVj
b2RlOiBpc19zdHJpbmcgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJzdHJpbmciKTsKKy8vCisvLyAgIERldGVy
bWluZXMgd2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBhY2NvcmRpbmcgdG8KKy8vICAg
dGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInN0cmluZyIsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8v
ICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAub3BJc1N0cmlu
Z05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDAKLSAgICBjYmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBl
LCB0MQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3Bh
dGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07
CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFnPHQw
PiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0g
Qm9vbGVhblRhZzsKKyAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNTdHJpbmdOb3RDZWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDA+ICE9IENlbGxUYWcpIGdv
dG8gLm5vdENlbGw7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDA+ID0gcGF5bG9hZDx0
Mz4uc3RydWN0dXJlOworICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxICAgLy8gaXNTdHJpbmc8dDE+ID0gKHN0cnVjdHVy
ZTx0MD4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc1N0cmluZzx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAub3BJc1N0cmluZ05vdENlbGw6Ci0gICAgc3RvcmVwIDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIHN0b3JlcCAwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IGZhbHNlOworICAgIGRpc3BhdGNoKDMpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRL
bm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxv
YWQpCisgICAgLy8gbWFjcm86IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZp
bmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpIHsKICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VD
YXBhY2l0eSwgb2sgZW5kKQogICAgIG5lZ2kgcHJvcGVydHlPZmZzZXQKLSAgICBsb2FkcCBKU09i
amVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9y
YWdlCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9y
YWdlXSwgb2JqZWN0QW5kU3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0
b3JhZ2U8b2JqZWN0QW5kU3RvcmFnZT4gPSBvYmplY3Q8b2JqZWN0QW5kU3RvcmFnZT4ub3V0T2ZM
aW5lU3RvcmFnZTsKICAgICBsb2FkaSBUYWdPZmZzZXQgKyAoSW5saW5lU3RvcmFnZUNhcGFjaXR5
IC0gMikgKiA4W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCiAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIChJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgLSAyKSAqIDhbb2Jq
ZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCisgICAgLy8gfSBFTkQg
bWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwKIGVuZAogCiBt
YWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmplY3RB
bmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCkBAIC05NDAsMzIgKzEzMDIsNDYgQEAgbWFjcm8gbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZQogZW5kCiAKIG1hY3JvIHJlc29sdmVHbG9i
YWwoc2l6ZSwgc2xvdykKLSAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgotICAgICMgNFtQ
Q10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCi0gICAgIyA4W1BDXSAgIFByb3BlcnR5IGlk
ZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCi0gICAgIyAxMltQQ10gIFN0cnVjdHVy
ZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KLSAgICAj
IDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0
ZWNvZGUgZ2VuZXJhdG9yLgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQotICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKLSAgICBsb2FkaSAx
NltQQ10sIHQxCi0gICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwo
dDEsIHQwLCB0MiwgdDMpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCi0gICAgdmFsdWVQcm9maWxlKHQy
LCB0MywgdDApCi1lbmQKKyAgICAvLyBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpIHsK
KyAgICAvLyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAvLyA0W1BDXSAgIERlc3RpbmF0
aW9uIGZvciB0aGUgbG9hZC4KKyAgICAvLyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5k
ZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgLy8gMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwg
aW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgLy8gMTZbUENdICBP
ZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5l
cmF0b3IuCisgICAgLy8gLi4uCisgICAgLy8gb3JhY2xlQ2FjaGVJZFtQQ10gIE9mZnNldCBpbnRv
IHRoZSBWYWx1ZVByb2ZpbGU6OmJ1Y2tldHMgdGhhdCB3aWxsIHN0b3JlIHRoZSBvcmFjbGUgdmFs
dWUgZm9yIHRoaXMgYnl0ZWNvZGUuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQwPiA9IGNmci5Db2Rl
QmxvY2s7CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgICAgICBtbGFt
IGNvZGVibG9jayAlcFxuIiwgcjAudS52cCk7CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9
IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBn
bG9iYWxPYmplY3Q8dDA+LnN0cnVjdHVyZTsKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3RydWN0dXJlPHQxPiAh
PSBzdHJ1Y3R1cmVBcmc8cGNbMTJdPikgZ290byAuc2xvdzsKKyAgICBsb2FkaSAxNltQQ10sIHQx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDE+
ID0gb2Zmc2V0QXJnW3BjWzE2XV0pOworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRL
bm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKSAgIC8vIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXRLbm93bk5vdEZpbmFsKG9mZnNldDx0MT4sIGdsb2JhbE9iamVjdDx0MD4gPT0+IHRhZzx0
Mj4sIHBheWxvYWQ8dDM+KTsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBwY1s0XTsKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbZHN0SWQ8dDA+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5d
LlBheWxvYWQgPSBwYXlsb2FkPHQzPjsKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBw
cmludGYoIiAgIG1sYW0gcmVzb2x2ZWdsb2JhbCB8IHBheWxvYWQ8dDM+ID0gJWxkXG4iLCByNC51
LmkpOworICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG9yYWNsZUlkPHQwPiA9IHBjW29yYWNsZUNhY2hlSWRdOworICAgIHZh
bHVlUHJvZmlsZSh0MiwgdDMsIHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHZhbHVlUHJvZmlsZSh0YWc8dDI+LCBwYXlsb2FkPHQzPiwgb3JhY2xlSWQ8dDA+KTsKKyAg
ICAvLyB9IEVORCBtYWNybyByZXNvbHZlR2xvYmFsLgorZW5kCisKKy8vIGJ5dGVjb2RlOiBkc3RS
ZWdJZCBnbG9iYWxPYmplY3QoYykgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIG9mZnNldChu
KSBvcmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGdsb2JhbE9iamVj
dFtvZmZzZXRdOworLy8KKy8vICAgUGVyZm9ybXMgYSBkeW5hbWljIHByb3BlcnR5IGxvb2t1cCBm
b3IgdGhlIGdpdmVuIHByb3BlcnR5LCBvbiB0aGUgcHJvdmlkZWQKKy8vICAgZ2xvYmFsIG9iamVj
dC4gIElmIHN0cnVjdHVyZSBtYXRjaGVzIHRoZSBTdHJ1Y3R1cmUgb2YgdGhlIGdsb2JhbCB0aGVu
IHBlcmZvcm0KKy8vICAgYSBmYXN0IGxvb2t1cCB1c2luZyB0aGUgY2FzZSBvZmZzZXQsIG90aGVy
d2lzZSBmYWxsIGJhY2sgdG8gYSBmdWxsIHJlc29sdmUgYW5kCisvLyAgIGNhY2hlIHRoZSBuZXcg
c3RydWN0dXJlIGFuZCBvZmZzZXQKIAogX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93
KQotICAgIGRpc3BhdGNoKDYpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFs
U2xvdykgIC8vIHJlc29sdmVHbG9iYWwoNiwgLnNsb3cpOworICAgIGRpc3BhdGNoKDYpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFJlc29s
dmVHbG9iYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVf
Z2xvYmFsKQotICAgIGRpc3BhdGNoKDYpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfcmVzb2x2ZV9nbG9iYWwpICAgLy8gY2FsbCBzbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWw7Cisg
ICAgZGlzcGF0Y2goNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAKICMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUg
YWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0
aGUKQEAgLTk3Myw1NCArMTM0OSw2OSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CiAjIGhv
bGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3Jh
dGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAogIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBz
dHVmZiBpbiB0MyBpZiBuZWVkIGJlLgogbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVy
YW5kLCBzY29wZUNoZWNrKQotICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nm
cl0sIHQwCi0gICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIC8vIG1hY3Jv
IGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykgeworICAgIGxvYWRw
IFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgIC8v
IHNjb3BlT2JqPHQwPiA9IGNmci5TY29wZUNoYWluLlBheWxvYWQ7CisgICAgbG9hZGkgZGVCcnVp
amluSW5kZXhPcGVyYW5kLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVCcnVp
amluSW5kZXg8dDI+ID0gW2RlQnJ1aWppbkluZGV4T3BlcmFuZF07CiAgICAgCi0gICAgYnRpeiB0
MiwgLmRvbmUKKyAgICBidGl6IHQyLCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ID09IDApIGdvdG8gLmRv
bmU7CiAgICAgCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAgYmluZXEgQ29kZUJs
b2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAotICAgIGJ0YnogQ29kZUJs
b2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9j
azx0MT4gPSBjZnIuQ29kZUJsb2NrOworICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0
MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AgICAgICAgIC8vIGlmIChjb2RlQmxvY2s8dDE+LmNvZGVU
eXBlICE9IEZ1bmN0aW9uQ29kZSkgZ290byAubG9vcDsKKyAgICBidGJ6IENvZGVCbG9jazo6bV9u
ZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AgICAgICAgICAgICAvLyBpZiAoIWNvZGVCbG9j
azx0MT4ubmVlZHNGdWxsU2NvcGVDaGFpbikgZ290byAubG9vcDsKICAgICAKLSAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKyAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEgICAgICAgICAgICAgICAvLyBhY3RpdmF0
aW9uUmVnPHQxPiA9IGNvZGVCbG9jazx0MT4uYWN0aXZhdGlvblJlZ2lzdGVyOwogCi0gICAgIyBO
ZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KLSAgICBiaWVxIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgotICAgIHNjb3Bl
Q2hlY2sodDAsIHQxKQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAg
ICAvLyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbiAgICAv
LyBpZiAoY2ZyW2FjdGl2YXRpb25SZWc8dDE+XS5UYWcgPT0gRW1wdHlWYWx1ZVRhZykgZ290byAu
bm9BY3RpdmF0aW9uOworICAgIHNjb3BlQ2hlY2sodDAsIHQxKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlQ2hlY2soc2NvcGVPYmo8dDA+LCBhY3RpdmF0
aW9uUmVnPHQxPik7CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5leHQ7
CiAubm9BY3RpdmF0aW9uOgotICAgIHN1YmkgMSwgdDIKKyAgICBzdWJpIDEsIHQyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZUJydWlqaW5JbmRl
eDx0Mj4tLTsKICAgICAKLSAgICBidGl6IHQyLCAuZG9uZQorICAgIGJ0aXogdDIsIC5kb25lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChkZUJydWlq
aW5JbmRleDx0Mj4gPT0gMCkgZ290byAuZG9uZTsKIC5sb29wOgotICAgIHNjb3BlQ2hlY2sodDAs
IHQxKQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKLSAgICBzdWJpIDEs
IHQyCi0gICAgYnRpbnogdDIsIC5sb29wCisgICAgc2NvcGVDaGVjayh0MCwgdDEpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzY29wZUNoZWNrKHNjb3BlT2Jq
PHQwPiwgYWN0aXZhdGlvblJlZzx0MT4pOworICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0
W3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc2NvcGVPYmo8dDA+ID0gc2Nv
cGVPYmo8dDA+Lm5leHQ7CisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBkZUJydWlqaW5JbmRleDx0Mj4tLTsKKyAgICBi
dGlueiB0MiwgLmxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ICE9IDApIGdvdG8gLmxvb3A7CiAKIC5kb25lOgor
ICAgIC8vIH0gRU5EIG1hY3JvIGdldFNjb3BlLgogZW5kCiAKKy8vIGJ5dGVjb2RlOiByZXNvbHZl
X3NraXAgZHN0KHIpIGdsb2JhbE9iamVjdChjKSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJRCkg
b2Zmc2V0KG4pIG9yYWNsZUNhY2hlSWQKKy8vIGZ1bmN0aW9uOiAKKy8vCisvLyAgIFBlcmZvcm1z
IGEgZHluYW1pYyBwcm9wZXJ0eSBsb29rdXAgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwgb24gdGhl
IHByb3ZpZGVkCisvLyAgIGdsb2JhbCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUgbWF0Y2hlcyB0aGUg
U3RydWN0dXJlIG9mIHRoZSBnbG9iYWwgdGhlbiBwZXJmb3JtCisvLyAgIGEgZmFzdCBsb29rdXAg
dXNpbmcgdGhlIGNhc2Ugb2Zmc2V0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIGEgZnVsbCByZXNv
bHZlIGFuZAorLy8gICBjYWNoZSB0aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zmc2V0LgorLy8gICAg
ICAgICAKKy8vICAgVGhpcyB3YWxrcyB0aHJvdWdoIG4gbGV2ZWxzIG9mIHRoZSBzY29wZSBjaGFp
biB0byB2ZXJpZnkgdGhhdCBub25lIG9mIHRob3NlIGxldmVscworLy8gICBpbiB0aGUgc2NvcGUg
Y2hhaW4gaW5jbHVkZSBkeW5hbWljYWxseSBhZGRlZCBwcm9wZXJ0aWVzLgorCiBfbGxpbnRfb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCi0gICAgbG9hZHAgSlNHbG9iYWxEYXRh
OjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpn
bG9iYWxEYXRhW3NwXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IHNwLmdsb2JhbERhdGE7CisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4gPSBnbG9iYWxEYXRhPHQz
Pi5hY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIGdldFNjb3BlKAogICAgICAgICAyMFtQQ10sCiAg
ICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNs
b3cKLSAgICAgICAgZW5kKQotICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93KQotICAgIGRpc3BhdGNoKDcpCisgICAgICAgIC8vIG1hY3JvIChzY29wZSwgc2Ny
YXRjaCkgeworICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0s
IHNjcmF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9iajxzY3JhdGNoPiA9
IHNjb3BlLm9iamVjdDsKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2Ny
YXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdyAgICAvLyBpZiAob2Jq
PHNjcmF0Y2g+LnN0cnVjdHVyZSAhPSBhY3RpdmF0aW9uU3RydWN0dXJlPHQzPikgZ290byAuc3Vw
ZXJTbG93OworICAgICAgICAvLyB9IEVORCBtYWNyby4KKyAgICAgICAgZW5kKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnZXRTY29wZShvcGVyYW5kc1tvZmZzZXRdLCAuLi4pOworICAgIHJlc29sdmVH
bG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmVHbG9iYWwoNywgLnNsb3cpOworICAgIGRpc3Bh
dGNoKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUmVzb2x2
ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKLSAgICBkaXNwYXRjaCg3KQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVf
Zm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YykKLSAgICBkaXNwYXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNh
bGwgc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIF9sbGludF9vcF9nZXRfc2Nv
cGVkX3ZhcjoKQEAgLTEwNjYsNiArMTQ1Nyw3IEBAIG1hY3JvIGdldEdsb2JhbFZhcihzaXplKQog
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0Mwor
ICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAgIG1sYW0gZ2V0R2xvYmFs
VmFyOiA8dDM+ID0gJWxkICB8IHBheWxvYWQ8dDE+ID0gJWxkXG4iLCByNC51LmksIHIxLnUuaSk7
CiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2goc2l6ZSkKIGVuZApA
QCAtMTE2NSw2ICsxNTU3LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BD
XSwgdDEKKyAgICBtbGFtRG8gLy8gbWxhbVByaW50PSB0cnVlOwogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9h
ZGkgMTJbUENdLCB0MgogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKQEAgLTExNzYsMTEgKzE1Njks
MjMgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICB3cml0
ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zm
c2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBtbGFtRG8gLy8gaWYgKG1sYW1f
UFJJTlRGKSBwcmludGYoIiAgIG1sYW0gQVNNIHB1dEJ5SWQgcmVzdWx0PHQyPiA9ICVsZFxuIiwg
cjIudS5pKTsKICAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0
b3JhZ2UsIHQxXQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAK
Ky8vIGJ5dGVjb2RlOiBwdXRfYnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgbm9w
KG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRpcmVjdChiKQorLy8KKy8vICAgR2VuZXJpYyBwcm9w
ZXJ0eSBhY2Nlc3M6IFNldHMgdGhlIHByb3BlcnR5IG5hbWVkIGJ5IGlkZW50aWZpZXIKKy8vICAg
cHJvcGVydHksIGJlbG9uZ2luZyB0byByZWdpc3RlciBiYXNlLCB0byByZWdpc3RlciB2YWx1ZS4K
Ky8vCisvLyAgIFVubGlrZSBtYW55IG9wY29kZXMsIHRoaXMgb25lIGRvZXMgbm90IHdyaXRlIGFu
eSBvdXRwdXQgdG8KKy8vICAgdGhlIHJlZ2lzdGVyIGZpbGUuCisvLworLy8gICBUaGUgImRpcmVj
dCIgZmxhZyBzaG91bGQgb25seSBiZSBzZXQgdGhpcyBwdXRfYnlfaWQgaXMgdG8gaW5pdGlhbGl6
ZQorLy8gICBhbiBvYmplY3QgbGl0ZXJhbC4KKwogX2xsaW50X29wX3B1dF9ieV9pZDoKICAgICBw
dXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCkBAIC0xNDM3LDI1ICsxODQyLDM0IEBAIG1hY3Jv
IGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAKICAgICBsb2FkaSA4W1BDXSwgdDMK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAg
bWxhbSBDT01QQVJFIHN0ZXAgMVxuIik7CiAgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90
SW50CiAgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbWxhbURvIC8vIHBy
aW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDJcbiIpOworICAgIG1sYW1EbyAvLyBwcmlu
dGYoIiAgIEBAQCBtbGFtIENvbXBhcmluZyBpZiAodDEgJWxkIGFuZCB0MiAlbGQpOiBicmFuY2gg
Li4uXG4iLCByMS51LmksIHI0LnUuaSk7CiAgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVt
cFRhcmdldCkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAg
M1xuIik7CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gRElEIE5PVCBicmFuY2hc
biIpOwogICAgIGRpc3BhdGNoKDQpCiAKIC5vcDFOb3RJbnQ6CisgICAgbWxhbURvIC8vIHByaW50
ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDRcbiIpOwogICAgIGJpYSB0MCwgTG93ZXN0VGFn
LCAuc2xvdwogICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCiAgICAg
YmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwogICAgIGNpMmQgdDMsIGZ0MQogICAgIGptcCAub3Ax
Tm90SW50UmVhZHkKIC5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgbWxhbURvIC8vIHByaW50Zigi
ICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDVcbiIpOwogICAgIGZpaTJkIHQzLCB0MiwgZnQxCiAu
b3AxTm90SW50UmVhZHk6CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFS
RSBzdGVwIDZcbiIpOwogICAgIGZpaTJkIHQxLCB0MCwgZnQwCiAgICAgZG91YmxlQ29tcGFyZShm
dDAsIGZ0MSwgLmp1bXBUYXJnZXQpCiAgICAgZGlzcGF0Y2goNCkKIAogLm9wMk5vdEludDoKKyAg
ICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAgN1xuIik7CiAgICAg
Y2kyZCB0MSwgZnQwCiAgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CiAgICAgZmlpMmQgdDMs
IHQyLCBmdDEKQEAgLTE0NjMsOSArMTg3NywxMiBAQCBtYWNybyBjb21wYXJlKGludGVnZXJDb21w
YXJlLCBkb3VibGVDb21wCiAgICAgZGlzcGF0Y2goNCkKIAogLmp1bXBUYXJnZXQ6CisgICAgbWxh
bURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDhcbiIpOworICAgIG1sYW1E
byAvLyBwcmludGYoIiAgIEBAQCBtbGFtIEJSQU5DSEVEXG4iKTsKICAgICBkaXNwYXRjaEJyYW5j
aCgxMltQQ10pCiAKIC5zbG93OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENP
TVBBUkUgc3RlcCA5XG4iKTsKICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCiAgICAgZGlzcGF0
Y2goMCkKIGVuZApAQCAtMTU0NywzMiArMTk2NCw1NSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmM6CiAu
b3BOZXdGdW5jRG9uZToKICAgICBkaXNwYXRjaCg0KQogCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rp
b24oY2FsbExpbmtJbmZvKQorICAgIGlmIENfTE9PUAorICAgICAgICBjeHhDYWxsSlNGdW5jdGlv
biBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbY2FsbExpbmtJbmZvXSAgICAg
Ly8gY2FsbCBjYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXQ7CisgICAgZWxzZQorICAgICAg
ICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtjYWxsTGlua0luZm9d
ICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICAgICAgLy8g
UmVsb2FkIHRoZSByZXR1cm4gUEMgZnJvbSB3aGVyZSB3ZSBzdGFzaGVkIGl0LCBhbmQgZ28gdGhl
cmU6CisgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAgZ290byAqcGM7Cisg
ICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRpc3BhdGNoQWZ0ZXJDYWxsKCk7CisgICAgZW5kCitlbmQKIAogbWFjcm8g
ZG9DYWxsKHNsb3dQYXRoKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRpIDE2W1BDXSwg
dDEKLSAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKLSAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQot
ICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICBsb2FkaSAxMltQQ10sIHQzCi0gICAg
YWRkcCAyNCwgUEMKLSAgICBsc2hpZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIsIHQzICAjIHQzIGNv
bnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29w
ZUNoYWluW3QyXSwgdDAKLSAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNd
Ci0gICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBsb2Fk
aSA4IC0gMjRbUENdLCB0MgotICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdCi0gICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCi0gICAgc3RvcmVpIHQyLCBB
cmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkgQ2VsbFRhZywgQ2Fs
bGVlICsgVGFnT2Zmc2V0W3QzXQotICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFn
T2Zmc2V0W3QzXQotICAgIG1vdmUgdDMsIGNmcgotICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAvLyBt
YWNybyBkb0NhbGwoc2xvd1BhdGgpIHsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY0lkPHQwPiA9IHBjWzFdOworICAgIGxvYWRp
IDE2W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsTGlu
a0luZm88dDE+ID0gcGNbNF07CisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0
MV0sIHQyICAgICAgICAgICAgIC8vIGNhbGxlZTx0Mj4gPSBjYWxsTGlua0luZm88dDE+LmNhbGxl
ZTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cENhbGxTbG93KSAvLyBsb2FkKGZ1bmNJZDx0MD4gPT0+IGZ1bmM8dDM+LCAuLi4pOworICAgIGJp
bmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
ZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNvZGUoKT8pIGdvdG8gLnNsb3c7Cisg
ICAgbG9hZGkgMTJbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG9mZnNldDx0Mz4gPSBwY1szXTsKKworICAgIGFkZHAgMjQsIFBDICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyArPSAyNCBpLmUuIHBvaW50IHRvIHRoZSByZXR1
cm4gYWRkcmVzcy4KKworICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwg
MzsgIC8vIG9mZnNldCA9IHNpemVvZiBjdXJyZW50IGZyYW1lOworICAgIGxzaGlmdGkgMywgdDMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDM+ID0gb2Zm
c2V0PHQzPiA8PCAzOworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZh
bHVlIG9mIGNmciAgICAvLyBuZXdGcmFtZTx0Mz4gPSBvZmZzZXQ8dDM+ICsgY2ZyOworCisgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgbmV3RnJhbWU6CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29w
ZUNoYWluW3QyXSwgdDAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNhbGxlZTx0Mj4uc2Nv
cGVDaGFpbjsKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdICAgICAg
ICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZS5QYXlsb2FkID0gY2FsbGVlPHQyPjsKKyAg
ICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXSAgICAgICAgICAgLy8g
bmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4uUGF5bG9hZCA9IHNjb3BlPHQwPjsKKyAgICBsb2FkaSA4
IC0gMjRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtQXJnczx0
Mj4gPSAuLi47CisgICAgbWxhbURvICAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gbWxh
bSA6OiBQUklOVCBkb0NhbGwoKSB8IGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHBjICVwO1xuXG4i
LCB2UEMpOworICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdICAg
ICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBwYzsgLy8gU3Rhc2ggdGhlIHJldHVy
biBQQy4KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10gICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlckZyYW1lID0gY2ZyOworICAgIHN0b3JlaSB0Miwg
QXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAvLyBuZXdGcmFtZTx0Mz4u
QXJndW1lbnRDb3VudC5QYXlsb2FkID0gbnVtQXJnczx0Mj47CisgICAgc3RvcmVpIENlbGxUYWcs
IENhbGxlZSArIFRhZ09mZnNldFt0M10gICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5DYWxs
ZWUuVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09m
ZnNldFt0M10gICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4uVGFnID0gQ2VsbFRh
ZzsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IEJF
Rk9SRSBwdXNoIHwgY2ZyKCVwKS0+dlBDKCkgPSAlcDtcblxuIiwgY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPmN1cnJlbnRWUEMoKSk7CisgICAgbW92ZSB0MywgY2ZyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKKyAgICBtbGFtRG8gIC8v
IGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IEFGVEVSIHB1c2ggfCBjZnIoJXAp
LT52UEMoKSA9ICVwO1xuXG4iLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y3VycmVudFZQQygpKTsK
KyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShj
YWxsRnJhbWUsICIgID4+PiBQVVNIRUQgdG8gbmV3ICIsIHZQQywgImRvQ2FsbCIsIF9fRklMRV9f
LCBfX0xJTkVfXyk7CisKKyAgICAvLyBDYWxsIHRoZSB0YXJnZXQgYXMgaWYgaXQncyBhIGNvbXBp
bGVkIG1ldGhvZDoKKyAgICAjIG1sYW0gY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNv
ZGVUYXJnZXRbdDFdICAgICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvPHQxPi5tYWNoaW5lQ29kZVRh
cmdldDsKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24odDEpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxsTGlua0luZm88dDE+KTsKIAogLm9wQ2Fs
bFNsb3c6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dQYXRoKQorICAgIHNsb3dQYXRoRm9y
Q2FsbCg2LCBzbG93UGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQYXRo
OworICAgIC8vIH0gRU5EIGRvQ2FsbC4KIGVuZAogCiAKQEAgLTE1OTgsMTIgKzIwMzgsMjEgQEAg
X2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKICAgICBkaXNwYXRjaCgyKQogCiAKKy8vIGJ5
dGVjb2RlOiByZXQgcmVzdWx0UmVnSWQKKy8vIGZ1bmN0aW9uOiByZXR1cm4gY2ZyW3Jlc3VsdFJl
Z0lkXTsKKy8vCisvLyAgIFJldHVybiByZWdpc3RlciByZXN1bHQgYXMgdGhlIHJldHVybiB2YWx1
ZSBvZiB0aGUgY3VycmVudAorLy8gICBmdW5jdGlvbiBjYWxsLCB3cml0aW5nIGl0IGludG8gZnVu
Y3Rpb25SZXR1cm5WYWx1ZS4KKy8vICAgSW4gYWRkaXRpb24sIHVud2luZCBvbmUgY2FsbCBmcmFt
ZSBhbmQgcmVzdG9yZSB0aGUgc2NvcGUKKy8vICAgY2hhaW4sIGNvZGUgYmxvY2sgaW5zdHJ1Y3Rp
b24gcG9pbnRlciBhbmQgcmVnaXN0ZXIgYmFzZQorLy8gICB0byB0aG9zZSBvZiB0aGUgY2FsbGlu
ZyBmdW5jdGlvbi4KKwogX2xsaW50X29wX3JldDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCi0gICAgZG9SZXR1cm4oKQorICAgIGxv
YWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdElkPHQyPiA9IG9wZXJh
bmRzW3Jlc3VsdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDAp
ICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGNmcltyZXN1bHRJZDx0Mj5dID09PiB0YWc8dDE+
LCBwYXlsb2FkPHQwPik7CisgICAgZG9SZXR1cm4oKSAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZG9SZXR1cm4oKTsKIAogCiBfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgpAQCAtMTY5MCw2
ICsyMTM5LDEyIEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGRpc3BhdGNoKDApCiAKIAor
Ly8gYnl0ZWNvZGU6IGNhdGNoIGV4KHIpCisvLworLy8gICBSZXRyaWV2ZXMgdGhlIFZNJ3MgY3Vy
cmVudCBleGNlcHRpb24gYW5kIHB1dHMgaXQgaW4gcmVnaXN0ZXIKKy8vICAgZXguIFRoaXMgaXMg
b25seSB2YWxpZCBhZnRlciBhbiBleGNlcHRpb24gaGFzIGJlZW4gcmFpc2VkLAorLy8gICBhbmQg
dXN1YWxseSBmb3JtcyB0aGUgYmVnaW5uaW5nIG9mIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLgorCiBf
bGxpbnRfb3BfY2F0Y2g6CiAgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBK
SVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQogICAgICMgbWFjaGluZSBjb2RlIHJl
dHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCkBA
IC0xNjk3LDE4ICsyMTUyLDE4IEBAIF9sbGludF9vcF9jYXRjaDoKICAgICAjIFRoZSBKSVQgdGhy
b3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2lu
ZwogICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRo
ZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKICAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldElu
dGVycHJldGVyUENGb3JUaHJvdy4KLSAgICBtb3ZlIHQwLCBjZnIKLSAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKLSAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdl
dEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCi0gICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKLSAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCi0gICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0
YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkgRW1wdHlWYWx1ZVRh
ZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAotICAgIGxv
YWRpIDRbUENdLCB0MgotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQot
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgbW92ZSB0MCwgY2ZyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
ZnIgPSBjYXRjaGVyRnJhbWU8dDA+OworICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4g
PSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6
dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMgICAgICAgICAgICAgLy8gcGMgPSBn
bG9iYWxEYXRhLnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsKKyAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MCAgICAgICAgICAgICAgIC8v
IHBheWxvYWQ8dDA+ID0gZ2xvYmFsRGF0YS5leGNlcHRpb24uUGF5bG9hZDsKKyAgICBsb2FkaSBK
U0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxICAgICAgICAgICAgICAg
ICAgIC8vIHRhZzx0MT4gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5UYWc7CisgICAgc3RvcmVpIDAs
IEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10gICAgICAgICAgICAg
ICAvLyBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5QYXlsb2FkID0gMDsKKyAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIC8v
IGdsb2JhbERhdGEuZXhjZXB0aW9uLlRhZyA9IEVtcHR5VmFsdWVUYWc7CisgICAgbG9hZGkgNFtQ
Q10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBleFJlZ0lkPHQyPiA9IG9wZXJhbmRzWzBdOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2V4
UmVnSWQ8dDI+XS5QYXlsb2FkID0gcGF5bG9hZDx0MD47CisgICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJb
ZXhSZWdJZDx0Mj5dLlRhZyA9IHRhZzx0MT47CiAgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlz
IG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQx
LCB0MiwgdDMgYWJvdmUuCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgyKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRfb3BfZW5kOgpAQCAtMTcyMiwzMiArMjE3NywzNyBA
QCBfbGxpbnRfb3BfZW5kOgogCiAKIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioq
KioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZVxuXG4iKTsKICAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4g
dGhyb3dpbmcgZnJvbSBMTEludFNsb3dQYXRocyksIHNvCiAgICAgIyB0aGUgdGhyb3cgdGFyZ2V0
IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCiAg
ICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2Nv
bC4KLSAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKLSAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKLSAgICBqbXAgSlNHbG9i
YWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKyAgICBsb2FkcCBKSVRTdGFja0Zy
YW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEgICAgICAgICAgICAgICAgIC8vIGdsb2JhbERhdGE8dDE+
ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAgICAgICAgICAgIC8vIGNhbGxGcmFtZTx0MD4gPSBn
bG9iYWxEYXRhPHQxPi5jYWxsRnJhbWVGb3JUaHJvdzsKKyAgICAjIG1sYW0gam1wIEpTR2xvYmFs
RGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisgICAgaW5kaXJlY3RKdW1wKEpTR2xv
YmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdKSAvLyBqbXAgZ2xvYmFsRGF0YTx0
MT4udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3c7CiAKIAogX2xsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAq
KioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lXG5cbiIpOwogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKICAg
ICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKICAgICBsb2FkcCBKU0ds
b2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKLSAgICBqbXAgSlNHbG9iYWxEYXRh
Ojp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKyAgICAjIG1sYW0gam1wIEpTR2xvYmFsRGF0
YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisgICAgaW5kaXJlY3RKdW1wKEpTR2xvYmFs
RGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdKQogCiAKIG1hY3JvIG5hdGl2ZUNhbGxU
cmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQotICAgIHN0b3JlcCAwLCBDb2Rl
QmxvY2tbY2ZyXQotICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIHQwCi0gICAgbG9hZGkgU2Nv
cGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDBdLCB0MQotICAgIHN0b3JlaSBDZWxsVGFnLCBTY29w
ZUNoYWluICsgVGFnT2Zmc2V0W2Nmcl0KLSAgICBzdG9yZWkgdDEsIFNjb3BlQ2hhaW4gKyBQYXls
b2FkT2Zmc2V0W2Nmcl0KKyAgICAvLyBJbml0IGNmcltDb2RlQmxvY2ssIFNjb3BlQ2hhaW4sIFJl
dHVyblBDXToKKyAgICBzdG9yZXAgMCwgQ29kZUJsb2NrW2Nmcl0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyLkNvZGVCbG9jayA9IDA7CisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2Zy
XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlckZyYW1lPHQwPiA9IGNmci5D
YWxsZXJGcmFtZTsKKyAgICBsb2FkaSBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0MF0sIHQx
ICAgICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVyRnJhbWU8dDA+LlNjb3BlQ2hhaW4uUGF5
bG9hZDsKKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFtjZnJdICAg
ICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDEsIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0gICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4u
UGF5bG9hZCA9IHNjb3BlPHQxPjsKICAgICBpZiBYODYKICAgICAgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YSArIDRbc3BdLCB0MyAjIEFkZGl0aW9uYWwgb2Zmc2V0IGZvciByZXR1
cm4gYWRkcmVzcwogICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFt
ZVt0M10KICAgICAgICAgcGVlayAwLCB0MQotICAgICAgICBzdG9yZXAgdDEsIFJldHVyblBDW2Nm
cl0KKyAgICAgICAgc3RvcmVwIHQxLCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyLlJldHVyblBDID0gPHQxPjsKICAgICAgICAgbW92ZSBjZnIsIHQyICAjIHQyID0g
ZWN4CiAgICAgICAgIHN1YnAgMTYgLSA0LCBzcAogICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQxCkBAIC0xNzU3LDI3ICsyMjE3LDQ5IEBAIG1hY3JvIG5hdGl2ZUNh
bGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICAgICAgYWRkcCAxNiAtIDQsIHNwCiAgICAg
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA0W3NwXSwgdDMKICAgICBlbHNp
ZiBBUk12NwotICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMK
LSAgICAgICAgc3RvcmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVbdDNdCi0gICAg
ICAgIG1vdmUgdDAsIHQyCi0gICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0
MykKLSAgICAgICAgc3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdCi0gICAgICAgIG1vdmUgY2ZyLCB0
MAotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCi0gICAgICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCi0gICAgICAgIG1vdmUgdDIs
IGNmcgotICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQotICAgICAg
ICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKLSAgICAgICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgICAgIC8vIFNldCBnbG9iYWxEYXRh
LnRvcENhbGxGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFt
ZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFj
a0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6
OnRvcENhbGxGcmFtZVt0M10gICAgICAvLyBnbG9iYWxEYXRhPHQzPi50b3BDYWxsRnJhbWUgPSBj
ZnI7CisgICAgICAgIG1vdmUgdDAsIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHNhdmVkQ2FsbGVyRnJhbWU8dDI+ID0gY2FsbGVyRnJhbWU8dDA+OworICAgICAgICBw
cmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDMpICAgICAgICAgICAgICAvLyBzYXZlZFJl
dHVyblBDPHQzPiA9IHJldHVyblBDOworICAgICAgICBzdG9yZXAgdDMsIFJldHVyblBDW2Nmcl0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDM+OworICAgICAgICAv
LyBQYXNzIGN1cnJlbnRGcmFtZSBhcyBhbiBhcmcgdG8gdGhlIHRhcmdldDoKKyAgICAgICAgbW92
ZSBjZnIsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMDogYXJn
MDx0MD4gPSBjZnI7CisgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggcjAgPSBjdXJy
ZW50RnJhbWUsIGNmciA9IG9sZEZyYW1lOiBXaHk/Pz8KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MSAgICAgICAgICAgLy8ganNmdW5jPHQxPiA9IGNmci5DYWxs
ZWUuUGF5bG9hZDsKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwg
dDEgICAgICAgICAgLy8gYXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFi
bGU7CisgICAgICAgIG1vdmUgdDIsIGNmciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OworICAgICAgICBjYWxsIGV4ZWN1dGFi
bGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAgICAgICAgICAgICAvLyBjYWxsIGV4ZWN1dGFibGU8dDE+
LkNhbGxPckNvbnN0cnVjdDsKKworICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybih0MykgICAgICAgICAgICAvLyByZXR1cm5QQyA9IHNhdmVkUmV0dXJuUEM8dDM+OworICAg
ICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAgICAvLyBn
bG9iYWxEYXRhPHQzPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2JhbERhdGE7CisgICAgZWxzaWYg
Q19MT09QCisgICAgICAgIC8vIFNldCBnbG9iYWxEYXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRG
cmFtZTsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAg
ICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOwor
ICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFtZVt0M10gICAgICAv
LyBnbG9iYWxEYXRhPHQzPi50b3BDYWxsRnJhbWUgPSBjZnI7CisgICAgICAgIG1vdmUgdDAsIHQy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmVkQ2FsbGVyRnJhbWU8
dDI+ID0gY2FsbGVyRnJhbWU8dDA+OworICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwodDMpICAgICAgICAgICAgICAvLyBzYXZlZFJldHVyblBDPHQzPiA9IHJldHVyblBDOwor
ICAgICAgICBzdG9yZXAgdDMsIFJldHVyblBDW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnIuUmV0dXJuUEMgPSA8dDM+OworICAgICAgICAvLyBQYXNzIGN1cnJlbnRGcmFtZSBhcyBh
biBhcmcgdG8gdGhlIHRhcmdldDoKKyAgICAgICAgbW92ZSBjZnIsIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMDogYXJnMDx0MD4gPSBjZnI7CisgICAgICAgIC8v
IENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggcjAgPSBjdXJyZW50RnJhbWUsIGNmciA9IG9sZEZyYW1l
OiBXaHk/Pz8KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MSAg
ICAgICAgICAgLy8ganNmdW5jPHQxPiA9IGNmci5DYWxsZWUuUGF5bG9hZDsKKyAgICAgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEgICAgICAgICAgLy8gYXJnMTogZXhl
Y3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7CisgICAgICAgIG1vdmUgdDIsIGNm
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHNhdmVkQ2FsbGVy
RnJhbWU8dDI+OworICAgICAgICAjIG1sYW0gY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlv
blt0MV0gICAgICAgICAgICAgLy8gY2FsbCBleGVjdXRhYmxlPHQxPi5DYWxsT3JDb25zdHJ1Y3Q7
CisgICAgICAgIGN4eENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdICAg
IC8vIGNhbGwgZXhlY3V0YWJsZTx0MT4uQ2FsbE9yQ29uc3RydWN0OworCisgICAgICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQzKSAgICAgICAgICAgIC8vIHJldHVyblBDID0g
c2F2ZWRSZXR1cm5QQzx0Mz47CisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4u
Z2xvYmFsRGF0YTsKICAgICBlbHNlICAKICAgICAgICAgZXJyb3IKICAgICBlbmQKLSAgICBiaW5l
cSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIEVtcHR5VmFsdWVUYWcs
IC5leGNlcHRpb24KLSAgICByZXQKKyAgICBiaW5lcSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiAr
IFRhZ09mZnNldFt0M10sIEVtcHR5VmFsdWVUYWcsIC5leGNlcHRpb24gLy8gaWYgKGdsb2JhbERh
dGE8dDM+LmV4Y2VwdGlvbixUYWcgIT0gRW1wdHlWYWx1ZVRhZykgZ290byAuZXhjZXB0aW9uOwor
ICAgIHJldF9tbGFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyByZXR1cm47CiAuZXhjZXB0aW9uOgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCh0MSkgIyBUaGlzIGlzIHJlYWxseSBvbmx5IG5lZWRlZCBvbiBYODYKLSAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdLCBQQyAgICAgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQu
VGFnOwogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdGhyb3dfZnJvbV9uYXRpdmVfY2FsbCkKLSAg
ICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKKyAgICBqdW1wVG9H
bHVlKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQogZW5kCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNDkgKzMz
LDg0IEBAIGNvbnN0IFZhbHVlVW5kZWZpbmVkICA9IFRhZ0JpdFR5cGVPdGhlciAKIGNvbnN0IFZh
bHVlTnVsbCAgICAgICA9IFRhZ0JpdFR5cGVPdGhlcgogCiAjIFV0aWxpdGllcy4KK21hY3JvIGp1
bXBUb1BDKCkKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgY3h4TmV4dE9wY29kZQorICAgIGVsc2UK
KyAgICAgICAgam1wIFtQQiwgUEMsIDhdICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKKyAgICBlbmQKK2VuZAorCiBtYWNybyBkaXNwYXRjaChhZHZhbmNlKQotICAgIGFkZHAg
YWR2YW5jZSwgUEMKLSAgICBqbXAgW1BCLCBQQywgOF0KKyAgICBhZGRwIGFkdmFuY2UsIFBDICAg
ICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKKyAgICBq
dW1wVG9QQygpCiBlbmQKIAogbWFjcm8gZGlzcGF0Y2hJbnQoYWR2YW5jZSkKICAgICBhZGRpIGFk
dmFuY2UsIFBDCi0gICAgam1wIFtQQiwgUEMsIDhdCisgICAganVtcFRvUEMoKQogZW5kCiAKIG1h
Y3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgam1wIFtQQiwgUEMsIDhdCisgICAg
anVtcFRvUEMoKQogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKLSAg
ICBtb3ZlIGFyZzEsIHQ1Ci0gICAgbW92ZSBhcmcyLCB0NAotICAgIGNhbGwgZnVuY3Rpb24KKyAg
ICBpZiBYODYKKyAgICAgICAgbW92ZSBhcmcxLCB0NSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhcmcxID0gLi4uOworICAgICAgICBtb3ZlIGFyZzIsIHQ0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFyZzIgPSAuLi47CisgICAgICAgIGNhbGwgZnVuY3Rpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uOworICAgIGVsc2lm
IENfTE9PUAorICAgICAgICBjeHhDYWxsU2xvd1BhdGggZnVuY3Rpb24sIGFyZzEsIGFyZzIKKyAg
ICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCiBlbmQKIAogIyBUaGlzIGJhcmVseSB3b3Jr
cy4gYXJnMyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KIG1hY3JvIGND
YWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKLSAgICBtb3ZlIGFyZzEsIHQ1
Ci0gICAgbW92ZSBhcmcyLCB0NAotICAgIG1vdmUgYXJnMywgdDEKLSAgICBtb3ZlIGFyZzQsIHQy
Ci0gICAgY2FsbCBmdW5jdGlvbgorICAgIGlmIFg4NgorICAgICAgICBtb3ZlIGFyZzEsIHQ1Cisg
ICAgICAgIG1vdmUgYXJnMiwgdDQKKyAgICAgICAgbW92ZSBhcmczLCB0MQorICAgICAgICBtb3Zl
IGFyZzQsIHQyCisgICAgICAgIGNhbGwgZnVuY3Rpb24KKyAgICBlbHNpZiBDX0xPT1AKKyAgICAg
ICAgZXJyb3IKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCiBlbmQKIAogbWFjcm8g
cHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQorICAgICMgbWxhbSBpZiBub3QgQ19MT09QICMgbWxhbQor
ICAgICMgICAgbGVhcCBbUEIsIFBDLCA4XSwgUEMKKyAgICAjICAgIG1vdmUgUEIsIHQzCisgICAg
IyBtbGFtIGVuZAogICAgIGxlYXAgW1BCLCBQQywgOF0sIFBDCisgICAgbWxhbURvIC8vIHByaW50
ZigibGVhIFtQQiwgUEMsIDhdID0+IFBDICVwXG4iLCByUEMudS52cCk7CiAgICAgbW92ZSBQQiwg
dDMKIGVuZAogCiBtYWNybyByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKLSAgICBtb3ZlIHQwLCBQ
QwotICAgIG1vdmUgdDEsIGNmcgorICAgICMgbWxhbSBpZiBub3QgQ19MT09QICMgbWxhbQorICAg
ICMgICAgbW92ZSB0MCwgUEMgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgorICAgICMgICAgbW92ZSB0MSwgY2ZyICAgICAgICAgICAgICAgIC8vIHBjID0gcmVz
dWx0LmV4ZWNTdGF0ZTx0MT4KKyAgICAjICAgIG1vdmUgdDMsIFBCCisgICAgIyAgICBzdWJwIFBC
LCBQQworICAgICMgICAgdXJzaGlmdHAgMywgUEMKKyAgICAjIG1sYW0gZW5kCisgICAgbWxhbURv
IC8vIHByaW50ZigiIHJlc3RvcmUgUEIgJXAgUEMgJXAgPj4+IFxuIiwgckJhc2VQQy51LnZwLCBy
UEMudS52cCk7CisgICAgbW92ZSB0MCwgUEMgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgorICAgIG1vdmUgdDEsIGNmciAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAgbW92ZSB0MywgUEIKKyAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgcmVzdG9yZSBQQiAlcCBQQyAlcCA+Pj4gXG4iLCByQmFzZVBDLnUudnAsIHJQQy51LnZw
KTsKICAgICBzdWJwIFBCLCBQQwogICAgIHVyc2hpZnRwIDMsIFBDCisgICAgbWxhbURvIC8vIHBy
aW50ZigiIHN1YiBQQiwgUEMgfCB1cnNoaWZ0IDMsIFBDID0+IFBDICVwXG4iLCByUEMudS52cCk7
CiBlbmQKIAogbWFjcm8gY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQpAQCAtOTgsMTAgKzEzMywzMCBA
QCBlbmQKIAogIyBDYWxsIGEgc2xvdyBwYXRoIGZvciBjYWxsIGNhbGwgb3Bjb2Rlcy4KIG1hY3Jv
IGNhbGxDYWxsU2xvd1BhdGgoYWR2YW5jZSwgc2xvd1BhdGgsIGFjdGlvbikKKyAgICAjIG1vdmUg
QXJndW1lbnRDb3VudCwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgQXJndW1l
bnRDb3VudCA9PiAlcCBcbiIsIHIwLnUudnApOworICAgICMgYWRkaSBUYWdPZmZzZXQsIGNmciwg
dDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgVGFnT2Zmc2V0W2NmciAlcF0gPT4g
JXAgXG4iLCBjYWxsRnJhbWUsIHIwLnUudnApOworICAgICMgbW92ZSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0LCB0MAorICAgICMgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0ID0+ICVwIFxuIiwgcjAudS52cCk7CisgICAgIyBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIHQwCisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgICBU
RVNUIG1vdmUgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnIgJXBdID0+ICVwIFxuIiwgY2Fs
bEZyYW1lLCByMC51LnZwKTsKKyAgICAjIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgbG9hZCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2NmciAlcF0gPT4gJXAgXG4iLCBjYWxsRnJhbWUsIHIwLnUudnApOwor
ICAgICMgbW92ZSBDYWxsZXJGcmFtZSwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRF
U1QgQ2FsbGVyRnJhbWUgPT4gJXAgXG4iLCByMC51LnZwKTsKKyAgICAjIG1vdmUgQ2FsbGVyRnJh
bWVbY2ZyXSwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgbW92ZSBDYWxsZXJG
cmFtZVtjZnIgJXBdID0+ICVwIFxuIiwgY2FsbEZyYW1lLCByMC51LnZwKTsKKyAgICAjIGxvYWRp
IENhbGxlckZyYW1lW2Nmcl0sIHQwCisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgICBURVNUIGxv
YWQgQ2FsbGVyRnJhbWVbY2ZyICVwXSA9PiAlcCBcbiIsIGNhbGxGcmFtZSwgcjAudS52cCk7CisK
ICAgICBhZGRpIGFkdmFuY2UsIFBDLCB0MAorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1Qg
QkVGT1JFIGNmciAlcCBjYWxsZXJGcmFtZSAlcCBcbiIsIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
YWxsZXJGcmFtZSgpKTsKICAgICBzdG9yZWkgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXQorICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgQUZURVIgY2ZyICVwIGNhbGxlckZy
YW1lICVwIFxuIiwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwogICAgIHBy
ZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBjQ2FsbDIoc2xvd1BhdGgsIGNmciwgUEMpCisgICAg
bWxhbURvIC8vIHByaW50ZigiICAgQUZURVIgY0NhbGwyIFBCICVwIFBDICVwID4+PiBcbiIsIHJC
YXNlUEMudS52cCwgclBDLnUudnApOwogICAgIG1vdmUgdDEsIGNmcgogICAgIGFjdGlvbih0MCkK
IGVuZApAQCAtMTI0LDI0ICsxNzksMzMgQEAgZW5kCiAKICMgSW5kZXggYW5kIHZhbHVlIG11c3Qg
YmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KIG1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHZhbHVlKQorICAgICMgbWxhbURvIC8vIHByaW50
ZigiICoqKiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlXG4iKTsKICAgICBicGd0ZXEgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICAjIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogbG9hZENvbnN0YW50T3JWYXJpYWJsZSAudmFyaWFibGVcbiIpOwogICAgIGxvYWRw
IFtjZnIsIGluZGV4LCA4XSwgdmFsdWUKKyAgICBtbGFtRHVtcCB2YWx1ZQogICAgIGptcCAuZG9u
ZQogLmNvbnN0YW50OgorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlIC5jb25zdGFudFxuIik7CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHZhbHVl
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3ZhbHVlXSwgdmFsdWUKICAgICBzdWJwIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCBpbmRleAogICAgIGxvYWRwIFt2YWx1ZSwgaW5kZXgsIDhdLCB2YWx1ZQorICAgIG1sYW1EdW1w
IHZhbHVlCiAuZG9uZToKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAqKiogbG9hZENvbnN0YW50
T3JWYXJpYWJsZSAuZG9uZVxuIik7CiBlbmQKIAogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUludDMyKGluZGV4LCB2YWx1ZSwgc2xvdykKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAqKiog
bG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyXG4iKTsKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKGluZGV4LCB2YWx1ZSkKICAgICBicGIgdmFsdWUsIHRhZ1R5cGVOdW1iZXIsIHNsb3cKIGVu
ZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChpbmRleCwgdmFsdWUsIHNsb3cp
CisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
XG4iKTsKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB2YWx1ZSkKKyAgICAjIG1s
YW1EbyAvLyBwcmludGYoIiAqKiogbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGw6IHZhbHVlICVw
IHRhZ01hc2sgJXBcbiIsIHI0LnUudnAsIHRhZ01hc2sudS52cCk7CiAgICAgYnRwbnogdmFsdWUs
IHRhZ01hc2ssIHNsb3cKIGVuZAogCkBAIC0xNjgsNyArMjMyLDggQEAgbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwogICAgIGJ0aXogdDAsIC5jb250aW51ZQogICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQogICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAotICAgIGptcCBKU0dsb2JhbERhdGE6OnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorICAgICMgbWxhbSBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKyAgICBpbmRpcmVjdEp1bXAoSlNHbG9iYWxEYXRh
Ojp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0pCiAuY29udGludWU6CiAgICAgIyBSZWxvYWQg
Q29kZUJsb2NrIGFuZCByZXNldCBQQywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgdGhl
bS4KICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKQEAgLTE4MCw1OCArMjQ1LDg2IEBAIGVu
ZAogCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucwogCisvLyBieXRlY29kZTogZW50ZXIK
Ky8vCisvLyAgIEluaXRpYWxpemVzIGxvY2FsIHZhcmlhYmxlcyB0byB1bmRlZmluZWQuIElmIHRo
ZSBjb2RlIGJsb2NrIHJlcXVpcmVzCisvLyAgIGFuIGFjdGl2YXRpb24sIGVudGVyX3dpdGhfYWN0
aXZhdGlvbiBpcyB1c2VkIGluc3RlYWQuCisvLyAgIFRoaXMgb3Bjb2RlIGFwcGVhcnMgb25seSBh
dCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KKwogX2xsaW50X29wX2VudGVyOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIgICAgICAgICAg
ICAgICAgLy8gdDI8Q29kZUJsb2NrPiA9IGNmci5Db2RlQmxvY2sKICAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4u
bV9udW1WYXJzCi0gICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCi0gICAgbW92ZSBWYWx1ZVVuZGVm
aW5lZCwgdDAKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUgICAgICAgICAgICAgICAgICAgLy8g
aWYgKG51bVZhcnM8dDI+ID09IDApIGdvdG8gLmRvbmU7CisgICAgbW92ZSBWYWx1ZVVuZGVmaW5l
ZCwgdDAgICAgICAgICAgICAgICAgIC8vIGpzVW5kZWZpbmVkPHQwPiA9IFVuZGVmaW5lZDsKIC5v
cEVudGVyTG9vcDoKLSAgICBzdWJpIDEsIHQyCi0gICAgc3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0K
LSAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgbnVtVmFyczx0Mj4tLTsKKyAgICBzdG9yZXAgdDAsIFtjZnIs
IHQyLCA4XSAgICAgICAgICAgICAgICAgLy8gICBjZnJbbnVtVmFyczx0Mj5dID0ganNVbmRlZmlu
ZWQ8dDA+OworICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AgICAgICAgICAgICAgICAgICAvLyBp
ZiAobnVtVmFyczx0Mj4gIT0gMCkgZ290byAubG9vcDsKIC5vcEVudGVyRG9uZToKLSAgICBkaXNw
YXRjaCgxKQorICAgIGRpc3BhdGNoKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IGNyZWF0ZV9hY3RpdmF0aW9uIGRz
dChyKQorLy8KKy8vICAgSWYgdGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxmcmFt
ZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQgd3Jp
dGVzIGl0IGJhY2sgdG8gZHN0LgorCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCi0gICAgYnBuZXEg
W2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKQorICAgIGxvYWRp
cyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0
aXZhdGlvblJlZzx0MD4gPSBvcGVyYW5kPGRzdFJlZ0lkPjsKKyAgICBicG5lcSBbY2ZyLCB0MCwg
OF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lIC8vIGlmIChjZnJbYWN0aXZh
dGlvblJlZzx0MD5dICE9IEVtcHR5KSBnb3RvIC5kb25lOworICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKSAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhf
Y3JlYXRlX2FjdGl2YXRpb247CiAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKLSAgICBkaXNwYXRj
aCgyKQorICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBpbml0X2xh
enlfcmVnIGRzdChyKQorLy8KKy8vICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4K
Ky8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2Rl
IGJsb2NrLgorCiBfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBzdG9yZXAgVmFsdWVFbXB0eSwgW2Nm
ciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAg
ICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZDxkc3RSZWdJZD47CisgICAgc3RvcmVwIFZh
bHVlRW1wdHksIFtjZnIsIHQwLCA4XSAgICAgLy8gY2ZyW2RzdDx0MD5dID0gRW1wdHk7CisgICAg
ZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogCiAKKy8vIGJ5dGVjb2RlOiBjcmVhdGVfYXJndW1lbnRzIGRzdChyKQorLy8KKy8vICAgQ3Jl
YXRlcyB0aGUgJ2FyZ3VtZW50cycgb2JqZWN0IGFuZCBwbGFjZXMgaXQgaW4gYm90aCB0aGUKKy8v
ICAgJ2FyZ3VtZW50cycgY2FsbCBmcmFtZSBzbG90IGFuZCB0aGUgbG9jYWwgJ2FyZ3VtZW50cycK
Ky8vICAgcmVnaXN0ZXIsIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGluaXRpYWxpc2VkLgor
CiBfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBicG5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1w
dHksIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9jcmVhdGVfYXJndW1lbnRzKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0PHQwPiA9IG9wZXJhbmQ8ZHN0UmVnSWQ+
OworICAgIGJwbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVFbXB0eSwgLm9wQ3JlYXRlQXJndW1lbnRz
RG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XSAhPSBFbXB0eSkgZ290byAuZG9uZTsKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKSAgICAgICAgIC8vIGNh
bGwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHM7CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgot
ICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNv
ZGU6IG9wX2NyZWF0ZV90aGlzIHRoaXMocikgcHJvdG8ocikKKy8vCisvLyAgIEFsbG9jYXRlIGFu
IG9iamVjdCBhcyAndGhpcycsIGZvciB1c2UgaW4gY29uc3RydWN0aW9uLgorLy8gICBUaGlzIG9w
Y29kZSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2Nr
LgorCiBfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxv
YWRwIENhbGxlZVtjZnJdLCB0MAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJp
dG9ySURbdDBdLCB0MgotICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXM8dDA+
ID0gY2ZyLkNhbGxlZTsKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVyaXRvcklE
W3QwXSwgdDIgICAgICAgLy8gaW5oZXJpdG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRv
cklEOworICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoaW5oZXJpdG9yID09IDApIGdvdG8gLnNsb3c7CisgICAgLy8gYWxsb2NhdGVC
YXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwganNGaW5hbE9iamVjdC5j
bGFzcywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KTsKICAgICBhbGxvY2F0ZUJh
c2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6Ompz
RmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykK
LSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQotICAgIHN0b3JlcCB0MCwgW2NmciwgdDEsIDhd
Ci0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhpc0lEPHQxPiA9IG9wZXJhbmQ8dGhpc1JlZ0lkPjsKKyAg
ICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyW3RoaXNJRDx0MT5dID0gdGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9w
Q3JlYXRlVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRl
X3RoaXMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9jcmVhdGVfdGhpcykgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX3RoaXM7Cisg
ICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRfb3BfY29udmVydF90aGlzOgpAQCAtMjc0
LDYgKzM2NywxMiBAQCBfbGxpbnRfb3BfbW92OgogICAgIGRpc3BhdGNoKDMpCiAKIAorLy8gYnl0
ZWNvZGU6IG5vdCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RyZWdJZF0g
PSAhY2ZyW3NyY3JlZ0lkXTsKKy8vCisvLyAgIENvbXB1dGVzIGxvZ2ljYWwgTk9UIG9mIHJlZ2lz
dGVyIHNyYyAoY29udmVydGVkIHRvCisvLyAgIGJvb2xlYW4pLCBhbmQgcHV0cyB0aGUgcmVzdWx0
IGluIHJlZ2lzdGVyIGRzdC4KKwogX2xsaW50X29wX25vdDoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQwCkBAIC00ODYsNTUgKzU4NSw3NSBAQCBfbGxp
bnRfb3BfbmVnYXRlOgogCiAKIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJh
dGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxvYWRpcyAyNFtQ
QiwgUEMsIDhdLCB0MAotICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDAsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQw
KQotICAgIGJwYiB0MCwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludAotICAgIGJwYiB0MSwgdGFn
VHlwZU51bWJlciwgLm9wMk5vdEludAotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQyCi0gICAg
aW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQxLCB0MCwgLnNsb3csIHQyKQotICAgIGRpc3BhdGNo
KDUpCisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBtbGFtIGJpbmFyeU9wQ3VzdG9tU3RvcmVc
biIpOworICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzcmMySWQ8dDA+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaXMgMTZb
UEIsIFBDLCA4XSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMUlkPHQyPiA9
IG9wZXJhbmRzW3NyYzFSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEp
ICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQw
PiA9PT4gc3JjMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKSAgICAg
ICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzFJZDx0Mj4gPT0+
IHNyYzE8dDA+KTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxhbSA6OiBzcmMxPHQwPiAlcCBz
cmMyPHQxPiAlcFxuIiwgcjAudS52cCwgcjEudS52cCk7CisgICAgbWxhbURvIC8vIHByaW50Zigi
IG1sYW0gOjogYmluYXJ5T3BDdXN0b21TdG9yZSAxIHwgdGFnVHlwZU51bWJlciAlcFxuIiwgdGFn
VHlwZU51bWJlci51LnZwKTsKKyAgICBicGIgdDAsIHRhZ1R5cGVOdW1iZXIsIC5vcDFOb3RJbnQg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzE8dDA+IGlzIE5PVCBJbnQpIGdvdG8gLm9wMU5v
dEludDsKKyAgICBicGIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDJOb3RJbnQgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKHNyYzI8dDE+IGlzIE5PVCBJbnQpIGdvdG8gLm9wMk5vdEludDsKKworICAg
IC8vIG9wMSBhbmQgb3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBl
bmQuCisgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBpbnRlZ2VyT3BlcmF0
aW9uQW5kU3RvcmUodDEsIHQwLCAuc2xvdywgdDIpICAgICAgICAgLy8gdDIgPSB0MSBvcGVyYXRv
ciB0MDsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGludCBvcCByMSA9ICVsZCAoJXApICsg
cjAgICVsZCAoJXApID09PiByMiAlbGQgKCVwKVxuIiwgcjEudS5pLCByMS51LnZwLCByMC51Lmks
IHIwLnUudnAsIHIyLnUuaSwgcjIudS52cCk7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9w
MU5vdEludDoKICAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0
aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCi0gICAgYnRweiB0MCwgdGFnVHlw
ZU51bWJlciwgLnNsb3cKLSAgICBicGFlcSB0MSwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludE9w
MkludAotICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgYWRkcCB0YWdUeXBl
TnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorICAgIC8vIG9wMSBpcyBkZWZpbml0ZWx5IG5v
dCBhbiBpbnQsIG9wMiBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIg
KioqIC5vcDFOb3RJbnQ6XG4iKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGJ0cHogcjAg
PSAlbGQgKCVwKSwgdGFnVHlwZU51bWJlciAlbGQgKCVwKTpcbiIsIHIwLnUuaSwgcjAudS52cCwg
dGFnVHlwZU51bWJlci51LmksIHRhZ1R5cGVOdW1iZXIudS52cCk7CisgICAgYnRweiB0MCwgdGFn
VHlwZU51bWJlciwgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmMxPHQwPiBp
cyBjb21wbGV4IHR5cGUpIGdvdG8gLnNsb3c7CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBi
cGFlcSByMSA9ICVsZCAoJXApLCB0YWdUeXBlTnVtYmVyICVsZCAoJXApOlxuIiwgcjEudS5pLCBy
MS51LnZwLCB0YWdUeXBlTnVtYmVyLnUuaSwgdGFnVHlwZU51bWJlci51LnZwKTsKKyAgICBicGFl
cSB0MSwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludE9wMkludCAgICAgICAgICAgLy8gaWYgKHNy
YzI8dDE+ID49IHRhZ1R5cGVOdW1iZXIpIGdvdG8gLm9wMU5vdEludE9wMkludDsKKyAgICBidHB6
IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNy
YzI8dDE+IGlzIGNvbXBsZXggdHlwZSkgZ290byAuc2xvdzsKKyAgICAvLyBJZiB3ZSBnZXQgaGVy
ZSwgdGhlbiBzcmMxPHQwPiBpcyBhIGRvdWJsZSwgYW5kIHNyYzI8dDE+IGlzIGEgZG91YmxlOgor
ICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0MSArPSB0YWdUeXBlTnVtYmVyOworICAgIGZwMmQgdDEsIGZ0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNyYzx0MT4gdG8gYSBkb3VibGU8ZnQx
PjsKICAgICBqbXAgLm9wMU5vdEludFJlYWR5CiAub3AxTm90SW50T3AySW50OgotICAgIGNpMmQg
dDEsIGZ0MQorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLm9wMU5vdEludE9wMkludDpcbiIp
OworICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHNyYzE8dDA+IG11c3QgYmUgYSBkb3VibGUg
KG9wMSBub3QgaW50LCBhbmQgbm90IGNvbXBsZXggdHlwZSk6CisgICAgY2kyZCB0MSwgZnQxICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgc3JjMjx0MT4g
dG8gYSBkb3VibGU8ZnQxPjsKIC5vcDFOb3RJbnRSZWFkeToKKyAgICBtbGFtRG8gLy8gcHJpbnRm
KCIgKioqIC5vcDFOb3RJbnRSZWFkeTpcbiIpOwogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQy
CiAgICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MAotICAgIGZwMmQgdDAsIGZ0MAorICAgIG1sYW1E
byAvLyBwcmludGYoIiAqKiogcjAgPSAlbGQgKCVwKTpcbiIsIHIwLnUuaSwgcjAudS52cCk7Cisg
ICAgZnAyZCB0MCwgZnQwICMgbWxhbSBGSVhNRQorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiog
ZDAgPSAlZSwgZDEgPSAlZVxuIiwgcjAudS5pLCByMS51LnZwKTsKICAgICBkb3VibGVPcGVyYXRp
b24oZnQxLCBmdDApCi0gICAgZmQycCBmdDAsIHQwCisgICAgbWxhbURvIC8vIHByaW50ZigiICoq
KiBkMCA9ICVlLCBkMSA9ICVlXG4iLCByMC51LmksIHIxLnUudnApOworICAgIGZkMnAgZnQwLCB0
MCAjIG1sYW0gRklYTUUKICAgICBzdWJwIHRhZ1R5cGVOdW1iZXIsIHQwCiAgICAgc3RvcmVwIHQw
LCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCg1KQogCiAub3AyTm90SW50OgorICAgIG1sYW1E
byAvLyBwcmludGYoIiAqKiogLm9wMk5vdEludDpcbiIpOwogICAgICMgRmlyc3Qgb3BlcmFuZCBp
cyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBpcyBkZWZpbml0ZWx5IG5vdC4KICAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MgogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93
CiAgICAgY2kyZCB0MCwgZnQwCiAgICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQg
dDEsIGZ0MQorICAgIGZwMmQgdDEsIGZ0MSAjIG1sYW0gRklYTUUKICAgICBkb3VibGVPcGVyYXRp
b24oZnQxLCBmdDApCi0gICAgZmQycCBmdDAsIHQwCisgICAgZmQycCBmdDAsIHQwICMgbWxhbSBG
SVhNRQogICAgIHN1YnAgdGFnVHlwZU51bWJlciwgdDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQy
LCA4XQogICAgIGRpc3BhdGNoKDUpCiAKIC5zbG93OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAq
KiogLnNsb3c6XG4iKTsKICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCiAgICAgZGlzcGF0Y2go
NSkKIGVuZAogCiBtYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRp
b24sIHNsb3dQYXRoKQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIGJpbmFyeU9wXG4iKTsK
ICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQogICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xv
dykKQEAgLTU0Niw2ICs2NjUsNyBAQCBlbmQKIAogX2xsaW50X29wX2FkZDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbWxhbURvIC8vIHByaW50ZigiIG1sYW0gb3BfYWRkXG4iKTsKICAgICBi
aW5hcnlPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwg
cmlnaHQsIHNsb3cgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwg
cmlnaHQgZW5kLApAQCAtNTg0LDE1ICs3MDQsMzAgQEAgX2xsaW50X29wX2RpdjoKICAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKICAgICAgICAgICAgICMgQXNzdW1lIHQz
IGlzIHNjcmF0Y2hhYmxlLgogICAgICAgICAgICAgYnRpeiBsZWZ0LCBzbG93CisgICAgICAgICAg
ICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxlZnQgaXMgTk9UIDBcbiIpOwogICAgICAgICAgICAg
YmluZXEgbGVmdCwgLTEsIC5ub3ROZWcyVHdvVGhlMzFEaXZCeU5lZzEKKyAgICAgICAgICAgIG1s
YW1EbyAvLyBwcmludGYoIiAqKiogbGVmdCBpcyAtMVxuIik7CiAgICAgICAgICAgICBiaWVxIHJp
Z2h0LCAtMjE0NzQ4MzY0OCwgLnNsb3cKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAq
KiogcmlnaHQgaXMgTk9UIC0yMTQ3NDgzNjQ4IFslcF1cbiIsICh2b2lkKiktMjE0NzQ4MzY0OCk7
CisgICAgICAgICAgICBtbGFtRHVtcCByaWdodAogICAgICAgICAubm90TmVnMlR3b1RoZTMxRGl2
QnlOZWcxOgorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAubm90TmVnMlR3b1Ro
ZTMxRGl2QnlOZWcxOlxuIik7CiAgICAgICAgICAgICBidGlueiByaWdodCwgLmludE9LCisgICAg
ICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIHJpZ2h0IGlzIDBcbiIpOwogICAgICAgICAg
ICAgYmlsdCBsZWZ0LCAwLCBzbG93CisgICAgICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioq
IGxlZnQgPj0gMFxuIik7CiAgICAgICAgIC5pbnRPSzoKKyAgICAgICAgICAgIG1sYW1EbyAvLyBw
cmludGYoIiAqKiogLmludE9LOlxuIik7CiAgICAgICAgICAgICBtb3ZlIGxlZnQsIHQzCisgICAg
ICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxlZnQgaXM6XG4iKTsKKyAgICAgICAgICAg
IG1sYW1EdW1wIHQzCiAgICAgICAgICAgICBtb3ZlIHJpZ2h0LCB0MAorICAgICAgICAgICAgbWxh
bURvIC8vIHByaW50ZigiICoqKiByaWdodCBpczpcbiIpOworICAgICAgICAgICAgbWxhbUR1bXAg
dDAKICAgICAgICAgICAgIGNkcWkKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiog
LmNkcWk6XG4iKTsKKyAgICAgICAgICAgIG1sYW1EdW1wIHQwCisgICAgICAgICAgICBtbGFtRG8g
Ly8gcHJpbnRmKCIgKioqIGRvaW5nIGRpdjpcbiIpOwogICAgICAgICAgICAgaWRpdmkgdDMKICAg
ICAgICAgICAgIGJ0aW56IHQxLCBzbG93CiAgICAgICAgICAgICBvcnAgdGFnVHlwZU51bWJlciwg
dDAKQEAgLTgwNiw2ICs5NDEsOCBAQCBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFt0MF0sIHQwCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgIyBtbGFtRG8gLy8gbWxhbUJyZWFrKCJyZXNvbHZlR2xvYmFsIiwwLDApOworICAgICMgbWxh
bURvIC8vIHByaW50ZigiICAgbWxhbSA6OiByZXNvbHZlR2xvYmFsKCl8IGdvLT5zdHJ1Y3R1cmU8
dDE+ICVwLCBwYyBjYWNoZSBzdHJ1Y3R1cmUgPCVwPiAlcFxuIiwgcjEudS52cCwgckJhc2VQQy51
Lmk4cCArIHJQQy51LmkgKiA4ICsgMjQsICoodm9pZCoqKShyQmFzZVBDLnUuaThwICsgclBDLnUu
aSAqIDggKyAyNCkpOwogICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9h
ZGlzIDMyW1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MSwgdDAsIHQyKQpAQCAtOTYzLDEzICsxMTAwLDE4IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVy
dHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQg
d29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKICAgICAjIHdlIHdvdWxkIGhh
dmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQwCisgICAg
bWxhbURvIC8vIHByaW50ZigibG9hZGlzIDE2W1BCLCBQQywgOF0sIHQwID09PiB0MCAlbGQgWyVw
XVxuIiwgcjAudS5pLCByMC51LnZwKTsKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQorICAg
IG1sYW1EbyAvLyBwcmludGYoImxvYWRpcyAzMltQQiwgUEMsIDhdLCB0MSA9PT4gdDEgJWxkIFsl
cF1cbiIsIHIxLnUuaSwgcjEudS52cCk7CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
dDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsb2FkVmFyIHQw
ID09PiB0MyAlbGQgWyVwXVxuIiwgcjQudS5pLCByNC51LnZwKTsKICAgICBsb2FkaXMgNDBbUEIs
IFBDLCA4XSwgdDIKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGFib3V0IHRvIGNhbGwgZ2V0
UHJvcGVydHlTdG9yYWdlOlxuIik7CiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0
MywKICAgICAgICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gp
CisgICAgICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGNvbnRpbnVhdGlvbjogdDMgJXAg
dDEgJXBcbiIsIHI0LnUudnAsIHIxLnUudnApOwogICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGlzIDhb
UEIsIFBDLCA4XSwgdDEKICAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwg
c2NyYXRjaApAQCAtOTg1LDYgKzExMjcsNyBAQCBtYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3Rv
cmFnZSkKIGVuZAogCiBfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIG1sYW1EbyAvLyBwcmludGYo
IiAqKiogbGxpbnRfb3BfZ2V0X2J5X2lkXG4iKTsKICAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9y
YWdlKQogCiAKQEAgLTEyOTMsMTAgKzE0MzYsMTAgQEAgbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29t
cGFyZSwgZG91YmxlQ29tcAogLm9wMU5vdEludE9wMk5vdEludDoKICAgICBidHB6IHQxLCB0YWdU
eXBlTnVtYmVyLCAuc2xvdwogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBmcDJkIHQx
LCBmdDEKKyAgICBmcDJkIHQxLCBmdDEgIyBtbGFtIEZJWE1FCiAub3AxTm90SW50UmVhZHk6CiAg
ICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MAotICAgIGZwMmQgdDAsIGZ0MAorICAgIGZwMmQgdDAs
IGZ0MCAjIG1sYW0gRklYTUUKICAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdl
dCkKICAgICBkaXNwYXRjaCg0KQogCkBAIC0xMzA0LDcgKzE0NDcsNyBAQCBtYWNybyBjb21wYXJl
KGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAgICAgY2kyZCB0MCwgZnQwCiAgICAgYnRweiB0
MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAg
ZnAyZCB0MSwgZnQxCisgICAgZnAyZCB0MSwgZnQxICMgbWxhbSBGSVhNRQogICAgIGRvdWJsZUNv
bXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQogICAgIGRpc3BhdGNoKDQpCiAKQEAgLTEzMjIs
MTMgKzE0NjUsMTYgQEAgX2xsaW50X29wX3N3aXRjaF9pbW06CiAgICAgbG9hZGlzIDI0W1BCLCBQ
QywgOF0sIHQyCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSkKKyAgICBtbGFtRHVtcCB0MQogICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVs
aSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRv
IHBlZXBob2xlIHRoaXMhCiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlh
dGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRw
IHQzLCB0MgogICAgIGJwYiB0MSwgdGFnVHlwZU51bWJlciwgLm9wU3dpdGNoSW1tTm90SW50Cisg
ICAgbWxhbUJyZWFrCiAgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQxCisgICAg
bWxhbUR1bXAgdDEKICAgICBiaWFlcSB0MSwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9h
ZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qy
XSwgdDMKICAgICBsb2FkaXMgW3QzLCB0MSwgNF0sIHQxCkBAIC0xMzk0LDI2ICsxNTQwLDQ1IEBA
IF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK21hY3JvIGNhbGxUYXJn
ZXRGdW5jdGlvbihjYWxsTGlua0luZm8pCisgICAgaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxK
U0Z1bmN0aW9uIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtjYWxsTGlua0lu
Zm9dICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICBlbHNl
CisgICAgICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxM
aW5rSW5mb10gICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0OworICAg
ICAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFu
ZCBnbyB0aGVyZToKKyAgICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3Rv
ICpwYzsKKyAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZGlzcGF0Y2hBZnRlckNhbGwoKTsKKyAgICBlbmQKK2VuZAor
CisKIG1hY3JvIGRvQ2FsbChzbG93UGF0aCkKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAot
ICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86
OmNhbGxlZVt0MV0sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDMpCi0gICAg
YnBuZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmNJZDx0MD4gPSBwY1sxXTsK
KyAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjYWxsTGlua0luZm88dDE+ID0gcGNbNF07CisgICAgbG9hZHAgTExJbnRDYWxs
TGlua0luZm86OmNhbGxlZVt0MV0sIHQyICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVlPHQy
PiA9IGNhbGxMaW5rSW5mbzx0MT4uY2FsbGVlOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDAsIHQzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWQoZnVuY0lkPHQwPiA9
PT4gZnVuYzx0Mz4sIC4uLik7CisgICAgYnBuZXEgdDMsIHQyLCAub3BDYWxsU2xvdyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGZ1bmM8dDM+ICE9IGNhbGxlZTx0Mj4g
aS5lLiBpc0J5dGVjb2RlKCk/KSBnb3RvIC5zbG93OwogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhd
LCB0MwotICAgIGFkZGkgNiwgUEMKLSAgICBsc2hpZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIsIHQz
Ci0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKLSAgICBzdG9yZXAg
dDIsIENhbGxlZVt0M10KLSAgICBzdG9yZXAgdDAsIFNjb3BlQ2hhaW5bdDNdCi0gICAgbG9hZGlz
IDE2IC0gNDhbUEIsIFBDLCA4XSwgdDIKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXQotICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQotICAgIHN0b3Jl
aSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgbW92ZSB0MywgY2Zy
Ci0gICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCi0gICAg
ZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGFkZGkgNiwgUEMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvaW50IFBDIHRvIHRoZSByZXR1cm4gYWRk
cmVzcy4KKworICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwgMzsgIC8v
IG9mZnNldCA9IHNpemVvZiBjdXJyZW50IGZyYW1lOworICAgIGxzaGlmdGkgMywgdDMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBv
ZmZzZXQ8dDM+IDw8IDM7CisgICAgYWRkcCBjZnIsIHQzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+ID0gb2Zmc2V0TXQzPiArIGNm
cjsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIG5ld0ZyYW1lOgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fc2NvcGVDaGFpblt0Ml0sIHQwICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQw
PiA9IGNhbGxlZTx0Mj4uc2NvcGVDaGFpbjsKKyAgICBzdG9yZXAgdDIsIENhbGxlZVt0M10gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVl
ID0gY2FsbGVlPHQyPjsKKyAgICBzdG9yZXAgdDAsIFNjb3BlQ2hhaW5bdDNdICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0MD4uU2NvcGVDaGFpbiA9IHNjb3Bl
PHQwPjsKKyAgICBsb2FkaXMgMTYgLSA0OFtQQiwgUEMsIDhdLCB0MiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBudW1BcmdzPHQyPiA9IC4uLjsKKyAgICBzdG9yZWkgUEMsIEFyZ3Vt
ZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJndW1l
bnRDb3VudC5UYWcgPSBwYzsgLy8gU3Rhc2ggdGhlIHJldHVybiBQQy4KKyAgICBzdG9yZXAgY2Zy
LCBDYWxsZXJGcmFtZVt0M10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdG
cmFtZTx0Mz4uQ2FsbGVyRnJhbWUgPSBjZnI7CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50
ICsgUGF5bG9hZE9mZnNldFt0M10gICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkFyZ3Vt
ZW50Q291bnQuUGF5bG9hZCA9IG51bUFyZ3M8dDI+OworICAgIG1vdmUgdDMsIGNmciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1l
PHQzPjsKKworICAgIC8vIENhbGwgdGhlIHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0
aG9kOgorICAgICMgbWxhbSBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdl
dFt0MV0gICAgICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvPHQxPi5tYWNoaW5lQ29kZVRhcmdldDsK
KyAgICAjIG1sYW0gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0
MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbFRhcmdldEZ1bmN0aW9uKGNh
bGxMaW5rSW5mbzx0MT4pOwogCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwoNiwg
c2xvd1BhdGgpCkBAIC0xNTcyLDM1ICsxNzM3LDczIEBAIF9sbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lOgogICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklU
J3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQxCiAgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0s
IHQwCi0gICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisg
ICAgIyBtbGFtIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
ICAgIGluZGlyZWN0SnVtcChKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3Qx
XSkKIAogCiBfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKICAgICBwcmVzZXJ2
ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCiAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xv
YmFsRGF0YVtzcF0sIHQxCiAgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJv
d1t0MV0sIHQwCi0gICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3db
dDFdCisgICAgIyBtbGFtIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
W3QxXQorICAgIGluZGlyZWN0SnVtcChKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXSkKIAogCiBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0
VG9GdW5jdGlvbikKICAgICBzdG9yZXAgMCwgQ29kZUJsb2NrW2Nmcl0KLSAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhICsgOFtzcF0sIHQwCi0gICAgc3RvcmVwIGNmciwgSlNHbG9i
YWxEYXRhOjp0b3BDYWxsRnJhbWVbdDBdCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAK
LSAgICBsb2FkcCBTY29wZUNoYWluW3QwXSwgdDEKLSAgICBzdG9yZXAgdDEsIFNjb3BlQ2hhaW5b
Y2ZyXQotICAgIHBlZWsgMCwgdDEKLSAgICBzdG9yZXAgdDEsIFJldHVyblBDW2Nmcl0KLSAgICBt
b3ZlIGNmciwgdDUgICMgdDUgPSByZGkKLSAgICBzdWJwIDE2IC0gOCwgc3AKLSAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdDQgIyB0NCA9IHJzaQotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0
YWJsZVt0NF0sIHQxCi0gICAgbW92ZSB0MCwgY2ZyICMgUmVzdG9yZSBjZnIgdG8gYXZvaWQgbG9h
ZGluZyBmcm9tIHN0YWNrCi0gICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0K
LSAgICBhZGRwIDE2IC0gOCwgc3AKLSAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
ICsgOFtzcF0sIHQzCisKKyAgICBpZiBYODYgIyBtbGFtCisgICAgICAgIC8vIFNldCBnbG9iYWxE
YXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YSArIDhbc3BdLCB0MCAgICAgLy8gZ2xvYmFsRGF0YTx0MD4gPSBqaXRT
dGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERh
dGE6OnRvcENhbGxGcmFtZVt0MF0gICAgICAvLyBnbG9iYWxEYXRhPHQwPi50b3BDYWxsRnJhbWUg
PSBjZnI7CisKKyAgICAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbGVyRnJhbWU8dDA+ID0gY2ZyLkNhbGxlckZyYW1lOworICAgICAgICBs
b2FkcCBTY29wZUNoYWluW3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZTx0
MT4gPSBjYWxsZXJGcmFtZTx0MD4uU2NvcGVDaGFpbjsKKyAgICAgICAgc3RvcmVwIHQxLCBTY29w
ZUNoYWluW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4gPSBzY29w
ZTx0MT47CisKKyAgICAgICAgcGVlayAwLCB0MQorICAgICAgICBzdG9yZXAgdDEsIFJldHVyblBD
W2Nmcl0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDE+OworICAg
ICAgICBtb3ZlIGNmciwgdDUgICMgdDUgPSByZGkKKyAgICAgICAgc3VicCAxNiAtIDgsIHNwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZSBzdGFjayBzcGFjZS4KKyAg
ICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQ0ICMgdDQgPSByc2kgICAgICAgICAgICAgICAgLy8g
Y2FsbGVlPHQ0PiA9IGNmci5DYWxsZWU7CisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhl
Y3V0YWJsZVt0NF0sIHQxICAgICAgICAgIC8vIGV4ZWN1dGFibGU8dDE+ID0gY2FsZWU8dDQ+LmV4
ZWN1dGFibGU7CisgICAgICAgIG1vdmUgdDAsIGNmciAjIFJlc3RvcmUgY2ZyIHRvIGF2b2lkIGxv
YWRpbmcgZnJvbSBzdGFjayAgLy8gY2ZyID0gY2FsbGVyRnJhbWU8dDA+OworICAgICAgICBjYWxs
IGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAgICAgICAgICAgICAvLyBDYWxsIHRoZSBl
eGVjdXRhYmxlOworICAgICAgICBhZGRwIDE2IC0gOCwgc3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBSZWxlYXNlIHN0YWNrIHNwYWNlLgorICAgICAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhICsgOFtzcF0sIHQzICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IGpp
dFN0YWNrRnJhbWU8c3A+Lmdsb2JhbERhdGE7CisKKyAgICBlbHNpZiBBUk12NworICAgICAgICBl
cnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3QgaW1w
bGVtZW50ZWQgeWV0LgorCisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIGxvYWRwIENhbGxlckZy
YW1lW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlckZyYW1lPHQwPiA9IGNm
ci5DYWxsZXJGcmFtZTsKKyAgICAgICAgbG9hZHAgU2NvcGVDaGFpblt0MF0sIHQxICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVyRnJhbWU8dDA+LlNjb3BlQ2hhaW47
CisgICAgICAgIHN0b3JlcCB0MSwgU2NvcGVDaGFpbltjZnJdICAgICAgICAgICAgICAgICAgICAg
IC8vIGNmci5TY29wZUNoYWluID0gc2NvcGU8dDE+OworCisgICAgICAgIC8vIFNldCBnbG9iYWxE
YXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRT
dGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERh
dGE6OnRvcENhbGxGcmFtZVt0M10gICAgICAvLyBnbG9iYWxEYXRhPHQzPi50b3BDYWxsRnJhbWUg
PSBjZnI7CisKKyAgICAgICAgbW92ZSB0MCwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2F2ZWRDYWxsZXJGcmFtZTx0Mj4gPSBjYWxsZXJGcmFtZTx0MD47CisgICAg
ICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MykgICAgICAgICAgICAgIC8vIHNh
dmVkUmV0dXJuUEM8dDM+ID0gcmV0dXJuUEM7CisgICAgICAgIHN0b3JlcCB0MywgUmV0dXJuUENb
Y2ZyXSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0Mz47CisgICAg
ICAgIC8vIFBhc3MgY3VycmVudEZyYW1lIGFzIGFuIGFyZyB0byB0aGUgdGFyZ2V0OgorICAgICAg
ICBtb3ZlIGNmciwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcw
OiBhcmcwPHQwPiA9IGNmcjsKKyAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCByMCA9
IGN1cnJlbnRGcmFtZSwgY2ZyID0gb2xkRnJhbWU6IFdoeT8/PworICAgICAgICBsb2FkcCBDYWxs
ZWVbY2ZyXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqc2Z1bmM8dDE+ID0gY2Zy
LkNhbGxlZTsKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEg
ICAgICAgICAgLy8gYXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7
CisgICAgICAgIG1vdmUgdDIsIGNmciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNmciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OworICAgICAgICBjeHhDYWxsTmF0aXZlIGV4
ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAgICAvLyBjYWxsIGV4ZWN1dGFibGU8dDE+LkNh
bGxPckNvbnN0cnVjdDsKKworICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bih0MykgICAgICAgICAgICAvLyByZXR1cm5QQyA9IHNhdmVkUmV0dXJuUEM8dDM+OworICAgICAg
ICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAgICAvLyBnbG9i
YWxEYXRhPHQzPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2JhbERhdGE7CisgICAgZWxzZQorICAg
ICAgICBlcnJvcgorICAgIGVuZAorCiAgICAgYnRwbnogSlNHbG9iYWxEYXRhOjpleGNlcHRpb25b
dDNdLCAuZXhjZXB0aW9uCi0gICAgcmV0CisgICAgZG9OYXRpdmVSZXR1cm4oKQorICAgIAogLmV4
Y2VwdGlvbjoKICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDEpCiAgICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwpAQCAtMTYwOSw2ICsxODEyLDcg
QEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZgogICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MAogICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFs
RGF0YTo6dG9wQ2FsbEZyYW1lW3QwXQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdGhyb3dfZnJv
bV9uYXRpdmVfY2FsbCkKLSAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1w
b2xpbmUKKyAgICAjIG1sYW0gam1wIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lCisgICAganVtcFRvR2x1ZShfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZSkKIGVuZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTExMCwyMSArMTEwLDQzIEBAIGVuZAogCiAjIFNvbWUgY29tbW9uIHV0aWxpdGllcy4KIG1hY3Jv
IGNyYXNoKCkKLSAgICBzdG9yZWkgdDAsIDB4YmJhZGJlZWZbXQotICAgIG1vdmUgMCwgdDAKLSAg
ICBjYWxsIHQwCisgICAgLy8gbWFjcm8gY3Jhc2goKSB7CisgICAgaWYgQ19MT09QCisgICAgICAg
IGN4eENyYXNoCisgICAgZWxzZQorICAgICAgICBzdG9yZWkgdDAsIDB4YmJhZGJlZWZbXQorICAg
ICAgICBtb3ZlIDAsIHQwCisgICAgICAgIGNhbGwgdDAKKyAgICBlbmQKKyAgICAvLyB9IEVORCBj
cmFzaC4KIGVuZAogCiBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQogICAgIGlmIEFTU0VSVF9FTkFC
TEVECisgICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgICAgICBhc3NlcnRpb24o
Lm9rKQogICAgICAgICBjcmFzaCgpCiAgICAgLm9rOgorICAgIC8vIH0gRU5EIGFzc2VydC4KKyAg
ICBlbmQKK2VuZAorCittYWNybyBpbmRpcmVjdEp1bXAodGFyZ2V0KQorICAgIGlmIENfTE9PUAor
ICAgICAgICBjeHhJbmRpcmVjdEp1bXAgdGFyZ2V0CisgICAgZWxzZQorICAgICAgICBqbXAgdGFy
Z2V0CiAgICAgZW5kCiBlbmQKIAogbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KGRlc3RpbmF0aW9uUmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4KKyAg
ICBpZiBDX0xPT1AKKyAgICAgICAgIyBJbiBvdXIgY2FzZSwgd2UncmUgb25seSBwcmVzZXJ2aW5n
IHRoZSBieXRlY29kZSB2UEMuIAorICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVy
CisgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAgICoqKiBtbGFtIDo6IEdldHRpbmcgUmV0dXJu
UEMgJXAgKioqXG4iLCByUmV0VlBDLnUudnApOworICAgICAgICBtbGFtRG8gLy8gQVNTRVJUKHJS
ZXRWUEMudS52cCAhPSAwKTsKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBtb3ZlIGxyLCBkZXN0
aW5hdGlvblJlZ2lzdGVyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl82NAogICAgICAgICBwb3AgZGVz
dGluYXRpb25SZWdpc3RlcgpAQCAtMTM0LDcgKzE1NiwxMyBAQCBtYWNybyBwcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwoZGVzCiBlbmQKIAogbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVH
SU4gICAgCisgICAgaWYgQ19MT09QCisgICAgICAgICMgSW4gb3VyIGNhc2UsIHdlJ3JlIG9ubHkg
cmVzdG9yaW5nIHRoZSBieXRlY29kZSB2UEMuIAorICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVy
LCBscgorICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICAqKiogbWxhbSA6OiBTZXR0aW5nIFJl
dHVyblBDICVwICoqKlxuIiwgclJldFZQQy51LnZwKTsKKyAgICAgICAgbWxhbURvIC8vIEFTU0VS
VChyUmV0VlBDLnUudnAgIT0gMCk7CisgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbW92ZSBzb3Vy
Y2VSZWdpc3RlciwgbHIKICAgICBlbHNpZiBYODYgb3IgWDg2XzY0CiAgICAgICAgIHB1c2ggc291
cmNlUmVnaXN0ZXIKQEAgLTE1NCw3ICsxODIsMTMgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFk
dmFuY2UsIHNsb3dQYXRoKQogICAgICAgICBhZHZhbmNlLAogICAgICAgICBzbG93UGF0aCwKICAg
ICAgICAgbWFjcm8gKGNhbGxlZSkKLSAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAg
ICBpZiBDX0xPT1AKKyAgICAgICAgICAgICAgICBjeHhDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0
YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKKyAgICAgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50
Q291bnQuVGFnOyAgZ290byAqcGM7CiAgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAg
ICAgICAgIGVuZCkKIGVuZApAQCAtMTc3LDcgKzIxMSw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9K
SVRGb3JFcGlsb2d1ZSgpCiBlbmQKIAogbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCi0g
ICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsIG9rIGVuZCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKSAvLyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpOwogZW5kCiAKIG1hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9j
a0dldHRlcih0YXJnZXRSZWdpc3RlcikKQEAgLTIwNCwzMiArMjM4LDU3IEBAIG1hY3JvIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVIKICAgICAjIE5vdGhpbmcgdG8gZG8hCiBlbmQK
IAorIyBtbGFtIEJFR0lOCittYWNybyBqdW1wVG9HbHVlKGdsdWVDb2RlVGFyZ2V0KQorICAgIGlm
IChDX0xPT1ApCisgICAgICAgIGN4eEp1bXBUb0dsdWUgZ2x1ZUNvZGVUYXJnZXQKKyAgICBlbHNl
CisgICAgICAgIGptcCBnbHVlQ29kZVRhcmdldAorICAgIGVuZAorZW5kCisjIG1sYW0gRU5ECisK
ICMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAg
dGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBw
cm9sb2d1ZSBlbnRyeSBPU1IuCiBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCi0gICAgcHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIG1sYW1EbyAvLyBwcmludGYoIlxuXG4gICA9PT09
PT09PT09PT09PT09PT09PT09PT09PSBcbiAgICoqKiBtbGFtIDo6IEluIHByb2xvZ3VlICoqKlxu
Iik7CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKSAgICAgICAgICAgICAg
ICAgIC8vIGdldCByZXR1cm5QQzx0Mj47CiAgICAgCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJh
bWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCi0gICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tj
ZnJdCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0Mj47CiAgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKICAg
ICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1BhdGgpCiAgICAgZW5kCi0gICAgY29kZUJsb2Nr
R2V0dGVyKHQxKQorICAgIGNvZGVCbG9ja0dldHRlcih0MSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnZXQgY29kZUJsb2NrPHQxPjsKICAgICBpZiBKSVRfRU5BQkxFRAogICAg
ICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBFeGVjdXRp
b25Db3VudGVyOjptX2NvdW50ZXJbdDFdLCAuY29udGludWUKICAgICAgICAgY0NhbGwyKG9zclNs
b3dQYXRoLCBjZnIsIFBDKQorCisgICAgICAgICMgVXBkYXRlIHRoZSBjdXJyZW50RnJhbWVQb2lu
dGVyOgogICAgICAgICBtb3ZlIHQxLCBjZnIKKworICAgICAgICAjIHQwIG11c3QgZWl0aGVyIGJl
IDAgb3IgcG9pbnRzIHRvIGV4ZWN1dGFibGUgY29kZSBlLmcuIEpJVHRlZCBjb2RlLgorICAgICAg
ICAjIElmIGl0IGlzIDAsIHRoZW4gd2UgZG9uJ3QgaGF2ZSBhIG5hdGl2ZSBjb2RlIHRhcmdldCB0
byBleGVjdXRlLgorICAgICAgICAjIEdvIHJlY292ZXIgb3VyIHN0YXRlIGFuZCBzdGFydCBpbnRl
cnByZXRpbmcgdGhpcyBmdW5jdGlvbi4KICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKworICAg
ICAgICAjIElmIGl0IGlzIG5vdCAwLCB0aGVuLCB3ZSBoYXZlIGEgbmF0aXZlIGZ1bmN0aW9uIHRv
IGNhbGwgKEpJVHRlZCBvcgorICAgICAgICAjIG90aGVyd2lzZSkuIERvIGEgdGFpbGNhbGwgdG8g
dGhlIHRhcmdldCBjb2RlLgogICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgogICAgICAg
ICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKICAgICAgICAgam1wIHQwCisK
KyAgICAgICAgIyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgb3NyIGxvZ2ljIGhhcyBkZXRlcm1p
bmVkIHRoYXQgdGhlcmUgaXNuJ3QgYW55CisgICAgICAgICMgSklUdGVkIGNvZGUgdG8gaW52b2tl
IGF0IHRoaXMgdGltZS4gIFJlZmV0Y2ggdGhlIGN1cnJlbnQgY29kZWJsb2NrIChhcworICAgICAg
ICAjIGl0IG1heSBoYXZlIGNoYW5nZWQpLCBhbmQgZmFsbCB0aHJ1IHRvIC5jb250aW51ZSB0byBn
byBpbnRlcnByZXQgdGhlCisgICAgICAgICMgZnVuY3Rpb24uCiAgICAgLnJlY292ZXI6CiAgICAg
ICAgIGNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CiAgICAgZW5kCiAgICAgY29k
ZUJsb2NrU2V0dGVyKHQxKQogICAgIAotICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICAjIFNldCB1
cCB0aGUgUEMuICBUaGUgY2FsbGVyIHdpbGwgZGlzcGF0Y2gvanVtcCB0byB0aGlzIGJ5dGVjb2Rl
IFBDIGFkZHIuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNbdDFdLCBQQgogICAgICAgICBtb3ZlIDAsIFBDCkBAIC0yODksNyArMzQ4LDcg
QEAgZW5kCiAKIG1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xh
c3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93
Q2FzZSkKICAgICBpZiBBTFdBWVNfQUxMT0NBVEVfU0xPVwotICAgICAgICBqbXAgc2xvd0Nhc2UK
KyAgICAgICAgam1wIHNsb3dDYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgZ290byAuc2xvd0Nhc2U7CiAgICAgZWxzZQogICAgICAgICBjb25zdCBvZmZzZXRP
Zk15U2l6ZUNsYXNzID0KICAgICAgICAgICAgIEpTR2xvYmFsRGF0YTo6aGVhcCArCkBAIC0zMDMs
MzIgKzM2Miw0NSBAQCBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAg
ICAgICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUxpc3Q6OmhlYWQKIAogICAgICAgICAjIEZJWE1F
OiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4K
LSAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCi0gICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJs
b2NrPGE0PiA9IGNmci5Db2RlQmxvY2s7CisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEgICAvLyAgIGdsb2JhbERhdGE8YTQ+ID0gY29kZUJs
b2NrPGE0Pi5nbG9iYWxEYXRhOwogICAgICAgICAKLSAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBm
cm9tIHRoZSBmcmVlIGxpc3QuICAgCi0gICAgICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3Mg
KyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKLSAgICAgICAgYnRweiBy
ZXN1bHQsIHNsb3dDYXNlCisgICAgICAgIC8vIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUg
bGlzdC4gICAKKyAgICAgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9mRmly
c3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdCAvLyAgIHJlc3VsdDxhMz4gPSBnbG9iYWxEYXRh
PGE0Pi5NeVNpemVDbGFzcy5GaXJzdEZyZWVDZWxsOworICAgICAgICBidHB6IHJlc3VsdCwgc2xv
d0Nhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoIXJlc3VsdDxhMz4g
aS5lLiBubyBmcmVlIGNlbGwpIGdvdG8gLnNsb3dDYXNlOwogICAgICAgICAKLSAgICAgICAgIyBS
ZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCi0gICAgICAgIGxvYWRwIFtyZXN1
bHRdLCBzY3JhdGNoMgotICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xh
c3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgICAgIC8vIFJlbW92ZSB0
aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNj
cmF0Y2gyICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbmV4dDxhNT4gPSByZXN1bHQ8
YTM+LnB0cjsKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsg
b2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSAvLyAgIGdsb2JhbERhdGE8YTQ+Lk15U2l6
ZUNsYXNzLkZpcnN0RnJlZUNlbGwgPSBuZXh0PGE1PjsKICAgICAKLSAgICAgICAgIyBJbml0aWFs
aXplIHRoZSBvYmplY3QuCi0gICAgICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0s
IHNjcmF0Y2gyCi0gICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KLSAgICAgICAgc3Rv
cmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCi0gICAgICAgIHN0b3Jl
cCAwLCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRj
aDFdLCBzY3JhdGNoMiAgICAgICAgICAgLy8gICBjbGFzc0luZm88YTU+ID0gZ2xvYmFsRGF0YTxh
ND4uY2xhc3NJbmZvT2Zmc2V0OworICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+LnB0ciA9IGNsYXNzSW5mbzxh
NT47CisgICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0
XSAgICAgICAvLyAgIHJlc3VsdDxhMz4uc3RydWN0dXJlID0gc3RydWN0dXJlPGEyPjsKKyAgICAg
ICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XSAgICAgIC8v
ICAgcmVzdWx0PGEzPi5vdXRPZkxpbmVTdG9yYWdlID0gMDsKICAgICBlbmQKIGVuZAogCiBtYWNy
byBkb1JldHVybigpCi0gICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKLSAgICBsb2FkcCBDYWxs
ZXJGcmFtZVtjZnJdLCBjZnIKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRm
KCJcbiBtbGFtIDo6IFBSSU5UIGRvUmV0dXJuKCkgfCByZXR1cm5QQzx0Mj4gPSBjZnIuUmV0dXJu
UEM7XG5cbiIpOworICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmV0dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDOworICAgIGxvYWRw
IENhbGxlckZyYW1lW2Nmcl0sIGNmciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Zy
ID0gY2ZyLkNhbGxlckZyYW1lOwogICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJu
KHQyKQotICAgIHJldAorICAgIG1sYW1EbyAvLyBwcmludGYoIm1sYW0gTExJTlQgZG9SZXR1cm5c
biIpOworICAgIHJldF9tbGFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZG8gcmV0dXJuOwogZW5kCiAKKyMgbWxhbSBCRUdJTgorbWFjcm8gZG9OYXRp
dmVSZXR1cm4oKQorICAgIGlmIENfTE9PUAorICAgICAgICAjIG1sYW0gbG9hZHAgUmV0dXJuUENb
Y2ZyXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5QQzx0Mj4g
PSBjZnIuUmV0dXJuUEM7CisgICAgICAgICMgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCisgICAg
ICAgIGN4eE5hdGl2ZVJldHVybgorICAgIGVsc2UKKyAgICAgICAgcmV0X21sYW0KKyAgICBlbmQK
K2VuZAorIyBtbGFtIEVORAogCiAjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCiBf
bGxpbnRfYmVnaW46CkBAIC0zMzYsMTYgKzQwOCwyMCBAQCBfbGxpbnRfYmVnaW46CiAKIAogX2xs
aW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJp
bnRmKCJcbiAqKioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9wcm9ncmFtX3Byb2xv
Z3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RG
dW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiAKIAogX2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAg
bWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioqKioqKioq
KioqKiBtbGFtIF9sbGludF9ldmFsX3Byb2xvZ3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiAKIAog
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIG1sYW1EbyAvLyBwcmludGYo
IlxuXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG4g
ICAqKiogbWxhbSA6OiBJbiBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSAqKipcbiIp
OworICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioq
KioqKioqKioqKiogbWxhbSBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWVcblxuIik7
CiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQogLmZ1bmN0aW9uRm9yQ2FsbEJlZ2lu
OgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKQEAgLTM1Myw2ICs0MjksNyBAQCBfbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CiAgICAgCiAKIF9sbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHBy
aW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZVxuXG4iKTsKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCiAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKICAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDEpCkBAIC0zNjAsMTEgKzQzNywxNCBAQCBfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKICAgICAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrOgorICAgIG1sYW1EbyAvLyBwcmludGYoIlxuXG4gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG4gICAqKiogbWxhbSA6OiBJbiBs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayAqKipcbiIpOworICAgIG1sYW1EbyAv
LyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxh
bSBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tcblxuIik7CiAgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRf
dHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKICAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0
aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIAogCiBf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBtbGFtRG8gLy8g
aWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0g
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tcblxuIik7CiAgICAgcHJv
bG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlv
bkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9zbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCiAKQEAgLTQ4Nyw2ICs1NjcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV93aXRoX3RoaXM6CiAKIAogbWFjcm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIHdp
dGhJbmxpbmVTdG9yYWdlXG4iKTsKICAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVjdCBpcyB0
aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCiAgICAgIyBwcm9wZXJ0eSBzdG9yYWdl
IHJlZ2lzdGVyIGlzIHVudXNlZC4KICAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9wZXJ0eVN0
b3JhZ2UpCkBAIC01MzUsNiArNjE2LDcgQEAgX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKICAgICBu
b3AKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8v
IGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG5cbiIpOwogICAgIGp1bXBUcnVlT3JGYWxzZSgK
ICAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAog
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2p0cnVlKQpAQCAtNTQ0LDYgKzYyNiw3IEBAIF9sbGlu
dF9vcF9sb29wX2lmX2ZhbHNlOgogICAgIG5vcAogX2xsaW50X29wX2pmYWxzZToKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG5c
biIpOwogICAgIGp1bXBUcnVlT3JGYWxzZSgKICAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfamZhbHNl
KQpAQCAtNTU5LDYgKzY0MiwxMyBAQCBfbGxpbnRfb3Bfamxlc3M6CiAgICAgICAgIF9sbGludF9z
bG93X3BhdGhfamxlc3MpCiAKIAorLy8gYnl0ZWNvZGU6IGpubGVzcyBzcmMxKHIpIHNyYzIocikg
dGFyZ2V0KG9mZnNldCkKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMg
bGVzcyB0aGFuIHJlZ2lzdGVyIHNyYzIsIGFzCisvLyAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJzwn
IG9wZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0byBvZmZzZXQKKy8vICAgdGFyZ2V0IGZyb20gdGhl
IGN1cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlmIHRoZSAKKy8vICAgcmVzdWx0IG9m
IHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLgorCiBfbGxpbnRfb3Bfam5sZXNzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBjb21wYXJlKApAQCAtNjM5LDYgKzcyOSwxNSBAQCBfbGxpbnRfb3Bf
bmV3X2Z1bmNfZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorLy8gYnl0ZWNvZGU6IGNhbGwgZnVu
YyhyKSBhcmdDb3VudChuKSByZWdpc3Rlck9mZnNldChuKQorLy8KKy8vICAgUGVyZm9ybSBhIGZ1
bmN0aW9uIGNhbGwuCisvLyAgICAgICAgICAgCisvLyAgIHJlZ2lzdGVyT2Zmc2V0IGlzIHRoZSBk
aXN0YW5jZSB0aGUgY2FsbEZyYW1lIHBvaW50ZXIgc2hvdWxkIG1vdmUKKy8vICAgYmVmb3JlIHRo
ZSBWTSBpbml0aWFsaXplcyB0aGUgbmV3IGNhbGwgZnJhbWUncyBoZWFkZXIuCisvLyAgICAgICAg
ICAgCisvLyAgIGRzdCBpcyB3aGVyZSBvcF9yZXQgc2hvdWxkIHN0b3JlIGl0cyByZXN1bHQuCisK
IF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBkb0NhbGwoX2xsaW50
X3Nsb3dfcGF0aF9jYWxsKQpAQCAtNzY0LDEwICs4NjMsMTIgQEAgX2xsaW50X29wX2RlYnVnOgog
CiAKIF9sbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lOgorICAgIG1sYW1EbyAvLyBpZiAobWxh
bV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZVxuXG4iKTsKICAgICBuYXRpdmVDYWxsVHJhbXBvbGluZShO
YXRpdmVFeGVjdXRhYmxlOjptX2Z1bmN0aW9uKQogCiAKIF9sbGludF9uYXRpdmVfY29uc3RydWN0
X3RyYW1wb2xpbmU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAq
KioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1w
b2xpbmVcblxuIik7CiAgICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZlRXhlY3V0YWJsZTo6
bV9jb25zdHJ1Y3RvcikKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDggKzMxLDYyMiBAQAogI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAorLy8gbWxhbSBCRUdJTgorI2lmIEVO
QUJMRShMTElOVF9DX0xPT1ApCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMTGludFNsb3dQYXRocy5oIgorI2luY2x1ZGUgIlZNSW5z
cGVjdG9yLmgiIC8vIG1sYW0KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCit1c2luZyBu
YW1lc3BhY2UgSlNDOjpMTEludDsKKworLy8gVGhlIHNoYXBlIG9mIG9wY29kZXMKKy8vID09PT09
PT09PT09PT09PT09PT09CisvLyBJbiB0aGUgTExJbnQgc3lzdGVtLCBvcGNvZGVzIG1hbmlmZXN0
IGluIHZhcmlvdXMgZm9ybXMgdGhhdCB3b3JrIHRvZ2V0aGVyLgorLy8gVGhlc2UgZm9ybXMgYXJl
OgorLy8gICAxLiBUaGUgZW51bWVyYXRpb24KKy8vICAgICAgPT09PT09PT09PT09PT09CisvLyAg
ICAgIEJ5dGVjb2RlIG9wY29kZXMgYXJlIGVudW1lcmF0ZWQgYXMgT3Bjb2RlSUQncyBpbiBieXRl
Y29kZS9PcGNvZGUuaAorLy8KKy8vICAgICAgVGhlIExMaW50IHVzZXMgc29tZSBoZWxwZXIgZ2x1
ZSBjb2RlLiAgV2l0aCB0aGUgQyBsb29wIGludGVycHJldGVyLAorLy8gICAgICB3ZSBuZWVkIHRv
IHJlcHJlc2VudCB0aGVzZSBoZWxwZXIgZ2x1ZSBjb2RlIGFzIHBzZXVkbyBvcGNvZGUgaGFuZGxl
cnMKKy8vICAgICAgYXMgd2VsbCB0byBhbGxvdyB1cyB0byBlbXBsb3kgYSB1bmlmaWVkIGRpc3Bh
dGNoIG1lY2hhbmlzbSB0byBpbnZva2UKKy8vICAgICAgdGhlc2UgaGVscGVycyBhcyB3ZSBkbyB3
aXRoIG9wY29kZSBoYW5kbGVycy4gIEhlbmNlLCB3aXRoIHRoZSBDIGxvb3AsCisvLyAgICAgIHdl
IGFjY2VzcyBuZWVkIHRvIHByZXNlbnQgdGhlIGdsdWUgY29kZSBhcyBwc2V1ZG8gb3Bjb2RlcyBh
cyB3ZWxsLgorLy8gICAgICBUaGVzZSBhcmUgZW51bWVyYXRlZCBhcyBMTGludE9wY29kZUlEJ3Mg
aW4gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oLgorLy8KKy8vICAgICAgTk9URTogVGhlIE9w
Y29kZUlEcyBhcmUgdXNlZCBpbiBDb2RlQmxvY2tzIGdlbmVyYXRlZCBieSB0aGUKKy8vICAgICAg
Qnl0ZWNvZGVDb21waWxlciwgYnV0IHRoZSBMTEludE9wY29kZUlEcyBuZXZlciB3aWxsLiAgTExJ
bnRPcGNvZGVJRHMKKy8vICAgICAgYXJlIG9ubHkgdXNlZCBpbiB0aGUgaW50ZXJuYWwgcGx1bWJp
bmcgb2YgdGhlIGludGVycHJldGVyLgorLy8KKy8vICAgMi4gVGhlIGhhbmRsZXIKKy8vICAgICAg
PT09PT09PT09PT0KKy8vICAgICAgVWx0aW1hdGVseSwgdGhlIGludGVycHJldGVyIG5lZWRzIHRv
IGRpc3BhdGNoIHRvIHNvbWUgaGFuZGxlciBjb2RlIHRvCisvLyAgICAgIGV4ZWN1dGUgdGhlIGFj
dGlvbnMgb2YgdGhlIG9wY29kZSAob3IgcHNldWRvIG9wY29kZSkuICBUaGUgaGFuZGxlcnMKKy8v
ICAgICAgYXJlIHByZXNlbnRlZCBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczoKKy8vCisv
LyAgICAgIGEuIGdsb2JhbCBsYWJlbHMgd2hlbiB3ZSBjYW4gdXNlIGNvbXB1dGVkIGdvdG9zLgor
Ly8gICAgICBiLiBjYXNlIHN0YXRlbWVudHMgaW4gYSBDIHN3aXRjaCB3aGVuIHdlIGNhbm5vdCB1
c2UgY29tcHV0ZWQgZ290b3MuCisvLworLy8gICAgICBXaGVuIHVzaW5nIHRoZSBBU00gbG9vcCwg
d2Ugd2lsbCB1c2UgY29tcHV0ZWQgZ290b3MuICBUaGVyZSBpcyBubworLy8gICAgICByZWFzb24g
dG8gdXNlIGEgQyBzd2l0Y2ggc3RhdGVtZW50IGluIHRoYXQgY2FzZS4KKy8vCisvLyAgICAgIFdo
ZW4gdXNpbmcgdGhlIEMgbG9vcCwgd2Ugd2lsbCB1c2Ugb25lIG9mIHRoZSBhYm92ZSAyIGZvcm1z
LiAgSW4KKy8vICAgICAgYWRkaXRpb24sIExMSW50IGhlbHBlciBnbHVlIGNvZGUgYXJlIGFsc28g
cmVwcmVzZW50ZWQgYXMgYnl0ZWNvZGUKKy8vICAgICAgaGFuZGxlcnMgKGNvcnJlc3BvbmRpbmcg
dG8gdGhlaXIgcmVzcGVjdGl2ZSBMTEludE9wY29kZUlEcyksIGFuZAorLy8gICAgICBoZW5jZSwg
d2lsbCBiZSBwcmVzZW50ZWQgaW4gb25lIG9mIHRoZSBhYm92ZSAyIGZvcm1zIGFzIHdlbGwuCisv
LworLy8gSG93IGFyZSB0aGUgb3Bjb2RlIGZvcm1zIG5hbWVkPworLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisvLyBIZXJlIGlzIGEgdGFibGUgdG8gc2hvdyBleGFtcGxlcyBvZiBo
b3cgZWFjaCBvZiB0aGUgbWFuaWZlc3RhdGlvbiBvZiB0aGUKKy8vIG9wY29kZXMgYXJlIG5hbWVk
OgorLy8KKy8vICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICBPcGNvZGUgICAgICAgICAg
ICBIZWxwZXIKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09PT0gICAgICAg
ICAgICA9PT09PT0KKy8vICAgTExpbnQgbGFiZWxzOiAgICAgICAgICAgICAgICBsbGludF9vcF9l
bnRlciAgICBsbGludF9wcm9ncmFtX3Byb2xvZ3VlCisvLyAgIE9wY29kZSBlbnVtZXJhdGlvbjog
ICAgICAgICAgb3BfZW50ZXIgICAgICAgICAgb3BfbGxpbnRfcHJvZ3JhbSAoZm9yIEMgbG9vcCBv
bmx5KQorLy8KKy8vICAgVXNpbmcgYSBzd2l0Y2ggc3RhdGVtZW50IGRpc3BhdGNoOgorLy8gICAg
IE9wY29kZSBkaXNwYXRjaCBoYW5kbGVyczogIGNhc2Ugb3BfZW50ZXI6ICAgIGNhc2Ugb3BfbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZTogKGZvciBDIGxvb3Agb25seSkKKy8vICAgVXNpbmcgY29tcHV0
ZWQgZ290bydzOgorLy8gICAgIE9wY29kZSBkaXNwYXRjaCBoYW5kbGVyczogIGhhbmRsZV9vcF9l
bnRlcjogIGhhbmRsZV9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOiAoZm9yIEMgbG9vcCBvbmx5KQor
Ly8KKy8vICAgTExJbnQgZ2x1ZSBoZWxwZXIgZW50cnlwb2ludHM6CisvLyAgICAgQVNNIGxvb3Ag
Z2x1ZSBlbnRyeTogICAgICAgTi9BICAgICAgICAgICAgICAgdm9pZCBsbGludF9wcm9ncmFtX3By
b2xvZ3VlKCk7CisvLyAgICAgQyBsb29wIGdsdWUgZW50cnk6ICAgICAgICAgTi9BICAgICAgICAg
ICAgICAgT3Bjb2RlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWVbMV07CisvLworCisvLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy8vIERlZmluZSB0aGUgb3Bjb2RlIGRpc3BhdGNoIG1lY2hhbmlzbSB3aGVu
IHVzaW5nIHRoZSBDIGxvb3A6CisvLworCisvLyBUaGVzZSBhcmUgZm9yIGJ1aWxkaW5nIGEgQyBM
b29wIGludGVycHJldGVyOgorI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJTgorI2RlZmluZSBPRkZM
SU5FX0FTTV9FTkQKKworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcGNvZGUp
IERFRklORV9PUENPREUob3Bjb2RlKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMp
CisgICAgI2RlZmluZSBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxhYmVsKSAgaGFuZGxlXyMjbGFi
ZWw6CisgICAgI2RlZmluZSBPRkZMSU5FX0FTTV9HRVRfR0xVRV9MQUJFTChsYWJlbCkgICgmJmhh
bmRsZV8jI2xhYmVsKQorI2Vsc2UKKyAgICAvLyBtbGFtICNkZWZpbmUgT0ZGTElORV9BU01fR0xV
RV9MQUJFTChsYWJlbCkgIGNhc2Ugb3BfIyNsYWJlbDoKKyAgICAjZGVmaW5lIE9GRkxJTkVfQVNN
X0dMVUVfTEFCRUwobGFiZWwpICBjYXNlIGxhYmVsOgorICAgIC8vIG1sYW0gI2RlZmluZSBPRkZM
SU5FX0FTTV9HRVRfR0xVRV9MQUJFTChsYWJlbCkgICgmbGFiZWwpCisgICAgI2RlZmluZSBPRkZM
SU5FX0FTTV9HRVRfR0xVRV9MQUJFTChsYWJlbCkgIChsYWJlbCkKKyNlbmRpZgorCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKGxhYmVsKSAgIGxhYmVsOgorCisKKy8qIG1sYW0gVU5V
U0VEPz8/CisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFJlYWxpemUgcHNldWRvIGJ5dGVjb2Rl
IGdsdWU6CisvLworI2RlZmluZSBERUZJTkVfTExJTlRfTkFUSVZFX0hFTFBFUihfX25hbWUpICAg
ICBcCisgICAgSlNDOjpPcGNvZGUgX19uYW1lWzFdOworICAgIEZPUl9FQUNIX0xMSU5UX05BVElW
RV9IRUxQRVIoREVGSU5FX0xMSU5UX05BVElWRV9IRUxQRVIpCisjdW5kZWYgREVGSU5FX0xMSU5U
X05BVElWRV9IRUxQRVIKKyovCisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIExMSW50IHsK
KworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCitzdGF0aWMgZG91YmxlIEludHMyRG91YmxlKHVpbnQz
Ml90IGxvLCB1aW50MzJfdCBoaSkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkdmFs
OworICAgICAgICB1aW50NjRfdCBpdmFsNjQ7CisgICAgfSB1OworICAgIHUuaXZhbDY0ID0gKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihoaSkgPDwgMzIpIHwgbG87CisgICAgcmV0dXJuIHUuZHZhbDsK
K30KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQorCit9IC8vIG5hbWVzcGFjZSBMTGludAor
CisvLyBtbGFtIEJFR0lOIERFQlVHIHV0aWxpdGllcy4gIERvIHdlIHdhbnQgdG8ga2VlcCB0aGVz
ZSBhcm91bmQgaW4gc29tZSBmb3JtPworZXh0ZXJuIGNvbnN0IGNoYXIqIGdldEdsdWVMYWJlbE5h
bWUoTExJbnRPcGNvZGVJRCBvcGNvZGUpOworCitjb25zdCBjaGFyKiBnZXRHbHVlTGFiZWxOYW1l
KExMSW50T3Bjb2RlSUQgb3Bjb2RlKQoreworI2RlZmluZSBDSEVDS19MTElOVF9OQVRJVkVfSEVM
UEVSKF9fbmFtZSkgICAgIFwKKyAgICBpZiAob3Bjb2RlID09IF9fbmFtZSkgcmV0dXJuICNfX25h
bWU7CisgICAgRk9SX0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihDSEVDS19MTElOVF9OQVRJVkVf
SEVMUEVSKQorI3VuZGVmIENIRUNLX0xMSU5UX05BVElWRV9IRUxQRVIKKworICAgIC8vIG1sYW0g
QkVHSU4gREVCVUcgb25seQorI2RlZmluZSBPUENPREVfSURfRU5VTShfX29wY29kZSwgbGVuZ3Ro
KSBcCisgICAgaWYgKG9wY29kZSA9PSBfX29wY29kZSkgcmV0dXJuICNfX29wY29kZTsKKyAgICBG
T1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pCisjdW5kZWYgT1BDT0RFX0lEX0VOVU0K
KyAgICAvLyBtbGFtIEVORCBERUJVRyBvbmx5CisKKyNpZiAwCisgICAgOworI2VuZGlmCisgICAg
cmV0dXJuICI8bm90IGEgZ2x1ZSBmdW5jdGlvbj4iOworCit9CisKK3ZvaWQgbWxhbUJyZWFrKGNv
bnN0IGNoYXIqIGNvbW1lbnQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CisgICAgaWYg
KG1sYW1fUFJJTlRGKSBwcmludGYoIkF0IG1sYW0gYnJlYWtwb2ludDogJXMgQCAlczolZFxuIiwg
Y29tbWVudCwgZmlsZSwgbGluZSk7Cit9CisvLyBtbGFtIEVORCBERUJVRworCitleHRlcm4gIkMi
IE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludEJhZE5hdGl2ZVJldHVybigpOwordm9p
ZCBsbGludEJhZE5hdGl2ZVJldHVybigpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2Vk
IHRvIHBvcHVsYXRlIHRoZSByZXR1cm4gUEMgb2YgdGhlIHNpbXVsYXRlZCBuYXRpdmUKKyAgICAv
LyBjYWxsIGZyYW1lLiAgV2Ugc2hvdWxkIG5ldmVyIHJldHVybiB0byBoZXJlIHdoZW4gdXNpbmcg
dGhlIEMgTG9vcC4KKyAgICAvLyBIZW5jZSwgd2UnbGwgbWFrZSBzb21lIG5vaXNlIHdpdGggYSBj
cmFzaCBpZiBzb21lb25lIG1ha2VzIHRoYXQgbWlzdGFrZS4KKyAgICBDUkFTSCgpOworfQorCitK
U1ZhbHVlIEludGVycHJldGVyOjpsbGludENMb29wRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnRmlsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTEludE9wY29kZUlEIGJvb3RzdHJhcE9wY29k
ZUlkLCBMTEludDo6RGF0YSogbGxpbnREYXRhKSB7CisKKyAgICAjZGVmaW5lIENBU1QgcmVpbnRl
cnByZXRfY2FzdAorICAgICNkZWZpbmUgU0lHTl9CSVQzMih4KSAoeCAmIDB4ODAwMDAwMDApCisg
ICAgLy8gbWxhbSAjZGVmaW5lIFNJR05fQklUNjQoeCkgKHggJiAweDgwMDAwMDAwMDAwMDAwMDAp
CisKKyAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBvdXIgYWRkcmVzcyB0YWJsZXMu
IFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQorICAgIC8vIGhlcmUgYmVjYXVzZSBvdXIgbGFiZWxz
IGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIChVTkxJS0VM
WShmbGFnID09IEluaXRpYWxpemVBbmRSZXR1cm4pKSB7CisgICAgICAgIGlmICghbGxpbnREYXRh
LT5pc0luaXRlZCgpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zID0gbGxpbnREYXRhLT5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPQorICAgICAgICAgICAg
ICAgICAgICBMTEludDo6RGF0YTo6Z2V0T3Bjb2RlUHRyKGxsaW50X3Rocm93X2Zyb21fc2xvd19w
YXRoX3RyYW1wb2xpbmUpOworCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAg
ICAgICAgICAgIE9wY29kZSogb3Bjb2RlTWFwID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAg
ICAgICAgICAgICNkZWZpbmUgT1BDT0RFX0VOVFJZKF9fb3Bjb2RlLCBsZW5ndGgpIFwKKyAgICAg
ICAgICAgICAgICBvcGNvZGVNYXBbX19vcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmJmhh
bmRsZV8jI19fb3Bjb2RlKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVf
RU5UUlkpCisgICAgICAgICAgICAjdW5kZWYgT1BDT0RFX0VOVFJZCisKKyAgICAgICAgICAgICNk
ZWZpbmUgTExJTlRfT1BDT0RFX0VOVFJZKF9fb3Bjb2RlKSBcCisgICAgICAgICAgICAgICAgb3Bj
b2RlTWFwW19fb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJiZoYW5kbGVfIyNfX29wY29k
ZSk7CisKKyAgICAgICAgICAgIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIoTExJTlRfT1BD
T0RFX0VOVFJZKQorICAgICAgICAgICAgI3VuZGVmIExMSU5UX09QQ09ERV9FTlRSWQorI2Vsc2UK
KyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShsbGludERhdGEpOworI2VuZGlmCisgICAgICAgICAg
ICBsbGludERhdGEtPnNldElzSW5pdGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisgICAgLy8gbWxh
bSBOT1QgVFJVRSBmb3IgdXMgQVNTRVJUKG1fY2xhc3NpY0VuYWJsZWQpOworICAgIEFTU0VSVChj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKS50b3BDYWxsRnJhbWUgPT0gY2FsbEZyYW1lKTsKKworICAg
IC8vIERlZmluZSB0aGUgcHNldWRvIHJlZ2lzdGVycyB1c2VkIGJ5IHRoZSBMTElOVCBDIExvb3Ag
YmFja2VuZDoKKyAgICBzdHJ1Y3QgQ0xvb3BSZWdpc3RlciB7CisgICAgICAgIHVuaW9uIHsKKyAg
ICAgICAgICAgIGludHB0cl90IGk7CisgICAgICAgICAgICB1aW50cHRyX3QgdTsKKyAgICAgICAg
ICAgIGludDMyX3QgaTMyOworICAgICAgICAgICAgdWludDMyX3QgdTMyOworICAgICAgICAgICAg
aW50OF90IGk4OworICAgICAgICAgICAgdWludDhfdCB1ODsKKyAgICAgICAgICAgIGludDhfdCog
aThwOworICAgICAgICAgICAgdm9pZCogdnA7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWNT
dGF0ZTsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbjsKKyAgICAgICAgICAg
IE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmM7CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
ZDsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaW50NjRfdCBpNjQ7CisgICAgICAg
ICAgICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZTsKKyAgICAgICAgICAgIGRvdWJsZSBj
YXN0VG9Eb3VibGU7CisgICAgICAgICAgICAvLyBtbGFtIGRvdWJsZSogZG91YmxlUHRyOworI2Vu
ZGlmCisgICAgICAgIH0gdTsKKyAgICB9OworICAgIHN0cnVjdCBDTG9vcERvdWJsZVJlZ2lzdGVy
IHsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgZG91YmxlIGQ7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgICAgIHZvaWQqIGNhc3RUb1ZvaWRQdHI7CisjZW5kaWYKKyAgICAgICAg
fSB1OworICAgIH07CisKKyAgICBDTG9vcFJlZ2lzdGVyIHIwLCByMSwgcjIsIHI0OworICAgIC8v
IG1sYW0gQ0xvb3BSZWdpc3RlciByMzsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIC8vIG1s
YW0gT0JTT0xFVEUgQ0xvb3BSZWdpc3RlciByODsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCisg
ICAgQ0xvb3BSZWdpc3RlciByQmFzZVBDLCB0YWdUeXBlTnVtYmVyLCB0YWdNYXNrOworI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCisgICAgQ0xvb3BSZWdpc3RlciByUmV0VlBDOworICAgIENMb29w
RG91YmxlUmVnaXN0ZXIgZDAsIGQxOworCisgICAgLy8gSW5zdGFudGlhdGUgdGhlIHBzZXVkbyBK
SVQgc3RhY2sgZnJhbWUgdXNlZCBieSB0aGUgTExJTlQgQyBMb29wIGJhY2tlbmQ6CisgICAgSklU
U3RhY2tGcmFtZSBqaXRTdGFja0ZyYW1lOworCisgICAgSklUU3RhY2tGcmFtZSogY29uc3Qgc3Ag
PSAmaml0U3RhY2tGcmFtZTsKKyAgICBzcC0+Z2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKTsKKworICAgIC8vIEFsaWFzIGZvciBnbG9iYWxEYXRhIHB0ciBpbiB0aGUgSklUU3Rh
Y2tGcmFtZToKKyAgICBKU0dsb2JhbERhdGEqICZnbG9iYWxEYXRhID0gc3AtPmdsb2JhbERhdGE7
CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Cisg
ICAgSW5zdHJ1Y3Rpb24qIHZQQzsKKworICAgIC8vIHJQQyBpcyBhbiBhbGlhcyBmb3IgdlBDLiAg
U2V0IHVwIHRoZSBhbGlhczoKKyAgICBDTG9vcFJlZ2lzdGVyJiByUEMgPSAqQ0FTVDxDTG9vcFJl
Z2lzdGVyKj4oJnZQQyk7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHZQQyA9IGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCisg
ICAgdlBDID0gMDsKKyAgICByQmFzZVBDLnUudnAgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCk7CisgICAgLy8gbWxhbSBCRUdJTiB0ZXN0CisgICAgdGFnVHlwZU51bWJlci51Lmkg
PSAweEZGRkYwMDAwMDAwMDAwMDA7CisgICAgdGFnTWFzay51LmkgPSAweEZGRkYwMDAwMDAwMDAw
MDI7CisgICAgLy8gbWxhbSBFTkQgdGVzdAorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyAg
ICAvLyByRlAgaXMgYW4gYWxpYXMgZm9yIGNhbGxGcmFtZS4gIFNldCB1cCB0aGlzIGFsaWFzOgor
ICAgIENMb29wUmVnaXN0ZXImIGZwID0gKkNBU1Q8Q0xvb3BSZWdpc3Rlcio+KCZjYWxsRnJhbWUp
OworCisgICAgLy8gU2ltdWxhdGUgYSBuYXRpdmUgcmV0dXJuIFBDIHdoaWNoIHNob3VsZCBuZXZl
ciBiZSB1c2VkOgorICAgIHJSZXRWUEMudS52cCA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
QmFkTmF0aXZlUmV0dXJuKTsKKworICAgIC8vIG1sYW0gVU5VU0VEIEpTVmFsdWUgZXhjZXB0aW9u
VmFsdWU7CisgICAgLy8gbWxhbSBOT1QgTkVFREVEPyBIYW5kbGVySW5mbyogaGFuZGxlciA9IDA7
CisgICAgLy8gbWxhbSBVTlVTRUQgQ2FsbEZyYW1lKiogdG9wQ2FsbEZyYW1lU2xvdCA9ICZnbG9i
YWxEYXRhLT50b3BDYWxsRnJhbWU7CisKKyAgICAvLyBtbGFtIHVuc2lnbmVkIHRpY2tDb3VudCA9
IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnRpY2tzVW50aWxOZXh0Q2hlY2soKTsKKworICAg
IC8vIEludGVycHJldGVyIHZhcmlhYmxlcyBmb3IgdmFsdWUgcGFzc2luZyBiZXR3ZWVuIG9wY29k
ZXMgYW5kL29yIGhlbHBlcnM6CisgICAgLy8gbWxhbSB2b2lkKiBjb2RlUHRyOworICAgIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMgPSAwOworICAgIEpTVmFsdWUgZnVuY3Rpb25SZXR1cm5WYWx1
ZTsKKyAgICAvLyBtbGFtIE5PVCBORUVERUQgSW5zdHJ1Y3Rpb24qIGp1bXBUYXJnZXQgPSAwOwor
ICAgIExMSW50T3Bjb2RlIG9wY29kZTsKKworICAgIGJvb2wgbWxhbVByaW50ID0gZmFsc2U7IC8v
IEZvciBERUJVRyBvbmx5LiAgQ2xlYW4gdXAgcGxlYXNlLgorICAgIFVOVVNFRF9QQVJBTShtbGFt
UHJpbnQpOworCisgICAgVU5VU0VEX1BBUkFNKHJlZ0ZpbGUpOyAvLyBtbGFtIEZJWE1FIFJFTU9W
RSB0aGlzIGxhdGVyLgorICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOyAvLyBtbGFtIEZJWE1F
IFJFTU9WRSB0aGlzIGxhdGVyLgorCisgICAgaWYgKGJvb3RzdHJhcE9wY29kZUlkICE9IGxsaW50
X3VudXNlZCkgeworICAgICAgICAvLyBtbGFtIHZQQyA9IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlv
bio+KGxsaW50R2x1ZSk7CisgICAgICAgIG9wY29kZSA9IExMSW50OjpEYXRhOjpnZXRPcGNvZGUo
Ym9vdHN0cmFwT3Bjb2RlSWQpOworICAgIH0KKworCisjaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElO
RykKKyAgICAjZGVmaW5lIFNBTVBMRShjb2RlQmxvY2ssIHZQQykgbV9zYW1wbGVyLT5zYW1wbGUo
Y29kZUJsb2NrLCB2UEMpCisjZWxzZQorICAgICNkZWZpbmUgU0FNUExFKGNvZGVCbG9jaywgdlBD
KQorI2VuZGlmCisKKyNkZWZpbmUgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpCisKKworICAgICNp
ZiBFTkFCTEUoT1BDT0RFX1NUQVRTKQorICAgICAgICAjZGVmaW5lIFJFQ09SRF9PUENPREVfU1RB
VFMoX19vcGNvZGUpIFwKKyAgICAgICAgICAgIE9wY29kZVN0YXRzOjpyZWNvcmRJbnN0cnVjdGlv
bihfX29wY29kZSkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIFJFQ09SRF9PUENPREVfU1RB
VFMoX19vcGNvZGUpCisgICAgI2VuZGlmCisKKyAgICAjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICAgICAgI2RlZmluZSBGRVRDSF9PUENPREUoKSBiaXR3aXNlX2Nhc3Q8TExJbnRPcGNvZGU+KHZQ
Qy0+dS5vcGNvZGUpCisgICAgI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgI2RlZmlu
ZSBGRVRDSF9PUENPREUoKSAqYml0d2lzZV9jYXN0PExMSW50T3Bjb2RlKj4ockJhc2VQQy51Lmk4
cCArIHJQQy51LmkgKiA4KQorICAgICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisgICAgI2Rl
ZmluZSBORVhUX0lOU1RSVUNUSU9OKCkgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIFNBTVBMRShjb2RlQmxvY2ssIHZQQyk7ICBcCisgICAgICAg
ICAgICBvcGNvZGUgPSBGRVRDSF9PUENPREUoKTsgXAorICAgICAgICAgICAgRElTUEFUQ0hfT1BD
T0RFKCk7ICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoZmFsc2UpCisKKy8vIG1sYW0gb3JpZyAj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19PUENPREVTKQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBM
b29wIGRpc3BhdGNoIG1lY2hhbmlzbSB1c2luZyBjb21wdXRlZCBnb3RvIHN0YXRlbWVudHM6CisK
KyAgICAjZGVmaW5lIERJU1BBVENIX09QQ09ERSgpIGdvdG8gKm9wY29kZQorCisgICAgI2RlZmlu
ZSBERUZJTkVfT1BDT0RFKF9fb3Bjb2RlKSBcCisgICAgICAgIGhhbmRsZV8jI19fb3Bjb2RlOlwK
KyAgICAgICAgICAgIFJFQ09SRF9PUENPREVfU1RBVFMoX19vcGNvZGUpOyBcCisgICAgICAgICAg
ICBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CisKKyAgICAvLyBtbGFtIEJBRCAjZGVmaW5lIE9Q
Q09ERV9JUyhvcGNvZGVfXykgKHZQQy0+dS5vcGNvZGUgPT0gbV9vcGNvZGVUYWJsZVtvcGNvZGVf
X10pCisKKyAgICAvLyBEaXNwYXRjaCB0byB0aGUgY3VycmVudCBQQydzIGJ5dGVjb2RlOgorICAg
IE5FWFRfSU5TVFJVQ1RJT04oKTsKKworI2Vsc2UgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RPX0NM
QVNTSUNfSU5URVJQUkVURVIpCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBMb29wIGRp
c3BhdGNoIG1lY2hhbmlzbSB1c2luZyBhIEMgc3dpdGNoIHN0YXRlbWVudDoKKworICAgICNkZWZp
bmUgRElTUEFUQ0hfT1BDT0RFKCkgZ290byBpbnRlcnByZXRlckxvb3BTdGFydAorCisgICAgI2Rl
ZmluZSBERUZJTkVfT1BDT0RFKF9fb3Bjb2RlKSBcCisgICAgICAgIGNhc2UgX19vcGNvZGU6IFwK
KyAgICAgICAgICAgIFJFQ09SRF9PUENPREVfU1RBVFMoX19vcGNvZGUpOyBcCisgICAgICAgICAg
ICBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CisKKyAgICAvLyBtbGFtIFVOVVNFRCAjZGVmaW5l
IE9QQ09ERV9JUyhfX29wY29kZSkgKHZQQy0+dS5vcGNvZGUgPT0gX19vcGNvZGUpCisKKyAgICAv
LyBEaXNwYXRjaCB0byB0aGUgY3VycmVudCBQQydzIGJ5dGVjb2RlOgorICAgIHdoaWxlICgxKSB7
IC8vIGl0ZXJhdG9yIGxvb3AgYmVnaW5zCisgICAgaW50ZXJwcmV0ZXJMb29wU3RhcnQ6OworICAg
ICAgICBzd2l0Y2ggKG9wY29kZSkKKworI2VuZGlmIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBCeXRl
Y29kZSBoYW5kbGVyczoKKyAgICB7CisgICAgICAgIC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRl
ZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlCisgICAgICAgIC8vIGJ5
dGVjb2RlIGhhbmRsZXJzIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20KKyAg
ICAgICAgLy8gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisgICAgICAgICNpbmNsdWRlICJMTElu
dEFzc2VtYmx5LmgiCisKKworICAgICAgICBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIG1sYW0gbWxhbUJyZWFr
KCJnZXRIb3N0Q2FsbFJldHVyblZhbHVlIiwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZTsKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgcjEudS5pID0gcmVzdWx0LnRhZygpOwor
ICAgICAgICAgICAgcjAudS5pID0gcmVzdWx0LnBheWxvYWQoKTsKKyNlbHNlCisgICAgICAgICAg
ICByMC51LmVuY29kZWRKU1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisjZW5kaWYK
KyAgICAgICAgICAgIC8vIG1sYW0gcHJpbnRmKCIgICAgW3BjICVwIGZwICVwXSBBU00gZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSA9PiBwYyAlcFxuIiwgdlBDLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
Y3VycmVudFZQQygpKTsKKyAgICAgICAgICAgIC8vIG1sYW0gdlBDID0gclJldFZQQy51Lmluc3Ry
dWN0aW9uOworCisgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1l
KCk7IC8vIG1sYW0gVEVTVAorCisgICAgICAgICAgICB2UEMgPSBjYWxsRnJhbWUtPmN1cnJlbnRW
UEMoKTsKKyAgICAgICAgICAgIC8qLyBtbGFtIEJFR0lOCisgICAgICAgICAgICBwcmludGYoIj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisgICAgICAgICAg
ICBpZiAoY2FsbEZyYW1lICE9IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkgeworICAgICAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgICAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9j
ay0+ZHVtcChjYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09XG4iKTsKKyAgICAgICAgICAgIC8vIG1sYW0gKi8KKy8qIG1sYW0KKyAgICAgICAgICAgIC8v
IG1sYW0gQkVHSU4gdGVzdAorICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFzSG9zdENhbGxG
cmFtZUZsYWcoKSkgeworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUocjEudS5pLCByMC51LmkpOyAgLy8gcmV0dXJuaW5nIEpTVmFsdWUodGFnLCBw
YXlsb2FkKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgI2Vycm9yIE5PVCBpbXBsZW1lbnRlZC4K
KyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gbWxhbSBFTkQKKyAgICAgICAg
ICAgICovCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gbWxhbSBGSVhNRTog
VGhpcyBzYW1lIGxvZ2ljIGlzIHVzZWQgaW4gZG9OYXRpdmVSZXR1cm5IZWxwZXIgYmVsb3cuCisg
ICAgICAgICAgICAvLyBTaG91bGQgd2UgcmVmYWN0b3IgYW5kIGNvbnNvbGlkYXRlPworCisgICAg
ICAgICAgICAvLyBXaGVuIHJldHVybmluZyBmcm9tIGEgbmF0aXZlIHRyYW1wb2xpbmUgY2FsbCwg
dW5saWtlIHRoZSBhc3NlbWJseQorICAgICAgICAgICAgLy8gTExJbnQsIHdlIGNhbid0IHNpbXBs
eSByZXR1cm4gdG8gdGhlIGNhbGxlci4gIEluIG91ciBjYXNlLCB3ZSBncmFiCisgICAgICAgICAg
ICAvLyB0aGUgY2FsbGVyJ3MgVlBDIGFuZCByZXN1bWUgZXhlY3V0aW9uIHRoZXJlLiAgSG93ZXZl
ciwgdGhlIGNhbGxlcidzCisgICAgICAgICAgICAvLyBWUEMgcmV0dXJuZWQgYnkgY2FsbEZyYW1l
LT5jdXJyZW50VlBDKCkgaXMgaW4gdGhlIGZvcm0gb2YgdGhlIHJlYWwKKyAgICAgICAgICAgIC8v
IGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBieXRlY29kZSwgYnV0IHRoZSA2NC1iaXQgTExJbnQgaW50
ZXJwcmV0ZXIKKyAgICAgICAgICAgIC8vIGV4cGVjdHMgdGhlIFZQQyB0byBiZSBhIGJ5dGVjb2Rl
IG9mZnNldC4gIEhlbmNlLCB3ZSBuZWVkIHRvIG1hcAorICAgICAgICAgICAgLy8gaXQgYmFjayB0
byBhIGJ5dGVjb2RlIG9mZnNldCBiZWZvcmUgd2UgZGlzcGF0Y2ggdmlhIHRoZSB1c3VhbAorICAg
ICAgICAgICAgLy8gZGlzcGF0Y2ggbWVjaGFuaXNtIChORVhUX0lOU1RSVUNUSU9OKCkpOgorCisg
ICAgICAgICAgICBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgICAgICByUEMudS52cCA9IGNhbGxGcmFtZS0+
Y3VycmVudFZQQygpOworICAgICAgICAgICAgclBDLnUuaSA9IHJQQy51Lmk4cCAtIHJlaW50ZXJw
cmV0X2Nhc3Q8aW50OF90Kj4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAg
ICAgICAgICAgIHJQQy51LmkgPj49IDM7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworICAg
ICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgICAgICB9CisKKyAgICAgICAgT0ZGTElO
RV9BU01fR0xVRV9MQUJFTChsbGludF9jdGlPcFRocm93Tm90Q2F1Z2h0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gICAqKioqKioqKioqIG1sYW0g
OjogbGxpbnRfY3RpT3BUaHJvd05vdENhdWdodFxuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBn
bG9iYWxEYXRhLT5leGNlcHRpb247CisgICAgICAgIH0KKworI2lmICFFTkFCTEUoQ09NUFVURURf
R09UT19PUENPREVTKQorICAgIGRlZmF1bHQ6CisgICAgICAgIHByaW50ZigiIG1sYW0gOjogSWxs
ZWdhbCBvcGNvZGUgJXBcbiIsICh2b2lkKilvcGNvZGUpOworICAgICAgICBtbGFtQnJlYWsoIkls
bGVnYWwgb3Bjb2RlIiwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgQVNTRVJUKGZhbHNl
KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNv
ZGUgaGVscGVyczoKKworICAgIGRvSW5kaXJlY3RKdW1wSGVscGVyOiB7CisjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAgICAgLy8gbWxhbSBnb3RvIGp1bXBUYXJnZXQ7Cisg
ICAgICAgIGdvdG8gKm9wY29kZTsKKyNlbHNlCisgICAgICAgIC8vIG1sYW0gdlBDID0ganVtcFRh
cmdldDsKKyAgICAgICAgZ290byBpbnRlcnByZXRlckxvb3BTdGFydDsKKyNlbmRpZgorICAgIH0K
KyAgICBkb0NhbGxIZWxwZXI6IHsKKyAgICAgICAgLy8gbWxhbSBtbGFtQnJlYWsoImNhbGxKU0Z1
bmN0aW9uIiwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChy
UmV0VlBDLnUudnAgIT0gMCk7IC8vIG1sYW0gVEVTVCByZXR1cm5QQworICAgICAgICAvL2lmICht
bGFtX1BSSU5URikgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgID4+PiBQVVNI
RUQgdG8gbmV3ICIpOyAvLyBtbGFtCisgICAgICAgIC8qIG1sYW0gQkVHSU4KKyAgICAgICAgcHJp
bnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworICAg
ICAgICBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICBpZiAoY29k
ZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wKGNhbGxGcmFtZSk7CisgICAgICAg
IHByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsK
KyAgICAgICAgLy8gbWxhbSBFTkQgKi8KKworICAgICAgICBESVNQQVRDSF9PUENPREUoKTsKKwor
ICAgIH0gLy8gRU5EIGRvQ2FsbEhlbHBlci4KKworICAgIGRvUmV0dXJuSGVscGVyOiB7CisgICAg
ICAgIGlmIChtbGFtX1BSSU5URikgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIg
IDw8PCBQT1BQRUQgdG8gcmVzdG9yZWQgIik7IC8vIG1sYW0KKworICAgICAgICAvKi8gbWxhbSBC
RUdJTgorICAgICAgICBwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PVxuIik7CisgICAgICAgIGlmIChjYWxsRnJhbWUgIT0gQ2FsbEZyYW1lOjpub0NhbGxl
cigpKSB7CisgICAgICAgICAgICAvLyBtbGFtIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIC8vIG1sYW0gY29kZUJsb2NrLT5kdW1wKGNh
bGxGcmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworICAgICAgICAvLyBtbGFtIEVORCAqLworCisg
ICAgICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgICAgICBBU1NFUlQoISFjYWxsRnJhbWUpOwor
ICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpKSB7CisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKHIxLnUuaSwgcjAudS5p
KTsgIC8vIHJldHVybmluZyBKU1ZhbHVlKHRhZywgcGF5bG9hZCk7CisjZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShyMC51LmVuY29kZWRKU1ZhbHVlKTsKKyNlbmRpZgor
ICAgICAgICB9CisgICAgICAgIC8vIG1sYW0gRU5ECisKKyAgICAgICAgLy8gVGhlIG5vcm1hbCBM
TEludCBjYWxsIGltcGxlbWVudGF0aW9uIHJldHVybnMgdG8gdGhlIGNhbGxlciwgYW5kIHRoZQor
ICAgICAgICAvLyBjYWxsZXIgd291bGQgZmV0Y2ggdGhlIHJldHVybiBhZGRyZXNzIGZyb20gQXJn
dW1lbnRDb3VudC50YWcoKS4KKyAgICAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgYWN0dWFsbHkgdXNl
IGEgcmVhbCBjYWxsIGFuZCByZXR1cm4gbWVjaGFuaXNtLCB3ZQorICAgICAgICAvLyBuZWVkIHRv
IGltcGxlbWVudCB0aGUgZXF1aXZhbGVudCBvZiBkaXNwYXRjaEFmdGVyQ2FsbCgpIGhlcmU6CisK
KyAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7CisKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICAvLyBtbGFtIEZJWE1FOiBUaGlzIHNhbWUgbG9naWMgaXMgdXNlZCBpbiBk
b05hdGl2ZVJldHVybkhlbHBlciBiZWxvdy4KKyAgICAgICAgLy8gU2hvdWxkIHdlIHJlZmFjdG9y
IGFuZCBjb25zb2xpZGF0ZT8KKworICAgICAgICAvLyBCYXNlZCBvbiBMb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtJ3MgZGlzcGF0Y2hBZnRlckNhbGwoKToKKworICAgICAgICAvLyBXaGVuIHJldHVy
bmluZyBmcm9tIGEgbmF0aXZlIHRyYW1wb2xpbmUgY2FsbCwgdW5saWtlIHRoZSBhc3NlbWJseQor
ICAgICAgICAvLyBMTEludCwgd2UgY2FuJ3Qgc2ltcGx5IHJldHVybiB0byB0aGUgY2FsbGVyLiAg
SW4gb3VyIGNhc2UsIHdlIGdyYWIKKyAgICAgICAgLy8gdGhlIGNhbGxlcidzIFZQQyBhbmQgcmVz
dW1lIGV4ZWN1dGlvbiB0aGVyZS4gIEhvd2V2ZXIsIHRoZSBjYWxsZXIncworICAgICAgICAvLyBW
UEMgcmV0dXJuZWQgYnkgY2FsbEZyYW1lLT5jdXJyZW50VlBDKCkgaXMgaW4gdGhlIGZvcm0gb2Yg
dGhlIHJlYWwKKyAgICAgICAgLy8gYWRkcmVzcyBvZiB0aGUgdGFyZ2V0IGJ5dGVjb2RlLCBidXQg
dGhlIDY0LWJpdCBMTEludCBpbnRlcnByZXRlcgorICAgICAgICAvLyBleHBlY3RzIHRoZSBWUEMg
dG8gYmUgYSBieXRlY29kZSBvZmZzZXQuICBIZW5jZSwgd2UgbmVlZCB0byBtYXAKKyAgICAgICAg
Ly8gaXQgYmFjayB0byBhIGJ5dGVjb2RlIG9mZnNldCBiZWZvcmUgd2UgZGlzcGF0Y2ggdmlhIHRo
ZSB1c3VhbAorICAgICAgICAvLyBkaXNwYXRjaCBtZWNoYW5pc20gKE5FWFRfSU5TVFJVQ1RJT04o
KSk6CisKKyAgICAgICAgY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIHJQQy51LnZwID0gY2FsbEZyYW1lLT5jdXJy
ZW50VlBDKCk7CisgICAgICAgIHJQQy51LmkgPSByUEMudS5pOHAgLSByZWludGVycHJldF9jYXN0
PGludDhfdCo+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgICAgIHJQ
Qy51LmkgPj49IDM7CisKKyAgICAgICAgckJhc2VQQy51LnZwID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyAgICAgICAgTkVY
VF9JTlNUUlVDVElPTigpOworCisgICAgfSAvLyBFTkQgZG9SZXR1cm5IZWxwZXIuCisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGRvTmF0aXZlUmV0dXJuSGVscGVyOiB7CisgICAgICAgIGlmICht
bGFtX1BSSU5URikgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgIDw8PCBOYXRp
dmVSZXR1cm4gUE9QUEVEIHRvIHJlc3RvcmVkICIpOyAvLyBtbGFtCisKKyAgICAgICAgQVNTRVJU
KCEhY2FsbEZyYW1lKTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZs
YWcoKSkgeworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShyMC51LmVuY29kZWRK
U1ZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBub3JtYWwgTExJbnQgY2FsbCBp
bXBsZW1lbnRhdGlvbiByZXR1cm5zIHRvIHRoZSBjYWxsZXIsIGFuZCB0aGUKKyAgICAgICAgLy8g
Y2FsbGVyIHdvdWxkIGZldGNoIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIEFyZ3VtZW50Q291bnQu
dGFnKCkuCisgICAgICAgIC8vIFNpbmNlIHdlIGRvbid0IGFjdHVhbGx5IHVzZSBhIHJlYWwgY2Fs
bCBhbmQgcmV0dXJuIG1lY2hhbmlzbSwgd2UKKyAgICAgICAgLy8gbmVlZCB0byBpbXBsZW1lbnQg
dGhlIGVxdWl2YWxlbnQgb2YgZGlzcGF0Y2hBZnRlckNhbGwoKSBoZXJlOgorCisgICAgICAgIC8v
IFdoZW4gcmV0dXJuaW5nIGZyb20gYSBuYXRpdmUgdHJhbXBvbGluZSBjYWxsLCB1bmxpa2UgdGhl
IGFzc2VtYmx5CisgICAgICAgIC8vIExMSW50LCB3ZSBjYW4ndCBzaW1wbHkgcmV0dXJuIHRvIHRo
ZSBjYWxsZXIuICBJbiBvdXIgY2FzZSwgd2UgZ3JhYgorICAgICAgICAvLyB0aGUgY2FsbGVyJ3Mg
VlBDIGFuZCByZXN1bWUgZXhlY3V0aW9uIHRoZXJlLiAgSG93ZXZlciwgdGhlIGNhbGxlcidzCisg
ICAgICAgIC8vIFZQQyByZXR1cm5lZCBieSBjYWxsRnJhbWUtPmN1cnJlbnRWUEMoKSBpcyBpbiB0
aGUgZm9ybSBvZiB0aGUgcmVhbAorICAgICAgICAvLyBhZGRyZXNzIG9mIHRoZSB0YXJnZXQgYnl0
ZWNvZGUsIGJ1dCB0aGUgNjQtYml0IExMSW50IGludGVycHJldGVyCisgICAgICAgIC8vIGV4cGVj
dHMgdGhlIFZQQyB0byBiZSBhIGJ5dGVjb2RlIG9mZnNldC4gIEhlbmNlLCB3ZSBuZWVkIHRvIG1h
cAorICAgICAgICAvLyBpdCBiYWNrIHRvIGEgYnl0ZWNvZGUgb2Zmc2V0IGJlZm9yZSB3ZSBkaXNw
YXRjaCB2aWEgdGhlIHVzdWFsCisgICAgICAgIC8vIGRpc3BhdGNoIG1lY2hhbmlzbSAoTkVYVF9J
TlNUUlVDVElPTigpKToKKworICAgICAgICBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgclBDLnUudnAgPSBjYWxs
RnJhbWUtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgclBDLnUuaSA9IHJQQy51Lmk4cCAtIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
KyAgICAgICAgclBDLnUuaSA+Pj0gMzsKKworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisK
KyAgICB9IC8vIEVORCBkb05hdGl2ZVJldHVybkhlbHBlci4KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQorCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisg
ICAgfSAvLyBpdGVyYXRvciBsb29wIGVuZHMKKyNlbmRpZgorCisgICAgI3VuZGVmIE5FWFRfSU5T
VFJVQ1RJT04KKyAgICAjdW5kZWYgREVGSU5FX09QQ09ERQorICAgIC8vIG1sYW0gTk9UIE5FRURF
RCAjdW5kZWYgQ0hFQ0tfRk9SX0VYQ0VQVElPTgorICAgICN1bmRlZiBDSEVDS19GT1JfVElNRU9V
VAorICAgICN1bmRlZiBDQVNUCisgICAgI3VuZGVmIFNJR05fQklUMzIKKyAgICAvLyBtbGFtICN1
bmRlZiBTSUdOX0JJVDY0CisKKyAgICByZXR1cm4gSlNWYWx1ZSgpOyAvLyBLZWVwIHRoZSBjb21w
aWxlciBoYXBweS4KKworfSAvLyBJbnRlcnByZXRlcjo6bGxpbnRDTG9vcEV4ZWN1dGUoKQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKKy8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorLy8gRGVmaW5lIHRoZSBvcGNvZGUgZGlzcGF0Y2ggbWVjaGFu
aXNtIHdoZW4gdXNpbmcgYW4gQVNNIGxvb3A6CisvLworCisvLyBUaGVzZSBhcmUgZm9yIGJ1aWxk
aW5nIGFuIGludGVycHJldGVyIGZyb20gZ2VuZXJhdGVkIGFzc2VtYmx5IGNvZGU6CisjZGVmaW5l
IE9GRkxJTkVfQVNNX0JFR0lOICAgYXNtICgKKyNkZWZpbmUgT0ZGTElORV9BU01fRU5EICAgICAp
OworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChfX29wY29kZSkgT0ZGTElORV9B
U01fR0xPQkFMX0xBQkVMKGxsaW50XyMjX19vcGNvZGUpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dM
VUVfTEFCRUwoX19vcGNvZGUpICAgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKF9fb3Bjb2RlKQor
CisjaWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChs
YWJlbCkgICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4i
ICAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChsYWJlbCkgIlxuIiAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgIi50aHVtYlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0obGFiZWwpICJcbiIgIFwKKyAg
ICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiOlxuIgorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
R0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhsYWJlbCkgIlxuIiAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChsYWJlbCkgIlxuIiAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiOlxuIgorI2VuZGlm
CisKKyNkZWZpbmUgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwobGFiZWwpICAgTE9DQUxfTEFCRUxf
U1RSSU5HKGxhYmVsKSAiOlxuIgorCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2Zm
bGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJseSBjb2RlCiAvLyBmb3Ig
dGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
LgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorI2VuZGlmIC8vICFFTkFCTEUoTExJTlRf
Q19MT09QKQorCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMjQ2
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTMgQEAKIAogI2luY2x1ZGUgIk9wY29kZS5o
IgogCisvKiBtbGFtIE1PVkVEIGJlbG93CiAjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wo
b3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOwogICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKICN1bmRlZiBMTElOVF9J
TlNUUlVDVElPTl9ERUNMCisqLwogCisvKiBtbGFtIEJFR0lOIG9yaWcKIGV4dGVybiAiQyIgdm9p
ZCBsbGludF9iZWdpbigpOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VuZCgpOwogZXh0ZXJuICJD
IiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKQEAgLTUxLDYgKzU0LDk2IEBAIGV4dGVy
biAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF8KIC8vIE5hdGl2ZSBjYWxsIHRyYW1w
b2xpbmVzCiBleHRlcm4gIkMiIHZvaWQgbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSgpOwog
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSgpOworKi8K
KworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjZGVmaW5lIEZPUl9FQUNIX0xMSU5UX05PSklU
X05BVElWRV9IRUxQRVIodikgXAorICAgIHYoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgXAorICAg
IHYobGxpbnRfY3RpT3BUaHJvd05vdENhdWdodCkKKworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9D
X0xPT1ApCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkg
ZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lE
KExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wK
KworI2RlZmluZSBGT1JfRUFDSF9MTElOVF9OT0pJVF9OQVRJVkVfSEVMUEVSKHYpIFwKKyAgICAv
LyBOb3RoaW5nIHRvIGRvIGhlcmUuIFVzZSB0aGUgSklUIGltcGwgaW5zdGVhZC4KKworI2VuZGlm
IC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisKKyNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfTkFU
SVZFX0hFTFBFUih2KSBcCisgICAgRk9SX0VBQ0hfTExJTlRfTk9KSVRfTkFUSVZFX0hFTFBFUih2
KSBcCisgICAgXAorICAgIHYobGxpbnRfYmVnaW4pIFwKKyAgICBcCisgICAgdihsbGludF9wcm9n
cmFtX3Byb2xvZ3VlKSBcCisgICAgdihsbGludF9ldmFsX3Byb2xvZ3VlKSBcCisgICAgdihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSkgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2spIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2spIFwKKyAgICB2KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSBcCisgICAgdihsbGludF90
aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKSBcCisgICAgdihsbGludF90aHJvd19kdXJp
bmdfY2FsbF90cmFtcG9saW5lKSBcCisgICAgXAorICAgIC8qIE5hdGl2ZSBjYWxsIHRyYW1wb2xp
bmVzICovIFwKKyAgICB2KGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpIFwKKyAgICB2KGxs
aW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSkgXAorICAgIFwKKyAgICB2KGxsaW50X2Vu
ZCkKKworCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKworICAgIC8vIERlZmluZSBwc2V1ZG8g
b3Bjb2RlcyBmb3IgdGhlIEMgbG9vcDoKKyAgICAjZGVmaW5lIE9QQ09ERV9JRF9FTlVNKF9fb3Bj
b2RlLCBsZW5ndGgpIF9fb3Bjb2RlLAorICAgICNkZWZpbmUgT1BDT0RFX1BTRVVET19JRF9FTlVN
KF9fb3Bjb2RlKSBfX29wY29kZSwKKworICAgIHR5cGVkZWYgZW51bSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RF
X0lEKE9QQ09ERV9JRF9FTlVNKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZPUl9F
QUNIX0xMSU5UX05BVElWRV9IRUxQRVIoT1BDT0RFX1BTRVVET19JRF9FTlVNKSAgICAgXAorICAg
IH0gTExJbnRPcGNvZGVJRDsKKworICAgICN1bmRlZiBPUENPREVfSURfRU5VTQorICAgICN1bmRl
ZiBPUENPREVfUFNFVURPX0lEX0VOVU0KKworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09E
RVMpCisgICAgdHlwZWRlZiBKU0M6Ok9wY29kZSBMTEludE9wY29kZTsKKyNlbHNlCisgICAgdHlw
ZWRlZiBMTEludE9wY29kZUlEIExMSW50T3Bjb2RlOworI2VuZGlmCisKKyAgICBjb25zdCBpbnQg
bnVtTExJbnRPcGNvZGVJRHMgPSBsbGludF9lbmQgKyAxOworICAgIGNvbnN0IExMSW50T3Bjb2Rl
SUQgbGxpbnRfdW51c2VkID0gbGxpbnRfZW5kOworCisjZWxzZSAvLyAhRU5BQkxFKExMSU5UX0Nf
TE9PUCkKKworICAgIC8vIERlZmluZSBwc2V1ZG8gb3Bjb2RlcyBmb3IgdGhlIEMgbG9vcDoKKyAg
ICAjZGVmaW5lIE9QQ09ERV9JRF9FTlVNKF9fb3Bjb2RlLCBsZW5ndGgpIF9fb3Bjb2RlLAorICAg
IHR5cGVkZWYgZW51bSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSBMTEludE9wY29kZUlEOworICAgICN1bmRlZiBPUENPREVf
SURfRU5VTQorCisgICAgI2RlZmluZSBERUNMQVJFX0xMSU5UX05BVElWRV9IRUxQRVIobmFtZSkg
XAorICAgICAgICBleHRlcm4gIkMiIHZvaWQgbmFtZSgpOworICAgIEZPUl9FQUNIX0xMSU5UX05B
VElWRV9IRUxQRVIoREVDTEFSRV9MTElOVF9OQVRJVkVfSEVMUEVSKQorICAgICN1bmRlZiBERUNM
QVJFX0xMSU5UX05BVElWRV9IRUxQRVIKKworICAgIHR5cGVkZWYgSlNDOjpPcGNvZGUgTExJbnRP
cGNvZGU7CisgICAgY29uc3QgaW50IG51bUxMSW50T3Bjb2RlSURzID0gSlNDOjpudW1PcGNvZGVJ
RHM7CisKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworLy8gbWxhbSBFTkQgKi8K
KworLy8gbWxhbSBCRUdJTiBkZWJ1ZworbmFtZXNwYWNlIEpTQyB7CitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIG1sYW1CcmVhayhjb25zdCBjaGFyKiBjb21tZW50LCBjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSk7Cit9IC8vIG5hbWVzcGFjZSBKU0MKKy8vIG1sYW0gRU5EIGRlYnVnCiAKICNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybXY3LnJiCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hcm12Ny5yYgkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3OSw4IEBAIGRl
ZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVzZShsaXN0KQogICAgICAgICAgICAgY2FzZSBub2RlLm9w
Y29kZQogICAgICAgICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAi
Y2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKICAgICAg
ICAgICAgICAgICAiY3BlcSIsICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVx
IiwgImNwZ3QiLCAiY3BndGVxIiwgImNwbHQiLCAiY3BsdGVxIiwKLSAgICAgICAgICAgICAgICAi
dGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56Iiwg
InRwbyIsICJ0cHMiLCAidHB6IiwgInRwbnoiLAorICAgICAgICAgICAgICAgICMgbWxhbSBVTlVT
RUQgInRpbyIsICJ0aXMiLCAidGl6IiwgInRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJu
eiIsICJ0cG8iLCAidHBzIiwgInRweiIsICJ0cG56IiwKKyAgICAgICAgICAgICAgICAidGlzIiwg
InRpeiIsICJ0aW56IiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cHMiLCAidHB6IiwgInRwbnoi
LAogICAgICAgICAgICAgICAgICJjYmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIi
LCAiY2JiZXEiLCAiY2JndCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCiAgICAgICAgICAg
ICAgICAgaWYgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKICAgICAgICAgICAgICAgICAgICAgaWYg
bm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzFdCkBAIC05NDAsOSArOTQxLDkgQEAg
Y2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiLCAiYnRibnoi
CiAgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQogICAgICAgICAgICAgJGFzbS5w
dXRzICJibmUgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgotICAgICAgICB3aGVuICJidGlvIiwg
ImJ0cG8iLCAiYnRibyIKLSAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCi0gICAg
ICAgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAg
ICMgbWxhbSBVTlVTRUQgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxh
bSBVTlVTRUQgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNF
RCAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCiAgICAgICAgIHdo
ZW4gImJ0aXMiLCAiYnRwcyIsICJidGJzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVy
YW5kcykKICAgICAgICAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVs
fSIKQEAgLTk4Miw4ICs5ODMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1p
dEFybVY3Q29tcGFyZShvcGVyYW5kcywgImx0IikKICAgICAgICAgd2hlbiAiY2lsdGVxIiwgImNw
bHRlcSIsICJjYmx0ZXEiCiAgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAi
bGUiKQotICAgICAgICB3aGVuICJ0aW8iLCAidGJvIiwgInRwbyIKLSAgICAgICAgICAgIGVtaXRB
cm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAi
dGlvIiwgInRibyIsICJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgZW1pdEFybVY3VGVz
dFNldChvcGVyYW5kcywgInZzIikKICAgICAgICAgd2hlbiAidGlzIiwgInRicyIsICJ0cHMiCiAg
ICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQogICAgICAgICB3aGVu
ICJ0aXoiLCAidGJ6IiwgInRweiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYgkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsMTYgQEAgY2xhc3MgQXNz
ZW1ibGVyCiAgICAgICAgIEBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAgIEBjb2RlT3JpZ2luID0g
bmlsCiAgICAgICAgIEBpbnRlcm5hbENvbW1lbnQgPSBuaWwKKyAgICAgICAgQHNvdXJjZUluc3Ry
dWN0aW9uID0gbmlsCiAgICAgICAgIHJlc3VsdAogICAgIGVuZAogICAgIAorICAgICMgUHV0cyBh
IEMgU3RhdGVtZW50IGluIHRoZSBvdXRwdXQgc3RyZWFtLgorICAgIGRlZiBwdXRjKCpsaW5lKQor
ICAgICAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHV0cyhm
b3JtYXREdW1wKCIgICAgIiArIGxpbmUuam9pbignJyksIGxhc3RDb21tZW50KSkKKyAgICBlbmQK
KyAgICAKICAgICBkZWYgZm9ybWF0RHVtcChkdW1wU3RyLCBjb21tZW50LCBjb21tZW50Q29sdW1u
cz0kcHJlZmVycmVkQ29tbWVudFN0YXJ0Q29sdW1uKQogICAgICAgICBpZiBjb21tZW50Lmxlbmd0
aCA+IDAKICAgICAgICAgICAgICIlLSN7Y29tbWVudENvbHVtbnN9cyAlcyIgJSBbZHVtcFN0ciwg
Y29tbWVudF0KQEAgLTE1MSw3ICsxNTgsMTEgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgICAgIEBu
dW1HbG9iYWxMYWJlbHMgKz0gMQogICAgICAgICBwdXRzTmV3bGluZVNwYWNlcklmQXBwcm9wcmlh
dGUoOmdsb2JhbCkKICAgICAgICAgQGludGVybmFsQ29tbWVudCA9ICRlbmFibGVMYWJlbENvdW50
Q29tbWVudHMgPyAiR2xvYmFsIExhYmVsICN7QG51bUdsb2JhbExhYmVsc30iIDogbmlsCi0gICAg
ICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKCN7bGFi
ZWxOYW1lfSkiLCBsYXN0Q29tbWVudCkpCisgICAgICAgIGlmIC9cQWxsaW50X29wXy8ubWF0Y2go
bGFiZWxOYW1lKQorICAgICAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCJPRkZMSU5FX0FT
TV9PUENPREVfTEFCRUwob3BfI3skfi5wb3N0X21hdGNofSkiLCBsYXN0Q29tbWVudCkpCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01f
R0xVRV9MQUJFTCgje2xhYmVsTmFtZX0pIiwgbGFzdENvbW1lbnQpKQorICAgICAgICBlbmQKICAg
ICAgICAgQG5ld2xpbmVTcGFjZXJTdGF0ZSA9IDpub25lICMgQWZ0ZXIgYSBnbG9iYWwgbGFiZWws
IHdlIGNhbiB1c2UgYW5vdGhlciBzcGFjZXIuCiAgICAgZW5kCiAgICAgCkBAIC0xNzEsNiArMTgy
LDE0IEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7
bGFiZWxOYW1lfSkgXCIiCiAgICAgZW5kCiAgICAgCisgICAgZGVmIHNlbGYuY0xhYmVsUmVmZXJl
bmNlKGxhYmVsTmFtZSkKKyAgICAgICAgIiN7bGFiZWxOYW1lfSIKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgc2VsZi5jTG9jYWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICIje2xh
YmVsTmFtZX0iCisgICAgZW5kCisgICAgCiAgICAgZGVmIGNvZGVPcmlnaW4odGV4dCkKICAgICAg
ICAgY2FzZSBAY29tbWVudFN0YXRlCiAgICAgICAgIHdoZW4gOm5vbmUKQEAgLTE5Niw2ICsyMTUs
OSBAQCBjbGFzcyBBc3NlbWJsZXIKICAgICBkZWYgYW5ub3RhdGlvbih0ZXh0KQogICAgICAgICBA
YW5ub3RhdGlvbiA9IHRleHQKICAgICBlbmQKKyAgICBkZWYgc291cmNlSW5zdHJ1Y3Rpb24odGV4
dCkKKyAgICAgICAgQHNvdXJjZUluc3RydWN0aW9uID0gdGV4dAorICAgIGVuZAogZW5kCiAKIGFz
bUZpbGUgPSBBUkdWLnNoaWZ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwx
NCBAQCByZXF1aXJlICJjb25maWciCiByZXF1aXJlICJhcm12NyIKIHJlcXVpcmUgImFzdCIKIHJl
cXVpcmUgIng4NiIKK3JlcXVpcmUgImNsb29wIgogCiBCQUNLRU5EUyA9CiAgICAgWwogICAgICAi
WDg2IiwKICAgICAgIlg4Nl82NCIsCi0gICAgICJBUk12NyIKKyAgICAgIkFSTXY3IiwKKyAgICAg
IkNfTE9PUCIKICAgICBdCiAKICMgS2VlcCB0aGUgc2V0IG9mIHdvcmtpbmcgYmFja2VuZHMgc2Vw
YXJhdGUgZnJvbSB0aGUgc2V0IG9mIGJhY2tlbmRzIHRoYXQgbWlnaHQgYmUKQEAgLTQyLDcgKzQ0
LDggQEAgV09SS0lOR19CQUNLRU5EUyA9CiAgICAgWwogICAgICAiWDg2IiwKICAgICAgIlg4Nl82
NCIsCi0gICAgICJBUk12NyIKKyAgICAgIkFSTXY3IiwKKyAgICAgIkNfTE9PUCIKICAgICBdCiAK
IEJBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwo
JykgKyAnKVxcWicpCkBAIC03NiwxMiArNzksMTggQEAgY2xhc3MgTGFiZWxSZWZlcmVuY2UKICAg
ICBkZWYgYXNtTGFiZWwKICAgICAgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4u
LTFdKQogICAgIGVuZAorICAgIGRlZiBjTGFiZWwKKyAgICAgICAgQXNzZW1ibGVyLmNMYWJlbFJl
ZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBMb2NhbExhYmVsUmVm
ZXJlbmNlCiAgICAgZGVmIGFzbUxhYmVsCiAgICAgICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVm
ZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQogICAgIGVuZAorICAgIGRlZiBjTGFi
ZWwKKyAgICAgICAgQXNzZW1ibGVyLmNMb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8i
K25hbWVbMS4uLTFdKQorICAgIGVuZAogZW5kCiAKIGNsYXNzIFNraXAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTA4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWly
ZSAiY29uZmlnIgorcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitkZWYgY2xvb3BNYXBU
eXBlKHR5cGUpCisgICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50OyAgICAgICAgICAgICIudS5p
IgorICAgIHdoZW4gOnVpbnQ7ICAgICAgICAgICAiLnUudSIKKyAgICB3aGVuIDppbnQzMjsgICAg
ICAgICAgIi51LmkzMiIKKyAgICB3aGVuIDp1aW50MzI7ICAgICAgICAgIi51LnUzMiIKKyAgICB3
aGVuIDppbnQ4OyAgICAgICAgICAgIi51Lmk4IgorICAgIHdoZW4gOnVpbnQ4OyAgICAgICAgICAi
LnUudTgiCisgICAgd2hlbiA6aW50OFB0cjsgICAgICAgICIudS5pOHAiCisgICAgd2hlbiA6dm9p
ZFB0cjsgICAgICAgICIudS52cCIKKyAgICB3aGVuIDppbnN0cnVjdGlvbjsgICAgIi51Lmluc3Ry
dWN0aW9uIgorICAgIHdoZW4gOm5hdGl2ZUZ1bmM7ICAgICAiLnUubmF0aXZlRnVuYyIKKyAgICB3
aGVuIDpkb3VibGU7ICAgICAgICAgIi51LmQiCisgICAgd2hlbiA6Y2FzdFRvRG91YmxlOyAgICIu
dS5jYXN0VG9Eb3VibGUiCisgICAgd2hlbiA6Y2FzdFRvVm9pZFB0cjsgICIudS5jYXN0VG9Wb2lk
UHRyIgorICAgIGVsc2U7CisgICAgICAgIHJhaXNlICJVbnN1cHBvcnRlZCB0eXBlIgorICAgIGVu
ZAorZW5kCisKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICAgIGRlZiBk
dW1wCisgICAgICAgIEBuYW1lCisgICAgZW5kCisgICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQor
ICAgICAgICBAbmFtZSArIGNsb29wTWFwVHlwZSh0eXBlKQorICAgIGVuZAorZW5kCisKK0NfTE9P
UF9TQ1JBVENIX0ZQUiA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImQ4IikKKworY2xhc3MgUmVnaXN0
ZXJJRAorICAgIGRlZiBkdW1wCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJ0MCIs
ICJhMCIsICJyMCIKKyAgICAgICAgICAgICJyMCIKKyAgICAgICAgd2hlbiAidDEiLCAiYTEiLCAi
cjEiCisgICAgICAgICAgICAicjEiCisgICAgICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgICAg
ICAgInIyIgorICAgICAgICB3aGVuICJ0MyIKKyAgICAgICAgICAgICJyNCIKKyAgICAgICAgd2hl
biAidDQiCisgICAgICAgICAgICAiclBDIgorICAgICAgICB3aGVuICJ0NiIKKyAgICAgICAgICAg
ICJyQmFzZVBDIgorICAgICAgICB3aGVuICJjc3IxIgorICAgICAgICAgICAgInRhZ1R5cGVOdW1i
ZXIiCisgICAgICAgIHdoZW4gImNzcjIiCisgICAgICAgICAgICAidGFnTWFzayIKKyAgICAgICAg
d2hlbiAiY2ZyIgorICAgICAgICAgICAgImZwIgorICAgICAgICB3aGVuICJsciIKKyAgICAgICAg
ICAgICJyUmV0VlBDIgorICAgICAgICB3aGVuICJzcCIKKyAgICAgICAgICAgICJzcCIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBDX0xP
T1AgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVm
IGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBkdW1wICsgY2xvb3BNYXBUeXBlKHR5cGUpCisg
ICAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgICAgZGVmIGR1bXAKKyAgICAgICAg
Y2FzZSBuYW1lCisgICAgICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAg
ICAgICAgd2hlbiAiZnQxIgorICAgICAgICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisg
ICAgICAgICAgICAiZDIiCisgICAgICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAg
ICAgICAgd2hlbiAiZnQ0IgorICAgICAgICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisg
ICAgICAgICAgICAiZDUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVn
aXN0ZXIgI3tuYW1lfSBmb3IgQ19MT09QIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAgICAgICAgZHVtcCAr
IGNsb29wTWFwVHlwZSh0eXBlKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICAg
IGRlZiBkdW1wCisgICAgICAgICIje3ZhbHVlfSIKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0
eXBlPTppbnQpCisgICAgICAgICMgVGhlcmUgaXMgYSBjYXNlIG9mIGEgdmVyeSBsYXJnZSB1bnNp
Z25lZCBudW1iZXIgKDB4ODAwMDAwMDAwMDAwMDAwMCkKKyAgICAgICAgIyB3aGljaCB3ZSB3aXNo
IHRvIGVuY29kZS4gIFVuZm9ydHVuYXRlbHksIHRoZSBDL0MrKyBjb21waWxlcgorICAgICAgICAj
IGNvbXBsYWludHMgaWYgd2UgZXhwcmVzcyB0aGF0IG51bWJlciBhcyBhIHBvc2l0aXZlIGRlY2lt
YWwgaW50ZWdlci4KKyAgICAgICAgIyBIZW5jZSwgZm9yIHBvc2l0aXZlIHZhbHVlcywgd2UganVz
dCBjb252ZXJ0IHRoZSBudW1iZXIgaW50byBoZXggZm9ybQorICAgICAgICAjIHRvIGtlZXAgdGhl
IGNvbXBpbGVyIGhhcHB5LgorICAgICAgICAjCisgICAgICAgICMgSG93ZXZlciwgZm9yIG5lZ2F0
aXZlIHZhbHVlcywgdGhlIHRvX3MoMTYpIGhleCBjb252ZXJzaW9uIG1ldGhvZCBkb2VzCisgICAg
ICAgICMgbm90IHN0cmlwIHRoZSAiLSIgc2lnbiByZXN1bHRpbmcgaW4gYSBtZWFuaW5nbGVzcyAi
MHgtLi4uIiB2YWx1ZVN0ci4KKyAgICAgICAgIyBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlIHNpbXBs
eSBkb24ndCBlbmNvZGUgbmVnYXRpdmUgbnVtYmVycyBhcyBoZXguCisgICAgICAgIHZhbHVlU3Ry
ID0gKHZhbHVlIDwgMCkgPyAiI3t2YWx1ZX0iIDogIjB4I3t2YWx1ZS50b19zKDE2KX0iCisKKyAg
ICAgICAgY2FzZSB0eXBlCisgICAgICAgIHdoZW4gOmludDg7ICAgICJzdGF0aWNfY2FzdDxpbnQ4
X3Q+KCN7dmFsdWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6aW50MzI7ICAgInN0YXRpY19jYXN0PGlu
dDMyX3Q+KCN7dmFsdWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6aW50OyAgICAgInN0YXRpY19jYXN0
PGludHB0cl90Pigje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOnVpbnQ4OyAgICJzdGF0aWNf
Y2FzdDx1aW50OF90Pigje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOnVpbnQzMjsgICJzdGF0
aWNfY2FzdDx1aW50MzJfdD4oI3t2YWx1ZVN0cn0pIgorICAgICAgICB3aGVuIDp1aW50OyAgICAi
c3RhdGljX2Nhc3Q8dWludHB0cl90Pigje3ZhbHVlU3RyfSkiCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJhaXNlICJOb3QgaW1wbGVtZW50ZWQgaW1tZWRpYXRlIG9mIHR5cGU6ICN7dHlwZX0i
IAorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgICAgZGVmIGR1
bXAKKyAgICAgICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LnZhbHVlfV0iCisgICAgZW5kCisg
ICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBjYXNlIHR5cGUKKyAgICAgICAgd2hl
biA6aW50ODsgICAgICAgIGludDhNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50MzI7ICAgICAgIGlu
dDMyTWVtUmVmCisgICAgICAgIHdoZW4gOmludDsgICAgICAgICBpbnRNZW1SZWYKKyAgICAgICAg
d2hlbiA6dWludDg7ICAgICAgIHVpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4gOnVpbnQzMjsgICAg
ICB1aW50MzJNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDsgICAgICAgIHVpbnRNZW1SZWYKKyAg
ICAgICAgd2hlbiA6aW5zdHJ1Y3Rpb247IGludE1lbVJlZgorICAgICAgICB3aGVuIDpuYXRpdmVG
dW5jOyAgbmF0aXZlRnVuY01lbVJlZgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAi
VW5leHBlY3RlZCBBZGRyZXNzIHR5cGU6ICN7dHlwZX0iCisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIGRlZiBwb2ludGVyRXhwcgorICAgICAgICBpZiBiYXNlLmlzX2E/IFJlZ2lzdGVySUQgYW5k
IGJhc2UubmFtZSA9PSAic3AiIAorICAgICAgICAgICAgb2Zmc2V0VmFsdWUgPSAiI3tvZmZzZXQu
dmFsdWV9IgorICAgICAgICAgICAgIihhc3NlcnQoI3tvZmZzZXRWYWx1ZX0gPT0gb2Zmc2V0b2Yo
SklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkpLCAmc3AtPmdsb2JhbERhdGEpIgorICAgICAgICBl
bHNpZiBvZmZzZXQudmFsdWUgPT0gMAorICAgICAgICAgICAgIiN7YmFzZS5jbFZhbHVlKDppbnQ4
UHRyKX0iCisgICAgICAgIGVsc2lmIG9mZnNldC52YWx1ZSA+IDAKKyAgICAgICAgICAgICIje2Jh
c2UuY2xWYWx1ZSg6aW50OFB0cil9ICsgI3tvZmZzZXQudmFsdWV9IgorICAgICAgICBlbHNlCisg
ICAgICAgICAgICAiI3tiYXNlLmNsVmFsdWUoOmludDhQdHIpfSAtICN7LW9mZnNldC52YWx1ZX0i
CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBpbnQ4TWVtUmVmCisgICAgICAgICIqQ0FT
VDxpbnQ4X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGludDE2TWVtUmVm
CisgICAgICAgICIqQ0FTVDxpbnQxNl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAg
IGRlZiBpbnQzMk1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50MzJfdCo+KCN7cG9pbnRlckV4cHJ9
KSIKKyAgICBlbmQKKyAgICBkZWYgaW50TWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnRwdHJfdCo+
KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDhNZW1SZWYKKyAgICAgICAg
IipDQVNUPHVpbnQ4X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIHVpbnQx
Nk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDE2X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAg
ZW5kCisgICAgZGVmIHVpbnQzMk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDMyX3QqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIHVpbnRNZW1SZWYKKyAgICAgICAgIipDQVNU
PHVpbnRwdHJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgbmF0aXZlRnVu
Y01lbVJlZgorICAgICAgICAiKkNBU1Q8TmF0aXZlRnVuY3Rpb24qPigje3BvaW50ZXJFeHByfSki
CisgICAgZW5kCisgICAgZGVmIGRibE1lbVJlZgorICAgICAgICAiKkNBU1Q8ZG91YmxlKj4oI3tw
b2ludGVyRXhwcn0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBk
dW1wCisgICAgICAgICJbI3tiYXNlLmR1bXB9LCAje29mZnNldC5kdW1wfSwgI3tpbmRleC5kdW1w
fSA8PCAje3NjYWxlU2hpZnR9XSIKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTppbnQp
CisgICAgICAgIGNhc2UgdHlwZQorICAgICAgICB3aGVuIDppbnQ4OyAgICBpbnQ4TWVtUmVmCisg
ICAgICAgIHdoZW4gOmludDMyOyAgIGludDMyTWVtUmVmCisgICAgICAgIHdoZW4gOmludDsgICAg
IGludE1lbVJlZgorICAgICAgICB3aGVuIDp1aW50ODsgICB1aW50OE1lbVJlZgorICAgICAgICB3
aGVuIDp1aW50MzI7ICB1aW50MzJNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDsgICAgdWludE1l
bVJlZgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBCYXNlSW5k
ZXggdHlwZTogI3t0eXBlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIHBvaW50ZXJF
eHByCisgICAgICAgIGlmIGJhc2UuaXNfYT8gUmVnaXN0ZXJJRCBhbmQgYmFzZS5uYW1lID09ICJz
cCIKKyAgICAgICAgICAgIG9mZnNldFZhbHVlID0gIigje2luZGV4LmNsVmFsdWUoOmludDMyKX0g
PDwgI3tzY2FsZVNoaWZ0fSkgKyAje29mZnNldC5jbFZhbHVlfSkiCisgICAgICAgICAgICAiKGFz
c2VydCgje29mZnNldFZhbHVlfSA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRh
KSksICZzcC0+Z2xvYmFsRGF0YSkiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICIje2Jhc2Uu
Y2xWYWx1ZSg6aW50OFB0cil9ICsgKCN7aW5kZXguY2xWYWx1ZSg6aW50MzIpfSA8PCAje3NjYWxl
U2hpZnR9KSArICN7b2Zmc2V0LmNsVmFsdWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBk
ZWYgaW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90Kj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorICAgIGRlZiBpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50MTZfdCo+KCN7
cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MzJNZW1SZWYKKyAgICAgICAgIipD
QVNUPGludDMyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGludE1lbVJl
ZgorICAgICAgICAiKkNBU1Q8aW50cHRyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisg
ICAgZGVmIHVpbnQ4TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50OF90Kj4oI3twb2ludGVyRXhw
cn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQx
Nl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50MzJNZW1SZWYKKyAg
ICAgICAgIipDQVNUPHVpbnQzMl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRl
ZiB1aW50TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50cHRyX3QqPigje3BvaW50ZXJFeHByfSki
CisgICAgZW5kCisgICAgZGVmIGRibE1lbVJlZgorICAgICAgICAiKkNBU1Q8ZG91YmxlKj4oI3tw
b2ludGVyRXhwcn0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICAg
IGRlZiBkdW1wCisgICAgICAgICIje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIGRl
ZiBjbFZhbHVlCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCisKKyMKKyMgTGVhIHN1cHBv
cnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgY2xvb3BFbWl0TGVhKGRlc3RpbmF0aW9u
KQorICAgICAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAgICAgICAkYXNtLnB1dGMg
IiN7ZGVzdGluYXRpb24uY2xWYWx1ZSg6aW50OFB0cil9ICs9ICN7b2Zmc2V0LmNsVmFsdWV9OyIK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmNsVmFs
dWUoOmludDhQdHIpfSA9ICN7YmFzZS5jbFZhbHVlKDppbnQ4UHRyKX0gKyAje29mZnNldC5jbFZh
bHVlfTsiCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAg
IGRlZiBjbG9vcEVtaXRMZWEoZGVzdGluYXRpb24pCisgICAgICAgIHJhaXNlICJNYWxmb3JtZWQg
QmFzZUluZGV4LCBvZmZzZXQgc2hvdWxkIGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIg
dW5sZXNzIG9mZnNldC52YWx1ZSA9PSAwCisgICAgICAgICRhc20ucHV0YyAiI3tkZXN0aW5hdGlv
bi5jbFZhbHVlKDppbnQ4UHRyKX0gPSAje2Jhc2UuY2xWYWx1ZSg6aW50OFB0cil9ICsgKCN7aW5k
ZXguY2xWYWx1ZX0gPDwgI3tzY2FsZVNoaWZ0fSk7IgorICAgIGVuZAorZW5kCisKKyMgRklYTUU6
IHdlIGNvdWxkIHN1cHBvcnQgQWJzb2x1dGVBZGRyZXNzIGZvciBsZWEsIGJ1dCB3ZSBkb24ndC4K
KworIworIyBBY3R1YWwgbG93ZXJpbmcgY29kZSBmb2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5j
ZQorICAgIGRlZiBnZXRNb2RpZmllZExpc3RDX0xPT1AKKyAgICAgICAgbXlMaXN0ID0gQGxpc3QK
KyAgICAgICAgCisgICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBvbmx5IHNlZSBpbnN0cnVj
dGlvbnMgYW5kIGxhYmVscy4KKyAgICAgICAgbXlMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBu
b2RlIHwKKyAgICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9yCisgICAg
ICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICAgICAgICAgICAg
bm9kZS5pc19hPyBMb2NhbExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8g
U2tpcAorICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7bm9kZS5pbnNwZWN0fSBh
dCAje25vZGUuY29kZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBteUxpc3QKKyAgICBlbmQKK2VuZAorCitkZWYgY2xPcGVyYW5k
cyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorZW5k
CisKKyMgbWxhbSBCRUdJTgorZGVmIG1sYW1EdW1wT3BlcmF0aW9uMkFyZ3Mob3BlcmFuZHMsIHR5
cGUsIG9wZXJhdG9yKQorICAgIGNhc2UgdHlwZQorICAgIHdoZW4gOmludDMyOyAgdmYgPSAiJWQi
CisgICAgd2hlbiA6aW50OyAgICB2ZiA9ICIlbGQiCisgICAgd2hlbiA6dWludDMyOyB2ZiA9ICIl
dSIKKyAgICB3aGVuIDp1aW50OyAgIHZmID0gIiVsdSIKKyAgICB3aGVuIDpkb3VibGU7IHZmID0g
IiVlIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIk9vcHM/IHR5cGU6ICN7dHlwZX0iCisgICAg
ZW5kICAgIAorCisgICAgJGFzbS5wdXRjICIgICAgICAgICNpZiBtbGFtX1BSSU5URiIKKyAgICAk
YXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiXFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PVxcblwiKTsiCisgICAgaWYgdHlwZSA9PSA6ZG91YmxlCisgICAg
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAg
IHByaW50ZihcIiAgICAgICN7b3BlcmF0b3J9IHR5cGUgI3t0eXBlfSB8ICN7dmZ9ICN7b3BlcmF0
b3J9ICN7dmZ9ID0+ICN7dmZ9IFxcblwiLCAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAj
e29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICBl
bHNlCisgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGVyYXRvcn0gdHlwZSAj
e3R5cGV9IHwgKCN7dmZ9ICN7b3BlcmF0b3J9PSAje3ZmfSkgPT4gI3t2Zn0gXFxuXCIsICN7b3Bl
cmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICgj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xW
YWx1ZSh0eXBlKX0pKTsiCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAg
ICAgI3tvcGVyYXRvcn0gdHlwZSAje3R5cGV9IHwgPCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9
IFslcF0gI3tvcGVyYXRvcn0gPCN7b3BlcmFuZHNbMF0uZHVtcH0+ICN7dmZ9IFslcF0gPT4gPCN7
b3BlcmFuZHNbMl0uZHVtcH0+ICN7dmZ9IFslcF1cXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZhbHVl
KHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAo
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNs
VmFsdWUodHlwZSl9KSwgKHZvaWQqKSgje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3Bl
cmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICAje29wZXJhdG9yfSB0eXBlICN7dHlwZX0g
fCA8I3tvcGVyYW5kc1sxXS5kdW1wfT4gI3t2Zn0gWyVwXSAje29wZXJhdG9yfSA8I3tvcGVyYW5k
c1swXS5kdW1wfT4gI3t2Zn0gWyVwXSkgPT4gPCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9IFsl
cF1cXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNb
MV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikj
e29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9KSwgKHZvaWQqKSgje29w
ZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSh0eXBlKX0pKTsiCisgICAgICAgIGVuZAorICAgIGVuZAorICAgICRhc20ucHV0YyAiICAgICAg
ICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxu
XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGIgor
ZW5kCisjIG1sYW0gRU5ECisKK2RlZiBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIHR5cGUs
IG9wZXJhdG9yKQorICAgIG1sYW1EdW1wT3BlcmF0aW9uMkFyZ3Mob3BlcmFuZHMsIHR5cGUsIG9w
ZXJhdG9yKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAkYXNtLnB1dGMgIiN7
b3BlcmFuZHNbMl0uY2xWYWx1ZSh0eXBlKX0gPSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9
ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX07IgorICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICByYWlzZSB1bmxl
c3Mgbm90IG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dGMgIiN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gPSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9
ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX07IgorICAgIGVuZAorZW5k
CisKK2RlZiBjbG9vcEVtaXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJh
bmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5wdXRjICJpZiAoaXNuYW4oI3tvcGVyYW5kc1swXS5j
bFZhbHVlKDpkb3VibGUpfSkgfHwgaXNuYW4oI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUp
fSkiCisgICAgJGFzbS5wdXRjICIgICAgfHwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6ZG91Ymxl
KX0gI3tjb25kaXRpb259ICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0pKSIKKyAgICAk
YXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCitlbmQKKworCitkZWYg
Y2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAj
IFRoZSByZXN1bHQgaXMgYSBib29sZWFuLiAgSGVuY2UsIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBi
YXNlZCBvbiB0aGUgdHlwZQorICAgICMgb2YgdGhlIGFyZ3VtZW50cyBiZWluZyBjb21wYXJlZC4K
KyAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY2xWYWx1ZX0gPSAoI3tvcGVyYW5kc1swXS5j
bFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9ICN7b3AyID0gb3BlcmFuZHNbMV0uY2xWYWx1ZSh0
eXBlKX0pOyIKK2VuZAorCisjIG1sYW0gQkVHSU4gREVCVUcgb25seQorZGVmIG1sYW1EdW1wQ29t
cGFyZUFuZEJyYW5jaEFyZ3Mob3BlcmFuZHMsIHR5cGUsIGNvbXBhcmF0b3IpCisgICAgY2FzZSB0
eXBlCisgICAgd2hlbiA6aW50LCA6aW50MzIsIDppbnQ4CisgICAgICAgICRhc20ucHV0YyAiI2lm
IG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNtLnB1dGMgInByaW50ZihcIlxcbiBtbGFtIENPTVBB
UkUgbGhzICVsZCAlcCAje2NvbXBhcmF0b3J9IHJocyAlbGQgJXAgPT0+IHJlc3VsdCAlZFxcblxc
blwiLCAoaW50cHRyX3QpI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3Bl
cmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sIChpbnRwdHJfdCkje29wZXJhbmRzWzFdLmNsVmFsdWUo
dHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKCN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlw
ZSl9KSk7IgorICAgICAgICAkYXNtLnB1dGMgIiNlbmRpZiAvLyBtbGFtX1BSSU5URiIKKyAgICB3
aGVuIDp1aW50LCA6dWludDMyLCA6dWludDgKKyAgICAgICAgJGFzbS5wdXRjICIjaWYgbWxhbV9Q
UklOVEYiCisgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiXFxuIG1sYW0gQ09NUEFSRSBsaHMg
JWx1ICVwICN7Y29tcGFyYXRvcn0gcmhzICVsdSAlcCA9PT4gcmVzdWx0ICVkXFxuXFxuXCIsICh1
aW50cHRyX3QpI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSh0eXBlKX0sICh1aW50cHRyX3QpI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSwgKHZvaWQqKSN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICgje29wZXJhbmRzWzBdLmNs
VmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSkp
OyIKKyAgICAgICAgJGFzbS5wdXRjICIjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgd2hlbiA6
ZG91YmxlCisgICAgICAgICRhc20ucHV0YyAiI2lmIG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNt
LnB1dGMgInByaW50ZihcIlxcbiBtbGFtIENPTVBBUkUgbGhzICVlICN7Y29tcGFyYXRvcn0gcmhz
ICVlID09PiByZXN1bHQgJWRcXG5cXG5cIiwgI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwg
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBl
KX0gI3tjb21wYXJhdG9yfSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAg
ICAkYXNtLnB1dGMgIiNlbmRpZiAvLyBtbGFtX1BSSU5URiIKKyAgICBlbHNlCisgICAgICAgIHJh
aXNlICJPb3BzOiB0eXBlID0gI3t0eXBlfSIKKyAgICBlbmQKK2VuZAorIyBtbGFtIEVORCBERUJV
RyBvbmx5CisKK2RlZiBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCB0eXBlLCBj
b21wYXJhdG9yKQorICAgICMgbWxhbUR1bXBDb21wYXJlQW5kQnJhbmNoQXJncyhvcGVyYW5kcywg
dHlwZSwgY29tcGFyYXRvcikKKyAgICAkYXNtLnB1dGMgImlmICgje29wZXJhbmRzWzBdLmNsVmFs
dWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSkiCisg
ICAgJGFzbS5wdXRjICIgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorZW5kCisKKwor
IyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250YWluIGEgc3RyaW5nIHRoYXQgcHJvdmlkZXMgYSBj
b21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1ZSBlLmcuICI8IDAiLgorZGVmIGNsb29wR2VuZXJh
dGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJhbmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAg
IG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSkKKworICAgICMgVGhlIG9wZXJhbmRzIG11
c3QgY29uc2lzdCBvZiAyIG9yIDMgdmFsdWVzLgorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAg
IHdoZW4gMiAjIEp1c3QgdGVzdCBvcDEgYWdhaW5zdCB0aGUgY29uZGl0aW9uVGVzdC4KKyAgICAg
ICAgbGhzID0gb3AxCisgICAgd2hlbiAzICMgTWFzayBvcDEgd2l0aCBvcDIgYmVmb3JlIHRlc3Rp
bmcgYWdhaW5zdCB0aGUgY29uZGl0aW9uVGVzdC4KKyAgICAgICAgbGhzID0gIigje29wMX0gJiAj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJF
eHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgIiN7bGhzfSAje2NvbmRpdGlvblRl
c3R9IgorZW5kCisKKyMgY29uZGl0aW9uVGVzdCBzaG91bGQgY29udGFpbiBhIHN0cmluZyB0aGF0
IHByb3ZpZGVzIGEgY29tcGFyYXRvciBhbmQgYSBSSFMKKyMgdmFsdWUgZS5nLiAiPCAwIi4KK2Rl
ZiBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIHR5cGUsIGNvbmRpdGlvblRlc3Qs
IGJyYW5jaFRhcmdldCkKKyAgICBjb25kaXRpb25FeHByID0gY2xvb3BHZW5lcmF0ZUNvbmRpdGlv
bkV4cHJlc3Npb24ob3BlcmFuZHMsIHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgJGFzbS5wdXRj
ICJpZiAoI3tjb25kaXRpb25FeHByfSkiCisgICAgJGFzbS5wdXRjICIgICAgZ290byAje2JyYW5j
aFRhcmdldH07IgorZW5kCisKK2RlZiBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCB0eXBlLCBj
b25kaXRpb25UZXN0KQorICAgICMgVGhlIHJlc3VsdCBpcyBhIGJvb2xlYW4gY29uZGl0aW9uLiAg
SGVuY2UsIHRoZSByZXN1bHQgdHlwZSBpcyBhbHdheXMgYW4KKyAgICAjIGludC4gIFRoZSBwYXNz
ZWQgaW4gdHlwZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSB2YWx1ZXMgYmVpbmcgdGVzdGVkIGluCisg
ICAgIyB0aGUgY29uZGl0aW9uIHRlc3QuCisgICAgY29uZGl0aW9uRXhwciA9IGNsb29wR2VuZXJh
dGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJhbmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1stMV0uY2xWYWx1ZX0gPSAoI3tjb25kaXRpb25FeHByfSk7
IgorZW5kCisKK2RlZiBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgb3BlcmF0b3IsIHR5
cGUsIGNvbmRpdGlvblRlc3QpCisgICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50OyAgIHRlbXBU
eXBlID0gImludHB0cl90IgorICAgIHdoZW4gOmludDMyOyB0ZW1wVHlwZSA9ICJpbnQzMl90Igor
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKwor
ICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSkKKyAgICBvcDIgPSBvcGVyYW5kc1sx
XS5jbFZhbHVlKHR5cGUpCisKKyAgICAkYXNtLnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAg
I3t0ZW1wVHlwZX0gdGVtcCA9ICN7b3AyfSAje29wZXJhdG9yfSAje29wMX07IgorICAgICRhc20u
cHV0YyAiICAgIGlmICh0ZW1wICN7Y29uZGl0aW9uVGVzdH0pIgorICAgICRhc20ucHV0YyAiICAg
ICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICRhc20ucHV0YyAiICAgICN7
b3AyfSA9IHRlbXA7IgorICAgICRhc20ucHV0YyAifSIKK2VuZAorCitkZWYgY2xvb3BBZGRPdmVy
Zmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUpCisgICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50MzIK
KyAgICAgICAgdGVtcFR5cGUgPSAiaW50MzJfdCIKKyAgICAgICAgc2lnbkJpdCA9ICJTSUdOX0JJ
VDMyIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIKKyAgICBl
bmQKKworICAgICRhc20ucHV0YyAiICAgICN7dGVtcFR5cGV9IGEgPSAje29wZXJhbmRzWzBdLmNs
VmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSBiID0gI3tvcGVy
YW5kc1sxXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5wdXRjICIgICAgLy8gc2lnbihiKSBz
aWduKGEpIHwgT3ZlcmZsb3dzIGlmOiIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAg
ICAgICAgfCBzaWduKGIrYSkgPSAxIChwb3MgKyBwb3MgIT0gbmVnKSIKKyAgICAkYXNtLnB1dGMg
IiAgICAvLyAwICAgICAgIDEgICAgICAgfCBuZXZlciIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAx
ICAgICAgIDAgICAgICAgfCBuZXZlciIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDEg
ICAgICAgfCBzaWduKGIrYSkgPSAwIChuZWcgKyBuZWcgIT0gcG9zKSIKKyAgICAiKCgje3NpZ25C
aXR9KGIpID09ICN7c2lnbkJpdH0oYSkpICYmICgje3NpZ25CaXR9KGIrYSkgIT0gI3tzaWduQml0
fShhKSkpIgorZW5kCisKK2RlZiBjbG9vcFN1Yk92ZXJmbG93VGVzdChvcGVyYW5kcywgdHlwZSkK
KyAgICBjYXNlIHR5cGUKKyAgICB3aGVuIDppbnQzMgorICAgICAgICB0ZW1wVHlwZSA9ICJpbnQz
Ml90IgorICAgICAgICBzaWduQml0ID0gIlNJR05fQklUMzIiCisgICAgZWxzZQorICAgICAgICBy
YWlzZSAiVW5pbXBsZW1lbnRlZCB0eXBlIgorICAgIGVuZAorCisgICAgJGFzbS5wdXRjICIgICAg
I3t0ZW1wVHlwZX0gYSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX07IgorICAgICRhc20u
cHV0YyAiICAgICN7dGVtcFR5cGV9IGIgPSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9OyIK
KyAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6Igor
ICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAgMCAgICAgICB8IG5ldmVyIgorICAgICRhc20u
cHV0YyAiICAgIC8vIDAgICAgICAgMSAgICAgICB8IHNpZ24oYi1hKSA9IDEgKHBvcyAtIG5lZyAh
PSBwb3MpIgorICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAgMCAgICAgICB8IHNpZ24oYi1h
KSA9IDAgKG5lZyAtIHBvcyAhPSBwb3MpIgorICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAg
MSAgICAgICB8IG5ldmVyIgorICAgICIoKCN7c2lnbkJpdH0oYikgIT0gI3tzaWduQml0fShhKSkg
JiYgKCN7c2lnbkJpdH0oYi1hKSA9PSAje3NpZ25CaXR9KGEpKSkiCitlbmQKKworZGVmIGNsb29w
TXVsT3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0eXBlKQorICAgIGNhc2UgdHlwZQorICAgIHdoZW4g
OmludDMyCisgICAgICAgIHRlbXBUeXBlID0gInVpbnQzMl90IgorICAgIGVsc2UKKyAgICAgICAg
cmFpc2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKyAgICAkYXNtLnB1dGMgIiAgICAj
e3RlbXBUeXBlfSBhID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5w
dXRjICIgICAgI3t0ZW1wVHlwZX0gYiA9ICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX07Igor
ICAgICIoKGIgfCBhKSA+PiAxNSkiCitlbmQKKworZGVmIGNsb29wRW1pdE9wQW5kQnJhbmNoSWZP
dmVyZmxvdyhvcGVyYW5kcywgb3BlcmF0b3IsIHR5cGUpCisgICAgJGFzbS5wdXRjICJ7IgorCisg
ICAgIyBFbWl0IHRoZSBvdmVyZmxvdyB0ZXN0IGJhc2VkIG9uIHRoZSBvcGVyYW5kcyBhbmQgdGhl
IHR5cGU6CisgICAgY2FzZSBvcGVyYXRvcgorICAgIHdoZW4gIisiOyBvdmVyZmxvd1Rlc3QgPSBj
bG9vcEFkZE92ZXJmbG93VGVzdChvcGVyYW5kcywgdHlwZSkKKyAgICB3aGVuICItIjsgb3ZlcmZs
b3dUZXN0ID0gY2xvb3BTdWJPdmVyZmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUpCisgICAgd2hlbiAi
KiI7IG92ZXJmbG93VGVzdCA9IGNsb29wTXVsT3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0eXBlKQor
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQgb3BlYXJ0b3IiCisgICAgZW5k
CisKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAje292ZXJmbG93VGVzdH0geyIKKyAgICAkYXNtLnB1
dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAgICAgICBwcmlu
dGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxu
XCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgUG90ZW50aWFsICN7
b3BlcmF0b3J9IG92ZXJmbG93ISEhISEgXFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAg
cHJpbnRmKFwiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxc
blwiKTsiCisgICAgJGFzbS5wdXRjICIgICAgICAgICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAg
ICRhc20ucHV0YyAiICAgICAgICBnb3RvICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgJGFz
bS5wdXRjICIgICAgfSIKKyAgICAkYXNtLnB1dGMgIiAgICAje29wZXJhbmRzWzFdLmNsVmFsdWUo
dHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJh
bmRzWzBdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1f
UFJJTlRGIgorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMg
IiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGVyYXRvcn0gcmVzdWx0ID0gJWQgXFxuXCIsICN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0pOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJp
bnRmKFwiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwi
KTsiCisgICAgJGFzbS5wdXRjICIgICAgICAgICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRh
c20ucHV0YyAifSIKK2VuZAorCisjIG9wZXJhbmRzOiBjYWxsVGFyZ2V0LCBjdXJyZW50RnJhbWUs
IGN1cnJlbnRQQworZGVmIGNsb29wRW1pdENhbGxTbG93UGF0aChvcGVyYW5kcykKKyAgICAkYXNt
LnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVj
U3RhdGUqPigje29wZXJhbmRzWzFdLmNsVmFsdWUoOnZvaWRQdHIpfSk7IgorICAgICRhc20ucHV0
YyAiICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPigje29wZXJhbmRzWzJd
LmNsVmFsdWUoOnZvaWRQdHIpfSk7IgorICAgICRhc20ucHV0YyAiICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSAje29wZXJhbmRzWzBdLmNMYWJlbH0oZXhlYywgcGMpOyIKKyAgICAkYXNt
LnB1dGMgIiAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAudS5pbnN0cnVjdGlvbiwg
cjEudS5leGVjU3RhdGUpOyIKKyAgICAkYXNtLnB1dGMgIiAgICBBU1NFUlQoY2FsbEZyYW1lICE9
IDApOyAvLyBtbGFtIERFQlVHIFRFU1Qgb25seSIKKyAgICAkYXNtLnB1dGMgIiAgICAjaWYgbWxh
bV9QUklOVEYiCisgICAgJGFzbS5wdXRjICIgICAgcHJpbnRmKFwibWxhbSBBRlRFUiBleGVjICVw
IHBjICVwXFxuXCIsIHIxLnUuZXhlY1N0YXRlLCByMC51Lmluc3RydWN0aW9uKTsiCisgICAgJGFz
bS5wdXRjICIgICAgI2VuZGlmIC8vbWxhbV9QUklOVEYiCisgICAgJGFzbS5wdXRjICJ9IgorZW5k
CisKK2NsYXNzIEluc3RydWN0aW9uCisgICAgZGVmIGxvd2VyQ19MT09QCisgICAgICAgIEBtbGFt
X1BSSU5URiA9IGZhbHNlCisgICAgICAgICRhc20uY29kZU9yaWdpbiBjb2RlT3JpZ2luU3RyaW5n
IGlmICRlbmFibGVDb2RlT3JpZ2luQ29tbWVudHMKKyAgICAgICAgJGFzbS5zb3VyY2VJbnN0cnVj
dGlvbiAiI3tvcGNvZGV9ICN7Y2xPcGVyYW5kcyhvcGVyYW5kcyl9OyIgaWYgJGVuYWJsZVNvdXJj
ZUluc3RydWN0aW9uRHVtcAorICAgICAgICAkYXNtLmFubm90YXRpb24gYW5ub3RhdGlvbiBpZiAk
ZW5hYmxlSW5zdHJBbm5vdGF0aW9ucworCisgICAgICAgICMgbWxhbSBCRUdJTgorICAgICAgICBp
ZiBAbWxhbV9QUklOVEYgYW5kIChvcGNvZGUgIT0gIm1sYW1EbyIpIGFuZCAob3Bjb2RlICE9ICJt
bGFtRHVtcCIpIGFuZCAob3Bjb2RlICE9ICJsb2NhbEFubm90YXRpb24iKSAKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI2lmIFVTRShKU1ZBTFVFMzJfNjQpIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgcHJpbnRmKFwiICAgIFtwYyAlcCBmcCAlcCBsciAlcF0gQVNNICN7b3Bjb2RlfSAje2Ns
T3BlcmFuZHMob3BlcmFuZHMpfVxcblwiLCB2UEMsIGNhbGxGcmFtZSwgclJldFZQQy51LnZwKTsi
CisgICAgICAgICAgICAkYXNtLnB1dGMgIiNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIgorICAgICAg
ICAgICAgJGFzbS5wdXRjICIgICAgcHJpbnRmKFwiICAgIFtwYyAlcCBwYiAlcCBmcCAlcCBjbHJm
cCAlcCBsciAlcF0gQVNNICN7b3Bjb2RlfSAje2NsT3BlcmFuZHMob3BlcmFuZHMpfVxcblwiLCB2
UEMsIHJCYXNlUEMudS52cCwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVG
bGFnKCk/MDpjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCksIHJSZXRWUEMudS52cCk7IgorICAgICAg
ICAgICAgJGFzbS5wdXRjICIjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkiCisgICAgICAgICAgICAj
ICRhc20ucHV0YyAiICAgIHByaW50ZihcIiAgICBbcGMgJXAgcGIgJXAgY3MgJXAgZnAgJXAgY2xy
ZnAgJXAgbHIgJXBdIEFTTSAje29wY29kZX0gI3tjbE9wZXJhbmRzKG9wZXJhbmRzKX1cXG5cIiwg
dlBDLCByQmFzZVBDLnUudnAsICghY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpICYm
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpP2NhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCk6MCwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVG
bGFnKCk/MDpjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCksIHJSZXRWUEMudS52cCk7IgorICAgICAg
ICBlbmQKKyAgICAgICAgIyBtbGFtIEVORAorCisgICAgICAgIGNhc2Ugb3Bjb2RlCisgICAgICAg
IHdoZW4gImFkZGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDpp
bnQzMiwgIisiKQorICAgICAgICB3aGVuICJhZGRwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6aW50LCAiKyIpCisKKyAgICAgICAgd2hlbiAiYW5kaSIKKyAgICAg
ICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiJiIpCisgICAgICAg
IHdoZW4gImFuZHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDpp
bnQsICImIikKKworICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVy
YXRpb24ob3BlcmFuZHMsIDppbnQzMiwgInwiKQorICAgICAgICB3aGVuICJvcnAiCisgICAgICAg
ICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICJ8IikKKworICAgICAgICB3
aGVuICJ4b3JpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50
MzIsICJeIikKKyAgICAgICAgd2hlbiAieG9ycCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJh
dGlvbihvcGVyYW5kcywgOmludCwgIl4iKQorCisgICAgICAgIHdoZW4gImxzaGlmdGkiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIjw8IikKKyAgICAg
ICAgd2hlbiAibHNoaWZ0cCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5k
cywgOmludCwgIjw8IikKKworICAgICAgICB3aGVuICJyc2hpZnRpIgorICAgICAgICAgICAgY2xv
b3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInJz
aGlmdHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICI+
PiIpCisKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVy
YXRpb24ob3BlcmFuZHMsIDp1aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInVyc2hpZnRwIgor
ICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6dWludCwgIj4+IikKKwor
ICAgICAgICB3aGVuICJtdWxpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJh
bmRzLCA6aW50MzIsICIqIikKKyAgICAgICAgd2hlbiAibXVscCIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludCwgIioiKQorCisgICAgICAgIHdoZW4gInN1Ymki
CisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIi0iKQor
ICAgICAgICB3aGVuICJzdWJwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJh
bmRzLCA6aW50LCAiLSIpCisKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICMgbWxh
bSAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfSA9IC0je29wZXJhbmRz
WzBdLmNsVmFsdWUoOmludDMyKX07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRz
WzBdLmNsVmFsdWUoOmludCl9ID0gLSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisg
ICAgICAgIHdoZW4gIm5lZ3AiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMF0u
Y2xWYWx1ZSg6aW50KX0gPSAtI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisKKyAgICAg
ICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgIiN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSg6aW50MzIpfSA9ICEje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX07Igor
ICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludCl9ID0gISN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisKKyAgICAgICAgd2hlbiAibG9hZGkiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29w
ZXJhbmRzWzBdLnVpbnQzMk1lbVJlZn07IgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMV0uY2xWYWx1ZSg6aW50MzIpfSA9ICN7b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIK
KyAgICAgICAgICAgIGlmIEBtbGFtX1BSSU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAi
cHJpbnRmKFwibWxhbSA6OiBsb2FkaSAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gJXAg
ZnJvbSBhZGRyICN7b3BlcmFuZHNbMF0udWludDMyTWVtUmVmfSAlcFxcblwiLCAodm9pZCopI3tv
cGVyYW5kc1sxXS5jbFZhbHVlfSwgJiN7b3BlcmFuZHNbMF0udWludDMyTWVtUmVmfSk7IgorICAg
ICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImxvYWRpcyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQpfSA9ICN7b3BlcmFuZHNbMF0uaW50MzJNZW1S
ZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZHAiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmludE1lbVJlZn07IgorICAg
ICAgICB3aGVuICJzdG9yZWkiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIje29wZXJh
bmRzWzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50KX07IgorICAg
ICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisgICAgICAgIHdoZW4gInN0b3JlcCIKKyAgICAgICAg
ICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5pbnRNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5j
bFZhbHVlKDppbnQpfTsiCisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAgICAgIyBtbGFt
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBd
LnVpbnQ4TWVtUmVmfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xW
YWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4g
ImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpp
bnQpfSA9ICN7b3BlcmFuZHNbMF0uaW50OE1lbVJlZn07IgorICAgICAgICB3aGVuICJzdG9yZWIi
CisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLnVpbnQ4TWVtUmVm
fSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dGMg
IiN7b3BlcmFuZHNbMV0udWludDhNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQ4
KX0iCisgICAgICAgIHdoZW4gImxvYWRoIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAi
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQxNk1lbVJl
Zn07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9
ID0gI3tvcGVyYW5kc1swXS51aW50MTZNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZGhzIgor
ICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tv
cGVyYW5kc1swXS5pbnQxNk1lbVJlZn07IgorICAgICAgICB3aGVuICJzdG9yZWgiCisgICAgICAg
ICAgICAjIG1sYW0gJGFzbS5wdXRjICIqI3tvcGVyYW5kc1sxXS51aW50MTZNZW1SZWZ9ID0gI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIioje29w
ZXJhbmRzWzFdLnVpbnQxNk1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDE2KX07
IgorICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1sxXS5jbFZhbHVlKDpkb3VibGUpfSA9ICN7b3BlcmFuZHNbMF0uZGJsTWVtUmVmfTsiCisgICAg
ICAgIHdoZW4gInN0b3JlZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5k
YmxNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfTsiCisKKyAgICAgICAg
d2hlbiAiYWRkZCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRv
dWJsZSwgIisiKQorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6ZG91YmxlLCAiLyIpCisgICAgICAgIHdoZW4gInN1YmQiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDpkb3VibGUsICItIikKKyAgICAg
ICAgd2hlbiAibXVsZCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywg
OmRvdWJsZSwgIioiKQorCisgICAgICAgIHdoZW4gInNxcnRkIgorICAgICAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9ID0gc3FydCgje29wZXJhbmRzWzFd
LmNsVmFsdWUoOmRvdWJsZSl9KTsiCisgICAgICAgIHdoZW4gImNpMmQiICAjIENvbnZlcnQgYW4g
aW50IHZhbHVlIHRvIGl0cyBkb3VibGUgZXF1aXZhbGVudC4KKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSg6aW50MzIpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJ
TlRGIgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIlxcblxcbiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cIik7IgorICAgICAgICAg
ICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIiAgICAgICN7b3Bjb2RlfSAje29wZXJhbmRz
WzFdLmNsVmFsdWUoOmRvdWJsZSl9ICVlID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlfSAlZCAoMHgl
eClcXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS5j
bFZhbHVlKDppbnQzMil9LCAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX0pOyIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgICAgICAgICAKKyAgICAgICAgd2hl
biAiYmRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMs
IDpkb3VibGUsICI9PSIpCisgICAgICAgIHdoZW4gImJkbmVxIgorICAgICAgICAgICAgY2xvb3BF
bWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmRvdWJsZSwgIiE9IikKKyAgICAgICAgd2hl
biAiYmRndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMs
IDpkb3VibGUsICI+Iik7CisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI+PSIpOworICAgICAgICB3
aGVuICJiZGx0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5k
cywgOmRvdWJsZSwgIjwiKTsKKyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmRvdWJsZSwgIjw9Iik7CisKKyAgICAg
ICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhO
YU5DaGVja0FuZEJyYW5jaChvcGVyYW5kcywgIj09IikKKyAgICAgICAgd2hlbiAiYmRuZXF1biIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2go
b3BlcmFuZHMsICIhPSIpCisgICAgICAgIHdoZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsICI+IikKKyAg
ICAgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlRG91Ymxl
V2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiPj0iKQorICAgICAgICB3aGVuICJiZGx0
dW4iCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJh
bmNoKG9wZXJhbmRzLCAiPCIpCisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5jaChvcGVyYW5kcywgIjw9
IikKKworICAgICAgICB3aGVuICJidGQyaSIKKyAgICAgICAgICAgICMgRklYTUU6IG1heSBiZSBh
IGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlvbiwgc2luY2UgdGhl
IGludGVycHJldGVyCisgICAgICAgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2UgaXQuCisg
ICAgICAgICAgICByYWlzZSAiQ19MT09QIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0
LCAje2NvZGVPcmlnaW59IgorCisgICAgICAgIHdoZW4gInRkMmkiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmRvdWJsZSl9OyIKKworICAgICAgICB3aGVuICJiY2QyaSIgICMgb3BlcmFuZHM6IHNyY0Ri
bCBkc3RJbnQgc2xvd1BhdGgKKyAgICAgICAgICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiICAgIGRvdWJsZSBkID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUp
fTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBjb25zdCBpbnQzMl90IGFzSW50MzIgPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihkKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpZiAo
YXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAmJiBzaWduYml0KGQpKSkgLy8gdHJ1ZSBmb3IgLTAu
MCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNM
YWJlbH07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgI3tvcGVyYW5kc1sxXS5jbFZhbHVl
fSA9IGFzSW50MzI7IiAgICAgICAgICAgIAorICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorCisg
ICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0u
Y2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludCl9OyIKKyAgICAgICAg
d2hlbiAic3hpMnAiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1
ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX07IgorICAgICAgICB3aGVu
ICJ6eGkycCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1
aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOnVpbnQzMil9OyIKKyAgICAgICAgd2hlbiAi
bm9wIgorICAgICAgICAgICAgJGFzbS5wdXRjICIvLyBub3AiCisgICAgICAgIHdoZW4gImJiZXEi
CisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwg
Ij09IikKKyAgICAgICAgd2hlbiAiYmllcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj09IikKKyAgICAgICAgd2hlbiAiYnBlcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQsICI9PSIp
CisKKyAgICAgICAgd2hlbiAiYmJuZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
QnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIiE9IikKKyAgICAgICAgd2hlbiAiYmluZXEiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50MzIsICIhPSIp
CisgICAgICAgIHdoZW4gImJwbmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJy
YW5jaChvcGVyYW5kcywgOmludCwgIiE9IikKKworICAgICAgICB3aGVuICJiYmEiCisgICAgICAg
ICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWludDgsICI+IikKKyAg
ICAgICAgd2hlbiAiYmlhIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChv
cGVyYW5kcywgOnVpbnQzMiwgIj4iKQorICAgICAgICB3aGVuICJicGEiCisgICAgICAgICAgICBj
bG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWludCwgIj4iKQorCisgICAgICAg
IHdoZW4gImJiYWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVy
YW5kcywgOnVpbnQ4LCAiPj0iKQorICAgICAgICB3aGVuICJiaWFlcSIKKyAgICAgICAgICAgIGNs
b29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50MzIsICI+PSIpCisgICAgICAg
IHdoZW4gImJwYWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVy
YW5kcywgOnVpbnQsICI+PSIpCisKKyAgICAgICAgd2hlbiAiYmJiIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQ4LCAiPCIpCisgICAgICAgIHdo
ZW4gImJpYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMs
IDp1aW50MzIsICI8IikKKyAgICAgICAgd2hlbiAiYnBiIgorICAgICAgICAgICAgY2xvb3BFbWl0
Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQsICI8IikKKworICAgICAgICB3aGVuICJi
YmJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1
aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAiYmliZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWludDMyLCAiPD0iKQorICAgICAgICB3aGVuICJi
cGJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1
aW50LCAiPD0iKQorCisgICAgICAgIHdoZW4gImJiZ3QiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIj4iKQorICAgICAgICB3aGVuICJiaWd0
IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDMy
LCAiPiIpCisgICAgICAgIHdoZW4gImJwZ3QiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJl
QW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50LCAiPiIpCisKKyAgICAgICAgd2hlbiAiYmJndGVxIgor
ICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI+
PSIpCisgICAgICAgIHdoZW4gImJpZ3RlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj49IikKKyAgICAgICAgd2hlbiAiYnBndGVxIgor
ICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIj49
IikKKworICAgICAgICB3aGVuICJiYmx0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI8IikKKyAgICAgICAgd2hlbiAiYmlsdCIKKyAgICAg
ICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIjwiKQor
ICAgICAgICB3aGVuICJicGx0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5j
aChvcGVyYW5kcywgOmludCwgIjwiKQorCisgICAgICAgIHdoZW4gImJibHRlcSIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQ4LCAiPD0iKQorICAg
ICAgICB3aGVuICJiaWx0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCA6aW50MzIsICI8PSIpCisgICAgICAgIHdoZW4gImJwbHRlcSIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQsICI8PSIpCisKKyAg
ICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihv
cGVyYW5kcywgOmludDgsICI9PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hl
biAiYnRpeiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywg
OmludDMyLCAiPT0gMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisgICAgICAgIHdoZW4gImJ0cHoi
CisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQsICI9
PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKworICAgICAgICB3aGVuICJidGJueiIKKyAgICAg
ICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDgsICIhPSAwIiwg
b3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpbnoiCisgICAgICAgICAgICBj
bG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQzMiwgIiE9IDAiLCBvcGVyYW5k
c1stMV0uY0xhYmVsKQorICAgICAgICB3aGVuICJidHBueiIKKyAgICAgICAgICAgIGNsb29wRW1p
dFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludCwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xh
YmVsKQorCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8i
CisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgICMgbWxhbSBlbWl0Q1hYVGVzdChvcGVyYW5kcykK
KyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgIyBtbGFtICRhc20ucHV0YyAiYnZzICN7b3BlcmFu
ZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGNsb29wRW1pdFRlc3RB
bmRCcmFuY2hJZihvcGVyYW5kcywgInZzIikgIyBCcmFuY2ggaWYgb3ZlcmZsb3cuCisgICAgICAg
IHdoZW4gImJ0YnMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFu
ZHMsIDppbnQ4LCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRp
cyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMy
LCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRwcyIKKyAgICAg
ICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludCwgIjwgMCIsIG9w
ZXJhbmRzWy0xXS5jTGFiZWwpCisKKyAgICAgICAgd2hlbiAiam1wIgorICAgICAgICAgICAgaWYg
b3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvICN7b3Bl
cmFuZHNbMF0uY0xhYmVsfTsiCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFz
bS5wdXRjICJnb3RvICoje29wZXJhbmRzWzBdLmNsVmFsdWUoOnZvaWRQdHIpfTsiCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgd2hlbiAiY2FsbCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQ1JB
U0goKTsgLy8gZ2VuZXJpYyBjYWxsIG5vdCBzdXBwb3J0ZWQhIgorICAgICAgICAgICAgaWYgb3Bl
cmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAgICAg
ICAgICAgICRhc20ucHV0YyAiICAgIHZvaWQgKCpmKSgpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KCopKCk+KCN7b3BlcmFuZHNbMF0uY0xhYmVsfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0
YyAiICAgIGYoKTsiCisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICAgICAkYXNt
LnB1dGMgIiAgICB2b2lkICgqZikoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPigje29w
ZXJhbmRzWzBdLmNsVmFsdWUoOnZvaWRQdHIpfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0
YyAiICAgIGYoKTsiCisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAg
ZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgp
OyAvLyBOb3QgaGFuZGxlZCB5ZXQuIgorICAgICAgICB3aGVuICJyZXRfbWxhbSIKKyAgICAgICAg
ICAgICRhc20ucHV0YyAiZ290byBkb1JldHVybkhlbHBlcjsiCisKKyAgICAgICAgd2hlbiAiY2Jl
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50OCwg
Ij09IikKKyAgICAgICAgd2hlbiAiY2llcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRTZXQob3BlcmFuZHMsIDp1aW50MzIsICI9PSIpCisgICAgICAgIHdoZW4gImNwZXEiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIj09IikKKwor
ICAgICAgICB3aGVuICJjYm5lcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQo
b3BlcmFuZHMsIDp1aW50OCwgIiE9IikKKyAgICAgICAgd2hlbiAiY2luZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiIT0iKQorICAgICAg
ICB3aGVuICJjcG5lcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFu
ZHMsIDp1aW50LCAiIT0iKQorCisgICAgICAgIHdoZW4gImNiYSIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50OCwgIj4iKQorICAgICAgICB3aGVuICJj
aWEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMy
LCAiPiIpCisgICAgICAgIHdoZW4gImNwYSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRTZXQob3BlcmFuZHMsIDp1aW50LCAiPiIpCisKKyAgICAgICAgd2hlbiAiY2JhZXEiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDgsICI+PSIpCisg
ICAgICAgIHdoZW4gImNpYWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChv
cGVyYW5kcywgOnVpbnQzMiwgIj49IikKKyAgICAgICAgd2hlbiAiY3BhZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIj49IikKKworICAgICAg
ICB3aGVuICJjYmIiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRz
LCA6dWludDgsICI8IikKKyAgICAgICAgd2hlbiAiY2liIgorICAgICAgICAgICAgY2xvb3BFbWl0
Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIjwiKQorICAgICAgICB3aGVuICJjcGIi
CisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIjwi
KQorCisgICAgICAgIHdoZW4gImNiYmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImNpYmVxIgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIjwiKQorICAg
ICAgICB3aGVuICJjcGJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3Bl
cmFuZHMsIDp1aW50LCAiPCIpCisKKyAgICAgICAgd2hlbiAiY2JndCIKKyAgICAgICAgICAgIGNs
b29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQ4LCAiPiIpCisgICAgICAgIHdoZW4g
ImNpZ3QiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50
MzIsICI+IikKKyAgICAgICAgd2hlbiAiY3BndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBh
cmVBbmRTZXQob3BlcmFuZHMsIDppbnQsICI+IikKKworICAgICAgICB3aGVuICJjYmd0ZXEiCisg
ICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50OCwgIj49IikK
KyAgICAgICAgd2hlbiAiY2lndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNl
dChvcGVyYW5kcywgOmludDMyLCAiPj0iKQorICAgICAgICB3aGVuICJjcGd0ZXEiCisgICAgICAg
ICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAiPj0iKQorCisgICAg
ICAgIHdoZW4gImNibHQiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJh
bmRzLCA6aW50OCwgIjwiKQorICAgICAgICB3aGVuICJjaWx0IgorICAgICAgICAgICAgY2xvb3BF
bWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludDMyLCAiPCIpCisgICAgICAgIHdoZW4gImNw
bHQiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAi
PCIpCisKKyAgICAgICAgd2hlbiAiY2JsdGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZFNldChvcGVyYW5kcywgOmludDgsICI8PSIpCisgICAgICAgIHdoZW4gImNpbHRlcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQzMiwgIjw9IikK
KyAgICAgICAgd2hlbiAiY3BsdGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNl
dChvcGVyYW5kcywgOmludCwgIjw9IikKKworICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRp
byIsICJ0Ym8iLCAidHBvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgICBjbG9vcEVtaXRUZXN0
U2V0KG9wZXJhbmRzLCAidnMiKQorCisgICAgICAgIHdoZW4gInRicyIKKyAgICAgICAgICAgIGNs
b29wRW1pdFRlc3RTZXQob3BlcmFuZHMsIDppbnQ4LCAiPCAwIikKKyAgICAgICAgd2hlbiAidGlz
IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDMyLCAiPCAwIikK
KyAgICAgICAgd2hlbiAidHBzIgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5k
cywgOmludCwgIjwgMCIpCisKKyAgICAgICAgd2hlbiAidGJ6IgorICAgICAgICAgICAgY2xvb3BF
bWl0VGVzdFNldChvcGVyYW5kcywgOmludDgsICI9PSAwIikKKyAgICAgICAgd2hlbiAidGl6Igor
ICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDMyLCAiPT0gMCIpCisg
ICAgICAgIHdoZW4gInRweiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RTZXQob3BlcmFuZHMs
IDppbnQsICI9PSAwIikKKworICAgICAgICB3aGVuICJ0Ym56IgorICAgICAgICAgICAgY2xvb3BF
bWl0VGVzdFNldChvcGVyYW5kcywgOmludDgsICIhPSAwIikKKyAgICAgICAgd2hlbiAidGlueiIK
KyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RTZXQob3BlcmFuZHMsIDppbnQzMiwgIiE9IDAiKQor
ICAgICAgICB3aGVuICJ0cG56IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5k
cywgOmludCwgIiE9IDAiKQorCisgICAgICAgIHdoZW4gImNkcWkiCisgICAgICAgICAgICAjIFNp
Z24gZXh0ZW5kIHRoZSAzMiBiaXQgaW50IHRvIGEgZnVsbCB3b3JkOgorICAgICAgICAgICAgJGFz
bS5wdXRjICJyMC51LnUzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHIwLnUuaSk7IC8vIGNob3Ag
b2ZmIGhpZ2ggMzJiaXQiCisgICAgICAgICAgICAkYXNtLnB1dGMgInIwLnUuaSA9IHN0YXRpY19j
YXN0PGludDY0X3Q+KHIwLnUuaTMyKTsgLy8gc2lnbiBleHRlbmQiCisgICAgICAgIHdoZW4gImlk
aXZpIgorICAgICAgICAgICAgIyBEaXZpZGUgcjAgYnkgdGhlIHNwZWNpZmllZCBhcmcsIGFuZCBz
dG9yZSB0aGUgcmVtYWluZGVyIGluIHIxLAorICAgICAgICAgICAgIyBhbmQgcXVvdGllbnQgaW4g
cjA6CisgICAgICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICBpbnQzMl90IGRpdmlzb3IgPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX07IgorICAg
ICAgICAgICAgJGFzbS5wdXRjICIgICAgcjEudS5pMzIgPSByMC51LmkzMiAlIGRpdmlzb3I7IC8v
IHJlbWFpbmRlciIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIHIwLnUuaTMyID0gcjAudS5p
MzIgLyBkaXZpc29yOyAvLyBxdW90aWVudCIKKyAgICAgICAgICAgICRhc20ucHV0YyAifSIKKyAg
ICAgICAgd2hlbiAiZmlpMmQiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0u
Y2xWYWx1ZSg6ZG91YmxlKX0gPSBJbnRzMkRvdWJsZSgje29wZXJhbmRzWzBdLmNsVmFsdWUoOnVp
bnQpfSwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0pOyIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICAgICAgcHJpbnRmKFwiXFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PVxcblwiKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwi
ICAgICAgI3tvcGNvZGV9ICN7b3BlcmFuZHNbMl0uY2xWYWx1ZSg6ZG91YmxlKX0gJWUgPSBJbnRz
MkRvdWJsZSgje29wZXJhbmRzWzBdLmNsVmFsdWUoOnVpbnQpfSAweCVseCwgI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKDp1aW50KX0gMHglbHh9KVxcblwiLCAje29wZXJhbmRzWzJdLmNsVmFsdWUoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzBdLmNsVmFsdWUoOnVpbnQpfSwgI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKDp1aW50KX0pOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAg
ICAgIHdoZW4gImZkMmlpIgorICAgICAgICAgICAgJGFzbS5wdXRjICJEb3VibGUySW50cygje29w
ZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLmNsVmFsdWV9LCAje29w
ZXJhbmRzWzJdLmNsVmFsdWV9KTsiCisgICAgICAgIHdoZW4gImZwMmQiICAjIENvcHkgYSBiaXQt
ZW5jb2RlZC1kb3VibGUgaW4gYW4gaW50cHRyIHRvIGEgZG91YmxlIHN0b3JhZ2UuCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0gPSAje29wZXJh
bmRzWzBdLmNsVmFsdWUoOmNhc3RUb0RvdWJsZSl9OyIKKyAgICAgICAgICAgIGlmIEBtbGFtX1BS
SU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiICAgI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKDpkb3VibGUpfSA9ICVlXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91
YmxlKX0pOyIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAg
ICNpZiBtbGFtX1BSSU5URiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYo
XCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIp
OyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICAje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSAlZSA9ICN7b3BlcmFuZHNbMF0uY2xW
YWx1ZSg6dWludCl9IDB4JWx4XFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludCl9KTsiCisgICAgICAgICAgICAkYXNtLnB1dGMg
IiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PVxcblxcblwiKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8v
IG1sYW1fUFJJTlRGIgorCisgICAgICAgIHdoZW4gImZkMnAiICAjIENvcHkgYSBkb3VibGUgYXMg
YSBiaXQtZW5jb2RlZC1kb3VibGUgaW50byBhbiBpbnRwdHIgc3RvcmFnZS4KKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp2b2lkUHRyKX0gPSAje29wZXJhbmRz
WzBdLmNsVmFsdWUoOmNhc3RUb1ZvaWRQdHIpfTsiCisgICAgICAgIHdoZW4gImxlYWkiLCAibGVh
cCIKKyAgICAgICAgICAgIG9wZXJhbmRzWzBdLmNsb29wRW1pdExlYShvcGVyYW5kc1sxXSkKKwor
ICAgICAgICB3aGVuICJiYWRkaW8iCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaElm
T3ZlcmZsb3cob3BlcmFuZHMsICIrIiwgOmludDMyKQorICAgICAgICB3aGVuICJic3ViaW8iCisg
ICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaElmT3ZlcmZsb3cob3BlcmFuZHMsICItIiwg
OmludDMyKQorICAgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFu
ZEJyYW5jaElmT3ZlcmZsb3cob3BlcmFuZHMsICIqIiwgOmludDMyKQorCisgICAgICAgIHdoZW4g
ImJhZGRpcyIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIs
IDppbnQzMiwgIjwgMCIpCisgICAgICAgIHdoZW4gImJhZGRpeiIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIsIDppbnQzMiwgIj09IDAiKQorICAgICAgICB3
aGVuICJiYWRkaW56IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMs
ICIrIiwgOmludDMyLCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiYmFkZHBzIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMsICIrIiwgOmludCwgIjwgMCIpCisgICAg
ICAgIHdoZW4gImJhZGRweiIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJh
bmRzLCAiKyIsIDppbnQsICI9PSAwIikKKyAgICAgICAgd2hlbiAiYmFkZHBueiIKKyAgICAgICAg
ICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIsIDppbnQsICIhPSAwIikKKwor
ICAgICAgICB3aGVuICJic3ViaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChv
cGVyYW5kcywgIi0iLCA6aW50LCAiPCAwIikKKyAgICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAg
ICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMsICItIiwgOmludCwgIj09IDAiKQor
ICAgICAgICB3aGVuICJic3ViaW56IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2go
b3BlcmFuZHMsICItIiwgOmludCwgIiE9IDAiKQorCisgICAgICAgIHdoZW4gImJvcnJpcyIKKyAg
ICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAifCIsIDppbnQsICI8IDAi
KQorICAgICAgICB3aGVuICJib3JyaXoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5j
aChvcGVyYW5kcywgInwiLCA6aW50LCAiPT0gMCIpCisgICAgICAgIHdoZW4gImJvcnJpbnoiCisg
ICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgInwiLCA6aW50LCAiIT0g
MCIpCisKKyAgICAgICAgd2hlbiAiY3h4Q3Jhc2giCisgICAgICAgICAgICAkYXNtLnB1dGMgIkNS
QVNIKCk7IgorICAgICAgICB3aGVuICJjeHhDYWxsSlNGdW5jdGlvbiIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiclJldFZQQy51LnZwID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRCYWROYXRp
dmVSZXR1cm4pOyIgIyBtbGFtIFRFU1QgcmV0dXJuUEMKKyAgICAgICAgICAgICRhc20ucHV0YyAi
QVNTRVJUKHJSZXRWUEMudS52cCAhPSAwKTsiICMgbWxhbSBURVNUIHJldHVyblBDCisKKyAgICAg
ICAgICAgICMgbWxhbSBDT01QVVRFRF9HT1RPICRhc20ucHV0YyAib3Bjb2RlID0gZ2V0T3Bjb2Rl
KGJpdHdpc2VfY2FzdDxPcGNvZGVJRD4oI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfSkpOyIK
KyAgICAgICAgICAgICRhc20ucHV0YyAib3Bjb2RlID0gTExJbnQ6OkRhdGE6OmdldE9wY29kZShz
dGF0aWNfY2FzdDxMTEludE9wY29kZUlEPigje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludCl9KSk7
IgorICAgICAgICAgICAgJGFzbS5wdXRjICJBU1NFUlQoclJldFZQQy51LnZwICE9IDApOyIgIyBt
bGFtIFRFU1QgcmV0dXJuUEMKKyAgICAgICAgICAgICRhc20ucHV0YyAiZ290byBkb0NhbGxIZWxw
ZXI7IgorCisgICAgICAgIHdoZW4gImN4eENhbGxOYXRpdmUiCisgICAgICAgICAgICBpZiBAbWxh
bV9QUklOVEYKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgInByaW50ZihcIlxcbioqKioqKioq
KioqKioqKioqKioqKioqKiBtbGFtIGN4eENhbGxOYXRpdmUoKVxcblxcblwiKTsiCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0YyAibmF0aXZlRnVuYyA9ICN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSg6bmF0aXZlRnVuYyl9OyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiZnVuY3Rp
b25SZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShuYXRpdmVGdW5jKHIwLnUuZXhlY1N0YXRl
KSk7IgorICAgICAgICAgICAgJGFzbS5wdXRjICIjaWYgVVNFKEpTVkFMVUUzMl82NCkiCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIiAgICByMS51LmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnRhZygp
OyIgICAgICAgICAjIEZJWE1FOiBXZSdyZSBhc3N1bWluZyBhIGNlcnRhaW4gZW5kaWFubmVzcyBo
ZXJlLgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgcjAudS5pID0gZnVuY3Rpb25SZXR1cm5W
YWx1ZS5wYXlsb2FkKCk7IgorICAgICAgICAgICAgJGFzbS5wdXRjICIjZWxzZSAvLyBVU0VfSlNW
QUxVRTY0KSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIHIwLnUuZW5jb2RlZEpTVmFsdWUg
PSBKU1ZhbHVlOjplbmNvZGUoZnVuY3Rpb25SZXR1cm5WYWx1ZSk7IgorICAgICAgICAgICAgJGFz
bS5wdXRjICIjZW5kaWYgLy8gVVNFX0pTVkFMVUU2NCkiICAgICAgICAgICAgCisKKyAgICAgICAg
d2hlbiAiY3h4Q2FsbFNsb3dQYXRoIgorICAgICAgICAgICAgY2xvb3BFbWl0Q2FsbFNsb3dQYXRo
KG9wZXJhbmRzKQorCisgICAgICAgIHdoZW4gImN4eEluZGlyZWN0SnVtcCIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAib3Bjb2RlID0gc3RhdGljX2Nhc3Q8TExJbnRPcGNvZGU+KCN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSg6aW5zdHJ1Y3Rpb24pfSk7IgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0
YyAibWxhbUJyZWFrKFwiaW5kaXJlY3RKdW1wXCIsIDAsMCk7IgorICAgICAgICAgICAgJGFzbS5w
dXRjICJnb3RvIGRvSW5kaXJlY3RKdW1wSGVscGVyOyIKKworICAgICAgICB3aGVuICJjeHhKdW1w
VG9HbHVlIgorICAgICAgICAgICAgJGFzbS5wdXRjICJvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8TExJ
bnRPcGNvZGU+KE9GRkxJTkVfQVNNX0dFVF9HTFVFX0xBQkVMKCN7b3BlcmFuZHNbMF0uY0xhYmVs
fSkpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiZ290byBkb0luZGlyZWN0SnVtcEhlbHBlcjsi
CisKKyAgICAgICAgd2hlbiAiY3h4TmF0aXZlUmV0dXJuIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICJnb3RvIGRvTmF0aXZlUmV0dXJuSGVscGVyOyIKKworICAgICAgICB3aGVuICJjeHhOZXh0T3Bj
b2RlIgorICAgICAgICAgICAgJGFzbS5wdXRjICJORVhUX0lOU1RSVUNUSU9OKCk7IgorCisgICAg
ICAgIHdoZW4gImN4eFRyYWNlIgorICAgICAgICAgICAgJGFzbS5wdXRjVHJhY2VMYXN0R2xvYmFs
TGFiZWwKKworICAgICAgICB3aGVuICJtbGFtQnJlYWsiCisgICAgICAgICAgICAkYXNtLnB1dGMg
Im1sYW1CcmVhayhcIm1sYW1CcmVha1wiLCBfX0ZJTEVfXywgX19MSU5FX18pOyIKKyAgICAgICAg
d2hlbiAibWxhbURvIgorICAgICAgICAgICAgJGFzbS5hbm5vdGF0aW9uIG5pbAorICAgICAgICAg
ICAgaWYgQG1sYW1fUFJJTlRGCisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICIje2Fubm90YXRp
b259IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gIm1sYW1EdW1wIgorICAgICAgICAg
ICAgJGFzbS5hbm5vdGF0aW9uIG5pbAorICAgICAgICAgICAgaWYgQG1sYW1fUFJJTlRGCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICJwcmludGYoXCIgKioqICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZX0gPSAlbGQgJXBcXG5cIiwgI3tvcGVyYW5kc1swXS5jbFZhbHVlfSwgI3tvcGVyYW5kc1swXS5j
bFZhbHVlKDp2b2lkUHRyKX0pOyIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBsb3dlckRlZmF1bHQKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIJKHJldmlzaW9uIDEyNDY0
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAotJHByZWZlcnJlZENvbW1lbnRTdGFydENvbHVtbiA9IDcw
CiskcHJlZmVycmVkQ29tbWVudFN0YXJ0Q29sdW1uID0gNjIKIAogCiAjIFR1cm5zIG9uIGR1bXBp
bmcgb2YgdGhlIGNvdW50IG9mIGxhYmVscy4KQEAgLTU0LDQgKzU0LDQgQEAgJGVuYWJsZUNvZGVP
cmlnaW5Db21tZW50cyA9IHRydWUKICMgICAgIlx0bW92bCA1MiglcmN4KSwgJWVjeFxuIiAgIC8v
IHQyPHNpemVfdD4gPSB0MjxDb2RlQmxvY2s+Lm1fbnVtVmFycwogIyAgICAgLi4uCiAjCi0kZW5h
YmxlSW5zdHJBbm5vdGF0aW9ucyA9IGZhbHNlCiskZW5hYmxlSW5zdHJBbm5vdGF0aW9ucyA9IHRy
dWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBA
IE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJib3JpbnoiLAogICAgICAiYnJlYWsiLAogICAg
ICAiY2FsbCIsCi0gICAgICJyZXQiLAorICAgICAicmV0X21sYW0iLAogICAgICAiY2JlcSIsCiAg
ICAgICJjYm5lcSIsCiAgICAgICJjYmEiLApAQCAtMjExLDYgKzIxMSw5IEBAIE1BQ1JPX0lOU1RS
VUNUSU9OUyA9CiAgICAgICJibnoiLAogICAgICAibGVhaSIsCiAgICAgICJsZWFwIiwKKyAgICAg
Im1sYW1CcmVhayIsICAgICAgIyBubyBvcGVyYW5kcyAuLi4gZm9yIGRlYnVnZ2luZyBvbmx5Cisg
ICAgICJtbGFtRG8iLCAgICAgICAgICMgbm8gb3BlcmFuZHMKKyAgICAgIm1sYW1EdW1wIiwgICAg
ICAgIyBvcGVyYW5kczogdmFsdWVUb0R1bXAKICAgICBdCiAKIFg4Nl9JTlNUUlVDVElPTlMgPQpA
QCAtMjI3LDcgKzIzMCwyMCBAQCBBUk12N19JTlNUUlVDVElPTlMgPQogICAgICAib3JpcyIKICAg
ICBdCiAKLUlOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElP
TlMgKyBBUk12N19JTlNUUlVDVElPTlMKK0NYWF9JTlNUUlVDVElPTlMgPQorICAgIFsKKyAgICAg
ImN4eENyYXNoIiwgICAgICAgICAgICMgbm8gb3BlcmFuZHMKKyAgICAgImN4eENhbGxKU0Z1bmN0
aW9uIiwgICMgb3BlcmFuZHM6IGNhbGxlZQorICAgICAiY3h4Q2FsbE5hdGl2ZSIsICAgICAgIyBv
cGVyYW5kczogY2FsbGVlCisgICAgICJjeHhDYWxsU2xvd1BhdGgiLCAgICAjIG9wZXJhbmRzOiBj
YWxsVGFyZ2V0LCBjdXJyZW50RnJhbWUsIGN1cnJlbnRQQworICAgICAiY3h4SW5kaXJlY3RKdW1w
IiwgICAgIyBvcGVyYW5kczoganVtcFRhcmdldAorICAgICAiY3h4SnVtcFRvR2x1ZSIsICAgICAg
IyBvcGVyYW5kczogZ2x1ZUNvZGVUYXJnZXQKKyAgICAgImN4eE5hdGl2ZVJldHVybiIsICAgICMg
bm8gb3BlcmFuZHMKKyAgICAgImN4eE5leHRPcGNvZGUiLCAgICAgICMgbm8gb3BlcmFuZHMKKyAg
ICAgImN4eFRyYWNlIiwgICAgICAgICAgICMgbm8gb3BlcmFuZHMKKyAgICBdCisKK0lOU1RSVUNU
SU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNU
UlVDVElPTlMgKyBDWFhfSU5TVFJVQ1RJT05TCiAKIElOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQogCkBA
IC0yMzYsNiArMjUyLDYgQEAgZGVmIGlzQnJhbmNoKGluc3RydWN0aW9uKQogZW5kCiAKIGRlZiBo
YXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKLSAgICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQg
aW5zdHJ1Y3Rpb24gIT0gImptcCIKKyAgICBpbnN0cnVjdGlvbiAhPSAicmV0X21sYW0iIGFuZCBp
bnN0cnVjdGlvbiAhPSAiam1wIgogZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS94ODYucmIJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2luZyBjb3B5KQpAQCAtODM1LDEwICs4MzUsMTAgQEAg
Y2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6
Ynl0ZSkKICAgICAgICAgd2hlbiAiYmJsdGVxIgogICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbHRlcSIsIDpieXRlKQotICAgICAgICB3aGVuICJidGlvIgotICAgICAgICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQotICAgICAgICB3aGVuICJidHBvIgotICAgICAg
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6cHRyKQorICAgICAgICAjIG1sYW0gVU5V
U0VEIHdoZW4gImJ0aW8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpvIiwgOmludCkKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJidHBvIgorICAg
ICAgICAjIG1sYW0gVU5VU0VEICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpwdHIpCiAg
ICAgICAgIHdoZW4gImJ0aXMiCiAgICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIs
IDppbnQpCiAgICAgICAgIHdoZW4gImJ0cHMiCkBAIC04NTEsOCArODUxLDggQEAgY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCiAg
ICAgICAgIHdoZW4gImJ0cG56IgogICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56
IiwgOnB0cikKLSAgICAgICAgd2hlbiAiYnRibyIKLSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpvIiwgOmJ5dGUpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAiYnRibyIKKyAg
ICAgICAgIyBtbGFtIFVOVVNFRCAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQog
ICAgICAgICB3aGVuICJidGJzIgogICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMi
LCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiYnRieiIKQEAgLTkwNSw3ICs5MDUsNyBAQCBjbGFzcyBJ
bnN0cnVjdGlvbgogICAgICAgICAgICAgJGFzbS5wdXRzICJpbnQgJDMiCiAgICAgICAgIHdoZW4g
ImNhbGwiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxs
T3BlcmFuZCg6cHRyKX0iCi0gICAgICAgIHdoZW4gInJldCIKKyAgICAgICAgd2hlbiAicmV0X21s
YW0iCiAgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKICAgICAgICAgd2hlbiAiY2llcSIKICAg
ICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQpAQCAtOTY3LDI0
ICs5NjcsMjQgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGxlIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImNwbHRlcSIKICAgICAgICAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOnB0cikKLSAgICAgICAgd2hlbiAi
dGlvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgICAg
ICMgbWxhbSBVTlVTRUQgd2hlbiAidGlvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQogICAgICAgICB3aGVuICJ0aXMiCiAgICAgICAgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKICAgICAgICAgd2hlbiAidGl6IgogICAg
ICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCiAgICAgICAgIHdoZW4gInRp
bnoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCi0gICAgICAg
IHdoZW4gInRwbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6cHRyKQor
ICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRwbyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpwdHIpCiAgICAgICAgIHdoZW4gInRwcyIKICAg
ICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6cHRyKQogICAgICAgICB3aGVuICJ0
cHoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOnB0cikKICAgICAgICAg
d2hlbiAidHBueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOnB0cikK
LSAgICAgICAgd2hlbiAidGJvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIs
IDpieXRlKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRibyIKKyAgICAgICAgIyBtbGFt
IFVOVVNFRCAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQogICAgICAgICB3aGVu
ICJ0YnMiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCiAgICAg
ICAgIHdoZW4gInRieiIKQEAgLTEwMjcsNiArMTAyNywxMCBAQCBjbGFzcyBJbnN0cnVjdGlvbgog
ICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0ueDg2QWRkcmVzc09wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgogICAgICAgICB3aGVu
ICJsZWFwIgogICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeCg6cHRyKX0gI3tv
cGVyYW5kc1swXS54ODZBZGRyZXNzT3BlcmFuZCg6cHRyKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6cHRyKX0iCisgICAgICAgIHdoZW4gIm1sYW1CcmVhayIKKyAgICAgICAgICAgICMKKyAg
ICAgICAgd2hlbiAibWxhbURvIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3thbm5v
dGF0aW9ufSIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG93ZXJEZWZhdWx0CiAgICAgICAg
IGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgY2hlY2tT
eW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKiBy
ZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKGV4ZWMtPmdsb2JhbERh
dGEoKS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVy
VGFibGUoKSk7CkBAIC03Miw3ICs3Miw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUMKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
OwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3Jh
bSwgZXhlYywgc2NvcGVDaGFpbiwgdGhpc09iaik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlX21sYW1QKHByb2dyYW0sIGV4ZWMsIHNjb3BlQ2hhaW4s
IHRoaXNPYmopOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNW
YWx1ZSogZXhjZXB0aW9uID0gMCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFs
dWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IEpTVmFsdWUoKSwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDggQEAgdm9pZCBFeGVj
dXRhYmxlQmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbAogCiB2b2lkIEV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGUoKQogewotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQor
I2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICBtX2ppdENvZGVGb3JDYWxsLmNs
ZWFyKCk7CiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CkBAIC0zMDcs
NyArMzA4LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAg
IEFTU0VSVCghIW1fcHJvZ3JhbUNvZGVCbG9jayk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gMDsK
ICAgICBpZiAobV9wcm9ncmFtQ29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6dG9w
VGllckpJVCgpKQotICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbChleGVjLCBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6bmV4dFRpZXJKSVQobV9wcm9ncmFtQ29kZUJsb2NrLT5nZXRKSVRU
eXBlKCkpKTsKKyAgICAgICAgZXJyb3IgPSBjb21waWxlSW50ZXJuYWxfbWxhbVAoZXhlYywgc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6Om5leHRUaWVySklUKG1fcHJvZ3JhbUNvZGVCbG9jay0+Z2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKCEhbV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICByZXR1
cm4gZXJyb3I7CiB9CkBAIC0zMTksNyArMzIwLDcgQEAgYm9vbCBQcm9ncmFtRXhlY3V0YWJsZTo6
aml0Q29tcGlsZShFeGVjUwogfQogI2VuZGlmCiAKLUpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCitKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbF9tbGFtUChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewogICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlw
ZSkpOwogICAgIApAQCAtNTE0LDggKzUxNSwxMCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yCiAgICAgQVNTRVJUKChqaXRUeXBlID09IEpJVENvZGU6OmJvdHRvbVRp
ZXJKSVQoKSkgPT0gIW1fY29kZUJsb2NrRm9yQ2FsbCk7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlv
bjsKICAgICBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IG5ld0NvZGVCbG9jayA9IHByb2R1Y2VD
b2RlQmxvY2tGb3Ioc2NvcGVDaGFpbk5vZGUsICEhbV9jb2RlQmxvY2tGb3JDYWxsID8gT3B0aW1p
emluZ0NvbXBpbGF0aW9uIDogRmlyc3RDb21waWxhdGlvbiwgQ29kZUZvckNhbGwsIGV4Y2VwdGlv
bik7Ci0gICAgaWYgKCFuZXdDb2RlQmxvY2spCisgICAgaWYgKCFuZXdDb2RlQmxvY2spIHsKKyAg
ICAgICAgcHJpbnRmKCJcblxuIG1sYW0gRVhDRVBUSU9OIEAgJXMgJXM6JWRcblxuIiwgX19GVU5D
VElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gZXhjZXB0aW9uOwor
ICAgIH0KIAogICAgIG5ld0NvZGVCbG9jay0+c2V0QWx0ZXJuYXRpdmUoc3RhdGljX3BvaW50ZXJf
Y2FzdDxDb2RlQmxvY2s+KG1fY29kZUJsb2NrRm9yQ2FsbC5yZWxlYXNlKCkpKTsKICAgICBtX2Nv
ZGVCbG9ja0ZvckNhbGwgPSBuZXdDb2RlQmxvY2sucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTI0NjQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsNyArMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgdm9pZCBjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKik7CiAKLSNpZiBF
TkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSYgZ2Vu
ZXJhdGVkSklUQ29kZUZvckNhbGwoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9q
aXRDb2RlRm9yQ2FsbCk7CkBAIC0yMDAsMTggKzIwMCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9udW1QYXJhbWV0ZXJzRm9y
Q29uc3RydWN0KTsKICAgICAgICAgfQotI2VuZGlmCisvLyBtbGFtICNlbmRpZgogCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBFeGVjdXRhYmxlQmFzZSogbV9wcmV2OwogICAgICAgICBFeGVjdXRh
YmxlQmFzZSogbV9uZXh0OwogCi0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShK
SVQpCiAgICAgICAgIEpJVENvZGUgbV9qaXRDb2RlRm9yQ2FsbDsKICAgICAgICAgSklUQ29kZSBt
X2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjazsKLSNlbmRpZgorLy8gbWxhbSAj
ZW5kaWYKICAgICB9OwogCiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVj
dXRhYmxlQmFzZSB7CkBAIC0yMjEsMjIgKzIyMSwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICAg
ICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UKQorICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3Jl
YXRlX21sYW0oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Y2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGlu
dHJpbnNpYykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFnbG9iYWxEYXRhLmludGVy
cHJldGVyLT5jbGFzc2ljRW5hYmxlZCgpKTsKICAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGU7CiAgICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykgewogICAgICAgICAgICAg
ICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRh
YmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0
aW9uLCBjb25zdHJ1Y3Rvcik7Ci0gICAgICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSwgSklUQ29kZSgpLCBKSVRDb2RlKCksIGludHJpbnNpYyk7CisgICAg
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb25fbWxhbShnbG9iYWxEYXRhLCBK
SVRDb2RlKCksIEpJVENvZGUoKSwgaW50cmluc2ljKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5h
dGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxl
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY2FsbFRo
dW5rKSwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgaW50cmluc2ljKTsK
KyAgICAgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbl9tbGFtKGdsb2JhbERh
dGEsIEpJVENvZGU6Okhvc3RGdW5jdGlvbihjYWxsVGh1bmspLCBKSVRDb2RlOjpIb3N0RnVuY3Rp
b24oY29uc3RydWN0VGh1bmspLCBpbnRyaW5zaWMpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENM
QVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKTsKQEAgLTI0Niw2ICsyNDcsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCisvKiBURU1QIFdPUksgT05MWSBPQlNP
TEVURSBtbGFtIEJFR0lOCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgc3RhdGlj
IE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZV9tbGFtKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IpCisgICAgICAgIC8vIG1sYW0gc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFn
bG9iYWxEYXRhLmNhblVzZUpJVCgpKTsKKyAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihn
bG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBj
b25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbl9tbGFt
KGdsb2JhbERhdGEsIGNhbGxUaHVuaywgY29uc3RydWN0VGh1bmssIE5vSW50cmluc2ljKTsKKyAg
ICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlOworICAgICAgICB9CisjZW5kaWYKKy8vIG1sYW0g
RU5EICovCisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogI2VuZGlmCkBAIC0yNjEsNyArMjc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5rLCBKSVRDb2RlIGNv
bnN0cnVjdFRodW5rLCBJbnRyaW5zaWMgaW50cmluc2ljKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uX21sYW0oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlIGNhbGxUaHVuaywgSklUQ29kZSBjb25zdHJ1
Y3RUaHVuaywgSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKCFnbG9iYWxEYXRhLmludGVycHJldGVyLT5jbGFzc2ljRW5hYmxlZCgpKTsKICAgICAgICAg
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwpAQCAtNDQzLDcgKzQ1OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmdsb2JhbERhdGEoKS5k
eW5hbWljR2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IDA7CiAg
ICAgICAgICAgICBpZiAoIW1fcHJvZ3JhbUNvZGVCbG9jaykKLSAgICAgICAgICAgICAgICBlcnJv
ciA9IGNvbXBpbGVJbnRlcm5hbChleGVjLCBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6Ym90dG9t
VGllckpJVCgpKTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbF9tbGFt
UChleGVjLCBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVCghZXJyb3IgPT0gISFtX3Byb2dyYW1Db2RlQmxvY2spOwogICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9CkBAIC00ODUsNyArNTAwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYp
OwogCi0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVD
aGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRUeXBlKTsKKyAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVJ
bnRlcm5hbF9tbGFtUChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5
cGUpOwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVC
bG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
NyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlCiAgICAgQ29uc3Ry
dWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHRhcmdldEZ1bmN0
aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBib29sIGNhbkNvbnN0cnVjdCA9IGNvbnN0cnVjdFR5
cGUgIT0gQ29uc3RydWN0VHlwZU5vbmU7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihib3VuZEZ1bmN0aW9uQ2Fs
bCwgY2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbl9tbGFtMShib3VuZEZ1bmN0aW9uQ2FsbCwg
Y2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKTsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNCb3VuZEZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNCb3Vu
ZEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlKCksIHRhcmdldEZ1bmN0aW9uLCBib3VuZFRoaXMsIGJvdW5kQXJncyk7CiAKICAg
ICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1l
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTAgKzY3LDEwIEBAIEpTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUKICNlbHNlCiAgICAgaWYgKGludHJpbnNpYyAh
PSBOb0ludHJpbnNpYyAmJiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpIHsKICAgICAg
ICAgQVNTRVJUKG5hdGl2ZUNvbnN0cnVjdG9yID09IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKTsKLSAgICAgICAgZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVu
Y3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7CisgICAgICAgIGV4ZWN1dGFibGUgPSBl
eGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uX21sYW0yKG5hdGl2ZUZ1bmN0aW9uLCBp
bnRyaW5zaWMpOwogICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGV4ZWN1dGFibGUgPSBleGVj
LT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBuYXRpdmVDb25z
dHJ1Y3Rvcik7CisgICAgICAgIGV4ZWN1dGFibGUgPSBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9z
dEZ1bmN0aW9uX21sYW0xKG5hdGl2ZUZ1bmN0aW9uLCBuYXRpdmVDb25zdHJ1Y3Rvcik7CiAKICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVu
Y3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1
cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdD
IGFsbG9jYXRpb24uCkBAIC0xNzYsNiArMTc2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogYwogCiBDYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0Nl
bGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKKyAgICAvLyBwcmludGYoIiBtbGFtIFdB
UyBIRVJFISBAICVzICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7
CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7
CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKICAgICAgICAgY2FsbERh
dGEubmF0aXZlLmZ1bmN0aW9uID0gdGhpc09iamVjdC0+bmF0aXZlRnVuY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2
aXNpb24gMTI0NjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI4LDYgKzMyOCw3IEBAIEpTR2xvYmFsRGF0YSom
IEpTR2xvYmFsRGF0YTo6c2hhcmVkSW5zdGEKIH0KIAogI2lmIEVOQUJMRShKSVQpCisvLyBtbGFt
ICNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiBzdGF0aWMgVGh1bmtHZW5lcmF0b3Ig
dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIHsKICAgICBz
d2l0Y2ggKGludHJpbnNpYykgewpAQCAtMzU3LDIyICszNTgsMzAgQEAgc3RhdGljIFRodW5rR2Vu
ZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9Cisv
Ki8gbWxhbSBCRUdJTgorI2VuZGlmCiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvcikKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpIAorLy8gbWxhbSBF
TkQgKi8KK05hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uX21s
YW0xKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikK
IHsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikgLy8gbWxhbSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCiAgICAg
aWYgKCFjYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdGhpcywgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKICNlbmRpZgotICAgIHJldHVybiBqaXRT
dHVicy0+aG9zdEZ1bmN0aW9uU3R1Yih0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOworICAg
IHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1Yl9tbGFtMSh0aGlzLCBmdW5jdGlvbiwg
Y29uc3RydWN0b3IpOwogfQotTmF0aXZlRXhlY3V0YWJsZSogSlNHbG9iYWxEYXRhOjpnZXRIb3N0
RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMpCisK
KyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCitOYXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6
OmdldEhvc3RGdW5jdGlvbl9tbGFtMihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnNpYykKIHsKICAgICBBU1NFUlQoY2FuVXNlSklUKCkpOwotICAgIHJldHVybiBqaXRT
dHVicy0+aG9zdEZ1bmN0aW9uU3R1Yih0aGlzLCBmdW5jdGlvbiwgaW50cmluc2ljICE9IE5vSW50
cmluc2ljID8gdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoaW50cmluc2ljKSA6IDAsIGludHJp
bnNpYyk7CisgICAgcmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHViX21sYW0yKHRoaXMs
IGZ1bmN0aW9uLCBpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRvckZvcklu
dHJpbnNpYyhpbnRyaW5zaWMpIDogMCwgaW50cmluc2ljKTsKIH0KKyNlbmRpZiAvLyBtbGFtCisK
ICNlbHNlCi1OYXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCitOYXRp
dmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbl9tbGFtMShOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7CiAgICAgcmV0
dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDE0ICszMDAsMTUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxLZXl3b3Jkcz4ga2V5d29yZHM7CiAgICAgICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlcjsKICNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5B
QkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8SklUVGh1bmtzPiBqaXRT
dHViczsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdldENUSVN0dWIoVGh1bmtHZW5l
cmF0b3IgZ2VuZXJhdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gaml0U3R1YnMt
PmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAgICAgICAgfQotICAgICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyk7CisgICAg
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbl9tbGFtMihOYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljKTsKICNlbmRpZgotICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0
RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsKKyAg
ICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uX21sYW0xKE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgVGltZW91dENoZWNr
ZXIgdGltZW91dENoZWNrZXI7CiAgICAgICAgIFRlcm1pbmF0b3IgdGVybWluYXRvcjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUg
IlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQuaCIKIApAQCAtMTQyLDYgKzE0MywxMSBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzCiAgICAgbV9nbG9iYWxTY29wZUNo
YWluLnNldChnbG9iYWxEYXRhKCksIHRoaXMsIFNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUoMCwgdGhp
cywgJmdsb2JhbERhdGEoKSwgdGhpcywgdGhpc1ZhbHVlKSk7CiAKICAgICBKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsRXhlYygpLT5pbml0KDAsIDAsIG1fZ2xvYmFsU2NvcGVDaGFpbi5nZXQoKSwgQ2Fs
bEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1s
YW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShKU0dsb2JhbE9iamVjdDo6Z2xv
YmFsRXhlYygpLCAiICA+Pj4gUFVTSEVEIHRvIG5ldyAiLCAwLCBfX0ZVTkNUSU9OX18sIF9fRklM
RV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCisgICAgLy8gbWxhbSBFTkQKIAogICAgIG1fZGVi
dWdnZXIgPSAwOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CiAjZW5kaWYKICAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50OjpEYXRhOworICAgICAgICAvLyBtbGFtIEJFR0lOCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKKyAgICAgICAgLy8gbWxhbSBFTkQKIAogICAg
IHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTY2LDYgKzE2OSw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOwogICAg
ICAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcgbG9uZyk7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFs
dWUodW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICAgICAgLy8gbWxhbSBCRUdJTiAuLi4gbmVlZCB0
byBtYWtlIHRoaXMgYSBzcGVjaWFsIHByaXZpbGVnZWQgb3BlcmF0aW9uLgorICAgICAgICBleHBs
aWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpOworICAgICAgICAvLyBt
bGFtIEVORAogCiAgICAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdDsKICAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsKQEAgLTI3Miw2ICsyNzgsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKIAogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyBUaGUgTExJTlQg
QyBMb29wIG5lZWRzIHRvIGFjY2VzcyB0aGUgdGFnIGFuZCBwYXlsb2FkIGRpcmVjdGx5LgorICAg
IHB1YmxpYzoKKyNlbmRpZgogICAgICAgICAvKgogICAgICAgICAgKiBPbiAzMi1iaXQgcGxhdGZv
cm1zIFVTRShKU1ZBTFVFMzJfNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFO
LWVuY29kZWQKICAgICAgICAgICogZm9ybSBmb3IgaW1tZWRpYXRlcy4KQEAgLTI5Miw2ICszMDMs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAqLwogICAgICAgICB1aW50MzJfdCB0YWco
KSBjb25zdDsKICAgICAgICAgaW50MzJfdCBwYXlsb2FkKCkgY29uc3Q7CisKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQorICAgIHByaXZhdGU6CisjZW5kaWYKKwogI2VsaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgLyoKICAgICAgICAgICogT24gNjQtYml0IHBsYXRmb3JtcyBVU0UoSlNWQUxV
RTY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIHdlIHVzZSBhIE5hTi1lbmNvZGVkCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRo
b2RzLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsMTQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOwogICAgIH0K
IAorICAgIC8vIG1sYW0gQkVHSU4gRklYTUUgLi4uIG5lZWQgdG8gbWFrZSB0aGlzIGEgc3BlY2lh
bCBwcml2aWxlZ2VkIG9wZXJhdGlvbi4KKyAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQz
Ml90IHRhZywgaW50MzJfdCBwYXlsb2FkKQorICAgIHsKKyAgICAgICAgdS5hc0JpdHMudGFnID0g
dGFnOworICAgICAgICB1LmFzQml0cy5wYXlsb2FkID0gcGF5bG9hZDsKKyAgICB9CisgICAgLy8g
bWxhbSBFTkQgKi8KKwogICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBpc0ludDMyKCkgfHwgaXNEb3VibGUoKTsKQEAgLTMyMyw3
ICszMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHBheWxvYWQoKTsKICAg
ICB9CiAKLSNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCisjZWxzZSAvLyAhVVNFKEpTVkFMVUUz
Ml82NCkKIAogICAgIC8vIEpTVmFsdWUgbWVtYmVyIGZ1bmN0aW9ucy4KICAgICBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw2ICsxMzgsMTEgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICA7IC8v
IERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgogI2VuZGlmCiAgICAg
CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQorICAgIHVzZUpJVCgpID0gZmFsc2U7
CisgICAgdXNlREZHSklUKCkgPSBmYWxzZTsKKyNlbmRpZiAvLyBtbGFtCisKICAgICAvLyBEbyBy
YW5nZSBjaGVja3Mgd2hlcmUgbmVlZGVkIGFuZCBtYWtlIGNvcnJlY3Rpb25zIHRvIHRoZSBvcHRp
b25zOgogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpID49
IHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSk7CiAgICAgQVNTRVJUKHRocmVzaG9s
ZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSk7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAvKiBJbmNsdWRlIGNv
bXBpbGVyIHNwZWNpZmljIG1hY3JvcyAqLwogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogCisv
LyBtbGFtIEJFR0lOCisjZGVmaW5lIEVOQUJMRV9KSVQgMAorLy8gbWxhbSBFTkQKKwogLyogPT09
PSBQTEFURk9STSBoYW5kbGVzIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQsIGdyYXBoaWNzIEFQ
SSwgYW5kCiAgICBDUFUuIFRoaXMgbWFjcm8gd2lsbCBiZSBwaGFzZWQgb3V0IGluIGZhdm9yIG9m
IHBsYXRmb3JtIGFkYXB0YXRpb24KICAgIG1hY3JvcywgcG9saWN5IGRlY2lzaW9uIG1hY3Jvcywg
YW5kIHRvcC1sZXZlbCBwb3J0IGRlZmluaXRpb25zLiA9PT09ICovCkBAIC04OTIsNiArODk2LDE1
IEBACiAgICAgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSkK
ICNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKICNlbmRpZgorLy8gbWxhbSBCRUdJTgorI2lmICFFTkFC
TEUoSklUKQorICAgICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMAorICAgICNk
ZWZpbmUgRU5BQkxFX0pJVCAwCisgICAgI2RlZmluZSBFTkFCTEVfTExJTlQgMQorICAgICNkZWZp
bmUgRU5BQkxFX1lBUlJfSklUIDAKKyAgICAjZGVmaW5lIEVOQUJMRV9MTElOVF9DX0xPT1AgMQor
I2VuZGlmCisvLyBtbGFtIEVORCAqLwogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYm
IEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBP
bmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KQEAgLTkzMSwxMCArOTQ0LDExIEBA
CiAjZW5kaWYKIAogLyogRW5zdXJlIHRoYXQgZWl0aGVyIHRoZSBKSVQgb3IgdGhlIGludGVycHJl
dGVyIGhhcyBiZWVuIGVuYWJsZWQuICovCi0jaWYgIWRlZmluZWQoRU5BQkxFX0NMQVNTSUNfSU5U
RVJQUkVURVIpICYmICFFTkFCTEUoSklUKQorI2lmICFkZWZpbmVkKEVOQUJMRV9DTEFTU0lDX0lO
VEVSUFJFVEVSKSAmJiAhRU5BQkxFKEpJVCkgJiYgIUVOQUJMRShMTElOVCkKICNkZWZpbmUgRU5B
QkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMQogI2VuZGlmCi0jaWYgIShFTkFCTEUoSklUKSB8fCBF
TkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikpCisvLyBtbGFtIG9yaWcgI2lmICEoRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpKQorI2lmICEoRU5BQkxFKEpJVCkgfHwg
RU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpCiAjZXJyb3IgWW91
IGhhdmUgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgZXhlY3V0aW9uIG1vZGVsIGVuYWJsZWQgdG8gYnVp
bGQgSlNDCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDEyNDY0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7Ci0gICAgICAgIHJldHVybiBKU0M6OmV2YWx1YXRlKGV4ZWMsIGNoYWluLCBzb3Vy
Y2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGVf
bWxhbUNvbXBsZXRpb24oZXhlYywgY2hhaW4sIHNvdXJjZSwgdGhpc1ZhbHVlLCBleGNlcHRpb24p
OwogICAgIH07CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9q
c29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTI0NjQ4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgX05QTl9F
dmFsdWF0ZShOUFAgaW5zdGFuY2UsIE5QT2JqZWMKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7CiAgICAgICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBjb252ZXJ0TlBTdHJpbmdUb1VU
RjE2KHMpOwogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6ZXZh
bHVhdGUocm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHRT
dHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBK
U0M6OmV2YWx1YXRlX21sYW1Db21wbGV0aW9uKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWlu
KCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgICAg
IGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJldHVyblZhbHVlLCB2YXJpYW50KTsKICAg
ICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX2pzb2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX2pzb2JqZWN0Lm1tCShyZXZpc2lvbiAxMjQ2NDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMx
NCw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpldmFsKGpzdHJpbmcgc2NyaXAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsK
ICAgICAKICAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVv
dXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKHJv
b3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoSmF2YVN0cmluZyhzY3Jp
cHQpLmltcGwoKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0ZV9tbGFtQ29t
cGxldGlvbihyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCByb290T2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKEphdmFT
dHJpbmcoc2NyaXB0KS5pbXBsKCkpKTsKICAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgIHJldHVybiBjb252ZXJ0
VmFsdWVUb0pPYmplY3QocmVzdWx0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158355</attachid>
            <date>2012-08-14 10:05:19 -0700</date>
            <delta_ts>2012-08-14 10:09:03 -0700</delta_ts>
            <desc>work in progress 5: more bug fixes, some clean up, and incorporated some of Filip&apos;s feedback.</desc>
            <filename>bug-91052-wop5.patch</filename>
            <type>text/plain</type>
            <size>346158</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDUgQEAKICNlbHNlCiAjZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19P
Tl9HQ0MgMQogI2VuZGlmCisKKyNkZWZpbmUgbWxhbV9QUklOVEYgMApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwogICAgIFN0b3BX
YXRjaCBzdG9wV2F0Y2g7CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7Ci0gICAgZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZleGNlcHRp
b24pOworICAgIGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5k
YXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXhjZXB0aW9uKTsKICAgICBzdG9wV2F0Y2gu
c3RvcCgpOwogCiAgICAgaWYgKCEhZXhjZXB0aW9uKSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYQogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAg
SlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1
ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRpYyBi
b29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAgZ2xvYmFsRGF0YS5zdGFy
dFNhbXBsaW5nKCk7CiAKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0
LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICBK
U1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3Vy
Y2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwog
ICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICAg
ICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYo
IkVuZDogJXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpA
QCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVj
dCoKICAgICAgICAgaWYgKGxpbmVbMF0pCiAgICAgICAgICAgICBhZGRfaGlzdG9yeShsaW5lKTsK
ICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBKU1ZhbHVlIHJl
dHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9i
amVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2UobGluZSwgaW50ZXJwcmV0ZXJOYW1l
KSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLCBp
bnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAg
ICAgZnJlZShsaW5lKTsKICNlbHNlCiAgICAgICAgIHByaW50ZigiJXMiLCBpbnRlcmFjdGl2ZVBy
b21wdCk7CkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xv
YmFsT2JqZWN0KgogICAgICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKIAogICAgICAgICBKU1ZhbHVl
IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFs
dWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1
ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUg
PSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50
ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAjZW5kaWYK
ICAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYoIkV4
Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpT
Q29udGV4dFJlZgogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVz
dHJpbmcoKSwgc291cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSkpOwogCiAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUg
cmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZSwganNUaGlzT2JqZWN0LCAmZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgc291cmNlLCBqc1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9u
KTsKIAogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRp
b24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2
aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMJKHdvcmtpbmcgY29weSkKQEAgLTEwMzIsNiArMTAzMiwxMyBAQCBzdGF0aWMgdm9pZCBjaGVj
a0NvbnN0bmVzc0luSlNPYmplY3ROYW1lCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCiB7CisgICAgLy8gbWxhbSBCRUdJTgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsg
aSsrKSB7CisgICAgICAgIHByaW50ZigiICVzIiwgYXJndltpXSk7CisgICAgfQorICAgIHByaW50
ZigiXG4iKTsKKyAgICAvLyBtbGFtIEVORAorCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBDeWd3
aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyksIHdoaWNoIHdl
IHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCiAgICAgLy8gdGVzdGluZy9kZWJ1Z2dpbmcs
IGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgbm90IHRvIGJlIGludm9rZWQu
IFdlIHJlc2V0IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDkgQEAKIAkJ
RTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3
MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwogCQlFNDlEQzE2QzEy
RUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTExMkVGMjcyMjAwMTg0QTFGIC8q
IFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNEEz
MzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyog
Vk1JbnNwZWN0b3IuY3BwICovOyB9OworCQlGRTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1J
bnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovOyB9OworCQlGRTdF
Rjg5QTE1REE0NEM4MDA0Q0NBNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAvKiBM
TEludE9wY29kZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xNDk3LDYgKzE1MDAs
OSBAQAogCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVU3RyaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NjAy
NTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsK
KwkJRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZNSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU0QTMzMUUxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAvKiBMTElu
dE9wY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9wY29kZS5o
OyBwYXRoID0gbGxpbnQvTExJbnRPcGNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0xNjMwLDYgKzE2MzYsNyBA
QAogCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAv
KiBMTEludE9wY29kZS5oICovLAogCQkJCTVERERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBMTElu
dERlc2lyZWRPZmZzZXRzLmggKi8sCiAJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50RW50cnlwb2ludHMuY3BwICovLAogCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmggKi8sCkBAIC0xNjk5LDYgKzE3MDYsOCBAQAogCQkxNDI5RDc3QTBF
RDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNEEzMzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3Bl
Y3Rvci5jcHAgKi8sCisJCQkJRkU0QTMzMUUxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9y
LmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICov
LAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJ
QTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENhY2hlZENhbGwuaCAqLywKQEAgLTI4NjYsNyAr
Mjg3NSw5IEBACiAJCQkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDQ0MTVCMkEzQzAw
MDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZENDYx
NUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTdFRjg5QTE1REE0NEM4
MDA0Q0NBNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzQ2NCw2ICszNDc1
LDcgQEAKIAkJCQkwRjc2NkQyRjE1QThEQ0UwMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM0MTVBRTI1MzgwMDhGMzYzRSAvKiBK
dW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4
MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFNEEzMzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYzOTQ0MDE1Qzc1RjFEMDA2QTU5N0MgLyogREZH
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2Nh
dG9yLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIiAvLyBtbGFtCiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTI4OSwxMCArMjkwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIC8vIG1s
YW0gc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVMTEludENvZGVQdHIoTExJbnRP
cGNvZGUgb3Bjb2RlKQorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlTExJ
bnRDb2RlUHRyKExMSW50T3Bjb2RlSUQgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGNvZGUp
KTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRl
TExJbnRDb2RlUHRyKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikp
OwogICAgIH0KKyNlbmRpZgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7CkBA
IC0zNTQsMTEgKzM2MywxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIC8vIEhlbHBlciBm
b3IgY3JlYXRpbmcgc2VsZi1tYW5hZ2VkIGNvZGUgcmVmcyBmcm9tIExMSW50LgorI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgLy8gbWxhbSBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNyZWF0ZUxMSW50Q29kZVJlZihMTEludE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBjcmVhdGVMTEludENvZGVSZWYoTExJbnRPcGNvZGVJRCBvcGNvZGUp
CisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG9wY29kZSkpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY3JlYXRlTExJbnRDb2RlUmVmKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICB7
CiAgICAgICAgIHJldHVybiBjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZvaWQqPihm
dW5jdGlvbikpKTsKICAgICB9Ci0gICAgCisjZW5kaWYKICAgICBFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2V4
ZWN1dGFibGVNZW1vcnkuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjcsMTMg
KzIwMjcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdAogICAg
IHBlcmZvcm1UcmFjaW5nRml4cG9pbnRJdGVyYXRpb24odmlzaXRvcik7CiB9CiAKLSNpZiBFTkFC
TEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcg
PSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxz
ZTsKICNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkg
fHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAKIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgpCiB7CkBAIC0yNTc2LDEyICsyNTc2LDMxIEBAIHZvaWQgQ29kZUJsb2Nr
Ojp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2lu
KCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVn
aW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKKworI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1Ap
CiB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogI2lmIEVOQUJMRShMTElOVCkKLSAgICBp
ZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Jl
Z2luKQotICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZW5kKSkgeworI2lmIEVOQUJMRShKSVQpCisgICAgLy8gV2hlbiB1c2luZyB0
aGUgSklULCB3ZSBjb3VsZCBoYXZlIGFkZHJlc3NlcyB0aGF0IGFyZSBub3QgYnl0ZWNvZGUKKyAg
ICAvLyBhZGRyZXNzZXMuIFdlIGNoZWNrIGlmIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiB0aGUg
TExpbnQgZ2x1ZSBhbmQKKyAgICAvLyBvcGNvZGUgaGFuZGxlcnMgcmFuZ2UgaGVyZSB0byBlbnN1
cmUgdGhhdCB3ZSBhcmUgbG9va2luZyBhdCBieXRlY29kZQorICAgIC8vIGJlZm9yZSBhdHRlbXB0
aW5nIHRvIGNvbnZlcnQgdGhlIHJldHVybiBhZGRyZXNzIGludG8gYSBieXRlY29kZSBvZmZzZXQu
CisgICAgLy8KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiB0aGUgQyBMb29wIExMSW50LCB0aGUgSklU
IGlzIGRpc2FibGVkLCBhbmQgdGhlIG9ubHkKKyAgICAvLyB2YWxpZCByZXR1cm4gYWRkcmVzc2Vz
IHNob3VsZCBiZSBieXRlY29kZSBQQ3MuICBTbywgd2UgY2FuIGFuZCBuZWVkIHRvCisgICAgLy8g
Zm9yZWdvIHRoaXMgY2hlY2sgYmVjYXVzZSwgd2hlbiB3ZSdyZSBub3QgdXNpbmcgQ09NUFVURURf
R09UT19PUENPREVTLAorICAgIC8vIHRoZSBieXRlY29kZSAiUEMicyBhcmUgYWN0dWFsbHkgdGhl
IG9wY29kZUlEcyBhbmQgYXJlIG5vdCBib3VuZGVkIGJ5CisgICAgLy8gbGxpbnRfYmVnaW4gYW5k
IGxsaW50X2VuZC4KKworICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gTExJbnQ6OkRh
dGE6OmdldENvZGVQdHIobGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFs
dWUoKSA8PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihsbGludF9lbmQpKSAKKyNlbHNlIC8vICFF
TkFCTEUoSklUKQorICAgIFVOVVNFRF9QQVJBTShyZXR1cm5BZGRyZXNzKTsKKyNlbmRpZiAvLyAh
RU5BQkxFKEpJVCkKKyAgICB7CiAgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CiAg
ICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwpAQCAtMjU5NSwxOCArMjYx
NCwxOCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAgICAgICAg
IEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChv
cF9jYWxsKSk7CiAgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09E
RV9MRU5HVEgob3BfY29uc3RydWN0KSk7CiAgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9w
X2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7Ci0gICAgICAgIGlmIChpbnN0
cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpXS51LnBvaW50ZXIgPT0gYml0
d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX3ZhcmFyZ3MpKSB7CisgICAgICAgIGlmIChp
bnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpXS51LnBvaW50ZXIgPT0g
TExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbF92YXJhcmdzKSkgewogICAgICAgICAgICAg
Ly8gV2Uga25vdyB0aGF0IHRoZSBwcmVjZWRpbmcgaW5zdHJ1Y3Rpb24gbXVzdCBiZSBvcF9jYWxs
X3ZhcmFyZ3MgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdGhhdAogICAgICAgICAgICAgLy8gdGhl
IHBvaW50ZXIgdG8gdGhlIGNhbGxfdmFyYXJncyBjb3VsZCBiZSBhbiBvcGVyYW5kIHRvIHRoZSBj
YWxsLgogICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gLT0gT1BDT0RFX0xFTkdUSChvcF9jYWxsX3Zh
cmFyZ3MpOwotICAgICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9w
X2NhbGwpXS51LnBvaW50ZXIgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsKQot
ICAgICAgICAgICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwp
XS51LnBvaW50ZXIgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jb25zdHJ1Y3QpCi0g
ICAgICAgICAgICAgICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCld
LnUucG9pbnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfZXZhbCkpOwor
ICAgICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51
LnBvaW50ZXIgIT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbCkKKyAgICAgICAgICAg
ICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVy
ICE9IExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKG9wX2NvbnN0cnVjdCkKKyAgICAgICAgICAgICAg
ICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9
IExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKG9wX2NhbGxfZXZhbCkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gTXVzdCBiZSB0aGF0IHRoZSBsYXN0IGluc3RydWN0aW9uIHdhcyBz
b21lIG9wX2NhbGwuCi0gICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5H
VEgob3BfY2FsbCldLnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2Nh
bGwpCi0gICAgICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3Bf
Y2FsbCldLnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVj
dCkKLSAgICAgICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9j
YWxsKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFs
KSk7CisgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2Fs
bCldLnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihvcF9jYWxsKQorICAgICAg
ICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBv
aW50ZXIgPT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY29uc3RydWN0KQorICAgICAgICAg
ICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50
ZXIgPT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbF9ldmFsKSk7CiAgICAgICAgICAg
ICBpbnN0cnVjdGlvbiAtPSBPUENPREVfTEVOR1RIKG9wX2NhbGwpOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMjYxNSwxMiArMjYzNCwxNSBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2Rl
T2Zmc2V0KEV4ZWNTCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKEpJVCkgLy8gbWxhbSBpcyB0aGlzIHRydWx5IEpJVCBvbmx5PyAgQ2hlY2sgd2l0
aCBGaWxpcC4KICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybiAxOwogICAgIFZl
Y3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9y
YXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CiAgICAgaWYgKCFjYWxsSW5kaWNlcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0
PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5v
ZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkgLy8gbWxhbSBpcyB0aGlzIHRydWx5IEpJVCBvbmx5PyAgQ2hlY2sgd2l0
aCBGaWxpcC4KIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAK
IC8vIChhcyBvcHBvc2VkIHRvIGFwcCBkZWJ1Z2dpbmcpLCB0aGlzIGZlYXR1cmUgaXMgdG8gYmUg
ZGlzYWJsZWQgYnkgZGVmYXVsdCwKIC8vIGFuZCBjYW4gYmUgZW5hYmxlZCBhcyBuZWVkZWQgZm9y
IFZNIGRldmVsb3BtZW50IHVzZSBvbmx5LgogCi0jZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01N
RU5UUyAwCisjZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyAxIC8vIG1sYW0gd2FzIDAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIyOCw5ICsyMjgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxs
TGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4Piht
X21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUo
KSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CisjZW5kaWYgLy8gbWxhbQogCiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwog
CisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCkBAIC0yNTAsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJTlQpCiAg
ICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcp
CiAgICAgICAgIHsKQEAgLTI1OCw3ICsyNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2Fs
bHMoKTsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiAjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAg
dm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVN
YXApCkBAIC0zMzQsMTAgKzMzNywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIHVuc2lnbmVkIGFwcGVuZFdhdGNocG9pbnQoY29uc3QgSnVtcFJlcGxhY2VtZW50V2F0Y2hw
b2ludCYgd2F0Y2hwb2ludCkKICAgICAgICAgeworI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAg
ICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRh
LT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh3YXRjaHBvaW50KTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtODEyLDYgKzgyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEgJiYgISFtX3JhcmVEYXRhLT5tX2Nv
ZGVPcmlnaW5zLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyNpZiBFTkFCTEUoSklUKSAv
LyBtbGFtCiAgICAgICAgIGJvb2wgY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghaGFzQ29kZU9yaWdpbnMoKSkKQEAgLTgyMyw3ICs4MzIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBlbnRyeS0+Y29kZU9yaWdpbjsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorI2VuZGlmCisKICAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKLSNpZiBFTkFC
TEUoTExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAm
JiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBw
cm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKICAg
ICAKICAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2No
ZWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIElu
c3RydWN0aW9uX2gKIAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiTExJ
bnRPcGNvZGUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk9wY29k
ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtMTk3LDYgKzE5OCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGU7
CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIExMSW50T3Bjb2RlIGxsaW50
T3Bjb2RlOworI2VuZGlmCiAgICAgICAgICAgICBpbnQgb3BlcmFuZDsKICAgICAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBzdHJ1Y3R1cmU7CiAgICAgICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIx
LDEyICsyMjEsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9J
RChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjZGVmaW5l
IEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMQorI2Vsc2UKKyAgIC8vIElmIHdlIGdldCBo
ZXJlLCB0aGVuIHRoZSBvbmx5IG90aGVyIHJlYXNvbiB3aHkgd2Ugd2lsbCB3YW50IGNvbXB1dGVk
IGdvdG8KKyAgIC8vIG9wY29kZXMgaXMgaWYgd2UgaGF2ZSB0aGUgTExJTlQgYW5kIHdlJ3JlIG5v
dCB1c2luZyB0aGUgQyBMb29wLgorICAgLy8gSWYgd2UgYXJlIHVzaW5nIHRoZSBDIExvb3AgYW5k
IHdlIHdhbnRlZCBjb21wdXRlZCBnb3Rvcywgd2Ugd291bGQgaGF2ZQorICAgLy8gZW5hYmxlZCBD
T01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIsIGFuZCB0aGF0IHdvdWxkIGJlIGhhbmRs
ZWQKKyAgIC8vIGluIHRoZSBjYXNlIGFib3ZlLgorICAgI2lmIEVOQUJMRShMTElOVCkgJiYgIUVO
QUJMRShMTElOVF9DX0xPT1ApCisgICAjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09E
RVMgMQorICAgI2Vsc2UKKyAgICNkZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9fT1BDT0RFUyAw
CisgICAjZW5kaWYKKyNlbmRpZgorCisvLyBtbGFtIEJFR0lOIHRlc3QgfCBSRU1PVkUgdGhpcyBi
ZWZvcmUgY29tbWl0LgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjdW5kZWYgRU5BQkxFX0NP
TVBVVEVEX0dPVE9fT1BDT0RFUworI2RlZmluZSBFTkFCTEVfQ09NUFVURURfR09UT19PUENPREVT
IDAgLy8gdGVzdGluZworI2VuZGlmCisvLyBtbGFtIEVORCB0ZXN0CisKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQorLyogbWxhbQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJ
TEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKLSAgICB0eXBlZGVm
IGNvbnN0IHZvaWQqIE9wY29kZTsKKyAgICAvLyBtbGFtIENhbiB3ZSBkbyB0aGlzIHBsZWFzPyB0
eXBlZGVmIGNvbnN0IHZvaWQqIE9wY29kZTsKKyAgICAqLworICAgIHR5cGVkZWYgdm9pZCogT3Bj
b2RlOworLyogbWxhbQogI2VuZGlmCisqLwogI2Vsc2UKICAgICB0eXBlZGVmIE9wY29kZUlEIE9w
Y29kZTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7Ci0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxh
bSAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CiAKICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw4IEBA
IHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEkKIHsKICNpZiBFTkFCTEUo
TExJTlQpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKLSAgICAKLSAgICBBU1NFUlQoaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWwpOworCisgICAgQVNT
RVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IExMSW50OjpEYXRhOjpnZXRPcGNvZGUob3Bf
cmVzb2x2ZV9nbG9iYWwpKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3Ry
dWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmICghc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
MjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAorI2lmIEVOQUJMRShKSVQpCisKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAogI2lmIENQVShYODZfNjQpCkBAIC0xNDE2LDcgKzE0MTgsNyBAQCBleHRl
cm4gIkMiIHZvaWQgREZHX09QRVJBVElPTiB0cmlnZ2VyUmVvCiB9IC8vIGV4dGVybiAiQyIKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCiAKICNpZiBDT01QSUxFUihHQ0MpCiAKQEAgLTE0NzgsMyArMTQ4MCw0IEBAIGV4dGVybiAi
QyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFUKIAogI2VuZGlmIC8vIENPTVBJTEVSKEdD
QykKIAorI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBBYnN0cmFjdFBDOjpBYnN0
cmFjdFBDKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBleGVjKQogewogICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxEYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7IC8vIG1s
YW0KICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChnbG9iYWxEYXRhLmNhblVzZUpJVCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRD
YWxsLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0VGhpcyhKU1ZhbHVlIHYpIHsg
bV9jbG9zdXJlLnNldFRoaXModik7IH0KICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChpbnQgbiwg
SlNWYWx1ZSB2KSB7IG1fY2xvc3VyZS5zZXRBcmd1bWVudChuLCB2KTsgfQorICAgICAgICAvLyBt
bGFtIEJFR0lOIGZvciBkZWJ1Z2dpbmcgT05MWS4gIFJlbW92ZSBhZnRlcndhcmRzCisgICAgICAg
IENhbGxGcmFtZUNsb3N1cmUmIGNsb3N1cmUoKSB7CisgICAgICAgICAgICByZXR1cm4gbV9jbG9z
dXJlOworICAgICAgICB9CisgICAgICAgIC8vIG1sYW0gRU5ECiAKICAgICAgICAgQ2FsbEZyYW1l
KiBuZXdDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgUmVnaXN0ZXJGaWxlKiBDYWxsRnJh
bWU6OnJlZ2lzdGVyRmlsZSgpCiB9CiAKICNlbmRpZgotCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
IHVuc2lnbmVkIENhbGxGcmFtZTo6Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCkgY29uc3QK
IHsKQEAgLTE5Nyw2ICsxOTYsMTEgQEAgUmVnaXN0ZXIqIENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJ
bnRlcm5hbAogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7
CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRm
KCJtbGFtIDo6IENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJbnRlcm5hbCgpIHJlZ2lzdGVycygpICVw
IGNiLT5tX251bUNhbGxlZVJlZ2lzdGVycyAlZCA9PT4gJXAgQCAlcyAlczolZFxuIiwgCisgICAg
ICAgICAgIHJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCByZWdp
c3RlcnMoKSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsCisgICAgICAgICAgIF9f
RlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKICAgICByZXR1cm4g
cmVnaXN0ZXJzKCkgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsOCBAQCBuYW1lc3BhY2UgSlNDICB7
CiAgICAgICAgIENhbGxGcmFtZSYgb3BlcmF0b3I9KGNvbnN0IFJlZ2lzdGVyJiByKSB7ICpzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpID0gcjsgcmV0dXJuICp0aGlzOyB9CiAKICAgICAgICAg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxl
OjpDYWxsZXJGcmFtZV0uY2FsbEZyYW1lKCk7IH0KLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAj
aWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAg
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBSZXR1cm5BZGRyZXNz
UHRyKHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9CiAgICAgICAgIGJvb2wg
aGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAhIXRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5Q
Q10udlBDKCk7IH0KICAgICAgICAgdm9pZCBjbGVhclJldHVyblBDKCkgeyByZWdpc3RlcnMoKVtS
ZWdpc3RlckZpbGU6OlJldHVyblBDXSA9IHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4oMCk7IH0K
QEAgLTE0OSw2ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIH0KICNlbmRpZgog
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQorLy8gbWxhbSAjaWYgRU5BQkxFKENMQVNT
SUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICAgICAg
SW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxl
OjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0y
NzIsNiArMjc0LDEwIEBAIG5hbWVzcGFjZSBKU0MgIHsKICNlbmRpZgogICAgICAgICBFeGVjU3Rh
dGUoKTsKICAgICAgICAgfkV4ZWNTdGF0ZSgpOworCisgICAgICAgIC8vIG1sYW0gQkVHSU4KKyAg
ICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOworICAgICAgICAvLyBtbGFtIEVORAogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVu
YXRlLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAt
NTU0LDcgKzU1NSw4IEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiAKIEludGVycHJldGVy
Ojp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShMTElOVCkKKy8vIG1sYW0gb3JpZyAjaWYg
RU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKICAgICBpZiAobV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgZGVsZXRlW10gbV9v
cGNvZGVUYWJsZTsKICNlbmRpZgpAQCAtNTcwLDIwICs1NzIsMzUgQEAgdm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YQogI2Vycm9yICJCdWlsZGluZyBib3RoIExMSW50IGFu
ZCB0aGUgQ2xhc3NpYyBJbnRlcnByZXRlciBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgZG9l
c24ndCBtYWtlIHNlbnNlLiIKICNlbmRpZgogCisvLyBtbGFtIG9yaWcgCisgICAgI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgbGxpbnRDTG9vcEV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVy
biwgMCwgMCwgbGxpbnRfdW51c2VkLCBsbGludERhdGEpOworICAgICNlbmRpZgorCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiBFTkFCTEUoTExJTlQpCisKICAgICBtX29w
Y29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKQogICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bj
b2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CiAgICAgbV9jbGFzc2ljRW5h
YmxlZCA9IGZhbHNlOworCiAjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVS
UFJFVEVSKQogICAgIGlmIChjYW5Vc2VKSVQpIHsKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBw
cmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCi0gICAgICAg
IAorCisgICAgICAgIC8vIG1sYW0gOjogVGhlIGZvbGxvd2luZyBjb2RlIGlzIG9ic29sZXRlIGJl
Y2F1c2Ugd2Ugc2hvdWxkIG5ldmVyIGVuY291bnRlciB0aGlzCisgICAgICAgIC8vIGNhc2UuICBJ
biBwcml2YXRlRXhlY3V0ZSgpLCB0aGVyZSBpcyBhbiBhc3NlcnRpb24gdGhhdCBlbnN1cmVzIHRo
YXQgd2UgbmV2ZXIKKyAgICAgICAgLy8gbWl4IHRoZSBKSVQgd2l0aCB0aGUgY2xhc3NpYyBjb21w
aWxlci4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewog
ICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2Rl
OwogICAgICAgICB9CiAgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAg
Ly8gbWxhbSA6OiBOT1RFOiBCYXNlZCBvbiBKU0dsb2JhbERhdGEncyBlbmFibGVBc3NlbWJsZXIo
KSwgaXQgbG9va3MgbGlrZSB0aGUgY2xhc3NpYworICAgICAgICAvLyBpbnRlcnByZXRlciBpcyBz
dGlsbCBpbiB1c2Ugd2hlbiAtLXVzZUpJVD1mYWxzZS4gIFdpbGwgaGF2ZSB0byBmaXggdGhpcyBz
byB0aGF0CisgICAgICAgIC8vIExMSU5UIGNhbiBzdGFuZCBhbG9uZS4KKwogICAgIH0gZWxzZSB7
CiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAg
ICAgICAKQEAgLTU5MiwxMyArNjA5LDE4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUo
TExJbnQ6OkRhdGEKICAgICAgICAgCiAgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwog
ICAgIH0KKyNlbmRpZiAvLyBtbGFtIG5ldworCiAjZWxzZQogI2lmIEVOQUJMRShDTEFTU0lDX0lO
VEVSUFJFVEVSKQogICAgIG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwogI2Vsc2UKICAgICBtX2Ns
YXNzaWNFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURf
R09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorLy8gbWxhbSBvcmlnICNlbmRpZiAvLyAhRU5BQkxF
KENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShMTElOVCkKKwor
I2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CiAjZW5kaWYKQEAgLTcwOSw3ICs3MzEs
OCBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50
ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShD
T01QVVRFRF9HT1RPX09QQ09ERVMpCisvLyBtbGFtIG9yaWcgI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiAhRU5BQkxFKExM
SU5UKQogICAgIGlmICghbV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7
CkBAIC03NzMsNyArNzk2LDggQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2lu
ZENhbAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5WUEMoKSkgLSAxOwotI2VsaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjZWxpZiBFTkFC
TEUoSklUKQorI2VsaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CkBAIC04NDUs
NyArODY5LDggQEAgc3RhdGljIGludCBnZXRMaW5lTnVtYmVyRm9yQ2FsbEZyYW1lKEpTRwogICAg
IGlmICghZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiBjb2RlQmxvY2st
PmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChjYWxsRnJhbWUtPmJ5dGVjb2RlT2Zmc2V0Rm9y
Tm9uREZHQ29kZSgpIC0gMSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmln
ICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+bGluZU51bWJlckZv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jay0+Y29kZU9yaWdpbihjYWxsRnJhbWUtPmNvZGVPcmln
aW5JbmRleEZvckRGRygpKS5ieXRlY29kZUluZGV4KTsKQEAgLTg3MSw3ICs4OTYsOCBAQCBzdGF0
aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFsCiAgICAgCiAgICAgQ29kZUJsb2Nr
KiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgCi0jaWYg
RU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCiAgICAgaWYgKCFjYWxsRnJhbWUtPmhh
c1JldHVyblBDKCkpCiAgICAgICAgIGNhbGxmcmFtZUlzSG9zdCA9IHRydWU7CiAjZW5kaWYKQEAg
LTg5MCw3ICs5MTYsOCBAQCBzdGF0aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFs
CiAgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CiAgICAgICAgIH0KICNlbmRpZgotI2lm
IEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
aWYgKGNhbGxlckNvZGVCbG9jayAmJiBjYWxsZXJDb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpERkdKSVQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVPcmlnaW5JbmRleCA9
IGNhbGxlckZyYW1lLT5jb2RlT3JpZ2luSW5kZXhGb3JERkcoKTsKQEAgLTkwNyw3ICs5MzQsOCBA
QCBzdGF0aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFsCiAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGVyRnJhbWU7CiAgICAgICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShKSVQpCisv
LyBtbGFtIG9yaWcgI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExM
SU5UX0NfTE9PUCkKICAgICAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChjYWxsRnJh
bWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSog
aWNmID0gY2FsbEZyYW1lLT5pbmxpbmVDYWxsRnJhbWUoKTsKQEAgLTEwMjksNiArMTA1Nyw5IEBA
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgYm9vbCBpc0ludGVycnVw
dCA9IGZhbHNlOwogCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgKioqIEludGVy
cHJldGVyOjp0aHJvd0V4Y2VwdGlvblxuIik7IC8vIG1sYW0KKyAgICAjZW5kaWYKICAgICBBU1NF
UlQoIWV4Y2VwdGlvblZhbHVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFleGNlcHRpb25WYWx1
ZS5pc0NlbGwoKSB8fCBleGNlcHRpb25WYWx1ZS5hc0NlbGwoKSk7CiAgICAgLy8gVGhpcyBzaG91
bGRuJ3QgYmUgcG9zc2libGUgKGhlbmNlIHRoZSBhc3NlcnRpb25zKSwgYnV0IHdlJ3JlIGFscmVh
ZHkgaW4gdGhlIHNsb3dlc3Qgb2YKQEAgLTEwNjEsMTIgKzEwOTIsMjEgQEAgTkVWRVJfSU5MSU5F
IEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRp
b24gaGFuZGxlciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCiAgICAg
SGFuZGxlckluZm8qIGhhbmRsZXIgPSAwOwogICAgIHdoaWxlIChpc0ludGVycnVwdCB8fCAhKGhh
bmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkpKSB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuXG4gbWxh
bSBVTldJTkQgY3VycmVudCBjZnIgJXBcblxuIiwgY2FsbEZyYW1lKTsKKyAgICAgICAgI2VuZGlm
CiAgICAgICAgIGlmICghdW53aW5kQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUs
IGJ5dGVjb2RlT2Zmc2V0LCBjb2RlQmxvY2spKSB7CisgICAgICAgICAgICAjaWYgbWxhbV9QUklO
VEYKKyAgICAgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICA8PDwg
UE9QUEVEIHRvIHJlc3RvcmVkICIpOyAvLyBtbGFtCisgICAgICAgICAgICAjZW5kaWYKICAgICAg
ICAgICAgIGlmIChQcm9maWxlciogcHJvZmlsZXIgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5l
bmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgICAgICAgICBwcm9maWxlci0+ZXhjZXB0aW9uVW53
aW5kKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS50b3BD
YWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQor
ICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShj
YWxsRnJhbWUsICIgIDw8PCBQT1BQRUQgdG8gcmVzdG9yZWQgIik7IC8vIG1sYW0KKyAgICAgICAg
I2VuZGlmCiAgICAgfQogICAgIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnRvcENhbGxGcmFtZSA9
IGNhbGxGcmFtZTsKIApAQCAtMTExMCw4ICsxMTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNPYmpl
Y3QqIGNoZWNrZWRSZXR1cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNPYmplY3QqIHRo
aXNPYmopCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKFByb2dyYW1FeGVjdXRh
YmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4sIEpTT2JqZWN0KiB0aGlzT2JqKQogeworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHBy
aW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7CisgICAgVk1JbnNwZWN0
b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIEludGVycHJldGVyOjpleGVjdXRlX21sYW1Q
KHByb2dyYW0pIik7CisgICAgI2VuZGlmCiAgICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRo
aXNPYmosIGNhbGxGcmFtZSkpOwogICAgIEFTU0VSVCghc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YS0+
ZXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmlzQ29sbGVj
dG9yQnVzeSgpKTsKQEAgLTExMTksMTQgKzExNjMsMjggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICBDUkFTSCgpOwogCiAgICAgaWYgKG1fcmVlbnRy
eURlcHRoID49IE1heFNtYWxsVGhyZWFkUmVlbnRyeURlcHRoICYmIG1fcmVlbnRyeURlcHRoID49
IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKKyAgICB7CisgICAgICAg
ICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9y
ZWVudHJ5RGVwdGgpOworICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwg
IiAqKiogUkVUVVJOIDEgZnJvbSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFtKSIp
OworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7Ci0KKyAgICB9CisgICAgLy8gRmlyc3QgY2hlY2sg
aWYgdGhlICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEgSlNPTiBvYmplY3QuIElmIHNvLAor
ICAgIC8vIHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3QgaGVyZS4gRWxzZSwgd2UnbGwgaGFu
ZGxlIHJlYWwgSlMgY29kZQorICAgIC8vIGJlbG93IGF0IGZhaWxlZEpTT05QLgogICAgIER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSgqc2NvcGVDaGFpbi0+Z2xvYmFs
RGF0YSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBWZWN0b3I8SlNPTlBE
YXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKICAgICBjb25zdCBVU3RyaW5n
IHByb2dyYW1Tb3VyY2UgPSBwcm9ncmFtLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgIGlmIChw
cm9ncmFtU291cmNlLmlzTnVsbCgpKQorICAgIHsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7CisgICAg
ICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICoqKiBSRVRVUk4gMiBmcm9t
IEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKHByb2dyYW0pIik7CisgICAgICAgICNlbmRpZgog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CiAgICAgaWYgKHByb2dyYW1Tb3Vy
Y2UuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gbGl0ZXJhbFBhcnNl
cihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJjZS5s
ZW5ndGgoKSwgSlNPTlApOwogICAgICAgICBwYXJzZVJlc3VsdCA9IGxpdGVyYWxQYXJzZXIudHJ5
SlNPTlBQYXJzZShKU09OUERhdGEsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9i
YWxPYmplY3QuZ2V0KCkpKTsKQEAgLTEyMjEsMzYgKzEyNzksNjkgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IGZhaWxlZEpTT05QOgorICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHdlIGhhdmUgYWxyZWFk
eSBwcm92ZW4gdGhhdCB0aGUgc2NyaXB0IGlzIG5vdCBhIEpTT04KKyAgICAvLyBvYmplY3QuCisK
KyAgICAvLyBDb21waWxlIHNvdXJjZSB0byBieXRlY29kZSBpZiBuZWNlc3Nhcnk6CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y29tcGlsZShjYWxsRnJhbWUsIHNjb3BlQ2hhaW4pOwog
ICAgIGlmIChlcnJvcikKKyAgICB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBw
cmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9yZWVudHJ5RGVwdGgpOworICAgICAgICBWTUlu
c3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAqKiogUkVUVVJOIFAxIGZyb20gSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVfbWxhbVAocHJvZ3JhbSkiKTsKKyAgICAgICAgI2VuZGlmCiAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXJyb3IoY2FsbEZyYW1lLCBlcnJvcikpOworICAg
IH0KICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZwcm9ncmFtLT5nZW5lcmF0ZWRCeXRlY29k
ZSgpOwogCisgICAgLy8gUmVzZXJ2ZSBzdGFjayBzcGFjZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgog
ICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3JlZ2lzdGVyRmlsZS5lbmQoKTsKICAgICBSZWdpc3Rl
ciogbmV3RW5kID0gb2xkRW5kICsgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzOwogICAgIGlmICghbV9yZWdpc3RlckZpbGUuZ3JvdyhuZXdFbmQpKQorICAgIHsKKyAgICAg
ICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBt
X3JlZW50cnlEZXB0aCk7CisgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1l
LCAiICoqKiBSRVRVUk4gUDIgZnJvbSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFt
KSIpOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgfQogCisgICAgLy8gUHVzaCB0aGUg
Y2FsbCBmcmFtZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUob2xkRW5kICsgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpOwogICAgIEFTU0VSVChjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4K
ICAgICBuZXdDYWxsRnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZUNoYWluLCBDYWxsRnJh
bWU6Om5vQ2FsbGVyKCksIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCAwKTsKKyAgICAjaWYg
bWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9yZWVudHJ5RGVw
dGgpOworICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobmV3Q2FsbEZyYW1lLCAiICArKysgaW5p
dCAiLCAwLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7CiAgICAgVG9wQ2FsbEZyYW1l
U2V0dGVyIHRvcENhbGxGcmFtZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbmV3Q2FsbEZyYW1l
KTsKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIg
KioqIHJlZW50cnkgJWRcbiIsIG1fcmVlbnRyeURlcHRoKTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVt
cEZyYW1lKG5ld0NhbGxGcmFtZSwgIiAgPj4+IFBVU0hFRCB0byBuZXcgIiwgMCwgX19GVU5DVElP
Tl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gRU5ECiAK
ICAgICBpZiAoUHJvZmlsZXIqIHByb2ZpbGVyID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZW5h
YmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUs
IHByb2dyYW0tPnNvdXJjZVVSTCgpLCBwcm9ncmFtLT5saW5lTm8oKSk7CiAKKyAgICAvLyBFeGVj
dXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKICAgICAgICAgU2FtcGxp
bmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKIAogICAgICAg
ICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAg
cmVzdWx0ID0gbGxpbnRDTG9vcEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0Nh
bGxGcmFtZSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7CisjZWxzZSAvLyAhRU5BQkxFKExMSU5U
X0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAoIWNsYXNzaWNFbmFibGVkKCkp
CiAgICAgICAgICAgICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0
ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7
CiAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAg
ICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2Fs
bEZyYW1lKTsKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogICAgICAgICBtX3Jl
ZW50cnlEZXB0aC0tOwogICAgIH0KQEAgLTEyNjAsMTEgKzEzNTEsMTggQEAgZmFpbGVkSlNPTlA6
CiAKICAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKIAorICAgICNpZiBtbGFtX1BS
SU5URgorICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7Cisg
ICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIFJFVFVSTiBQMyBmcm9t
IEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKHByb2dyYW0pIik7CisgICAgI2VuZGlmCiAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1J
bnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIEludGVycHJldGVyOjpleGVjdXRl
Q2FsbChmdW5jdGlvbikiKTsKKyAgICAjZW5kaWYKICAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmpl
Y3QodGhpc1ZhbHVlLCBjYWxsRnJhbWUpKTsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhj
ZXB0aW9uKCkpOwogICAgIEFTU0VSVCghY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0
b3JCdXN5KCkpOwpAQCAtMTI3NSw2ICsxMzczLDEyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICBSZWdpc3Rlciogb2xkRW5kID0gbV9y
ZWdpc3RlckZpbGUuZW5kKCk7CisgICAgLy8gbWxhbSBCRUdJTiB0ZXN0IGRlYnVnCisgICAgI2lm
IG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgICBtbGFtIGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQo
KSAlcCA8PSBvbGRFbmQgICVwID09PiByZXN1bHQgJWRcbiIsIGNhbGxGcmFtZS0+ZnJhbWVFeHRl
bnQoKSwgb2xkRW5kLCAoY2FsbEZyYW1lLT5mcmFtZUV4dGVudCgpIDw9IG9sZEVuZCkpOworICAg
IHByaW50ZigiICAgbWxhbSBjYWxsRnJhbWUgJXAgPT0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCkt
Pmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpICVwID09PiByZXN1bHQgJWRcbiIsIGNhbGxGcmFt
ZSwgIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
KGNhbGxGcmFtZSA9PSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtIEVORCB0ZXN0IGRlYnVnCiAgICAg
QVNTRVJUKGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQoKSA8PSBvbGRFbmQgfHwgY2FsbEZyYW1lID09
IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAg
ICAgaW50IGFyZ0NvdW50ID0gMSArIGFyZ3Muc2l6ZSgpOyAvLyBpbXBsaWNpdCAidGhpcyIgcGFy
YW1ldGVyCiAgICAgc2l6ZV90IHJlZ2lzdGVyT2Zmc2V0ID0gYXJnQ291bnQgKyBSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CkBAIC0xMzE3LDEyICsxNDIxLDE3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgICAgIFNhbXBsaW5nVG9v
bDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAKICAgICAgICAgICAg
IG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAg
ICAgcmVzdWx0ID0gbGxpbnRDTG9vcEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5l
d0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworI2Vsc2UgLy8g
RU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgaWYgKCFj
bGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1
bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZtX3Jl
Z2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlQ2hhaW4tPmdsb2JhbERhdGEp
OwogICAgICAgICAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmls
ZSwgbmV3Q2FsbEZyYW1lKTsKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogICAg
ICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICAgICAgfQogCkBAIC0xMzU5LDYgKzE0Njgs
OSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAKIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNP
YmplY3QqIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAg
I2lmIG1sYW1fUFJJTlRGCisgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1l
LCAiICoqKiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChjb25zdHJ1Y3RvcikiKTsKKyAg
ICAjZW5kaWYKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFT
U0VSVCghY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIC8v
IFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0aGlu
ZyAidmFsaWQiIGJ1dCB3ZSdyZQpAQCAtMTQxMSwxMiArMTUyMywxNiBAQCBKU09iamVjdCogSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgICAgICBTYW1wbGluZ1Rvb2w6OkNh
bGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBtX3Jl
ZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIHJl
c3VsdCA9IGxsaW50Q0xvb3BFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxs
RnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworI2Vsc2UgLy8g
IUVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgICAgIGlmICgh
Y2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLmV4
ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGNvbnN0cnVjdERhdGFTY29wZUNo
YWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFs
LCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZW5kaWYgLy8gIUVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgICAgICB9CiAKQEAg
LTE0ODYsNyArMTYwMiw5IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVG
b3IKICAgICB9CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKTsKIAorICAgIC8vIFZNSW5zcGVjdG9yOjpkdW1w
RnJhbWUobmV3Q2FsbEZyYW1lLCAibWxhbSBCRUZPUkUgQ2xvc3VyZSBmcmFtZSBzbGlkZSIpOwog
ICAgIG5ld0NhbGxGcmFtZSA9IHNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JDYWxsKGNvZGVCbG9jaywg
Jm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIDAsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKKyAgICAvLyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG5ld0NhbGxGcmFtZSwgIm1sYW0g
QUZURVIgIENsb3N1cmUgZnJhbWUgc2xpZGUiKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxG
cmFtZSkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAg
ICAgICAgbV9yZWdpc3RlckZpbGUuc2hyaW5rKG9sZEVuZCk7CkBAIC0xNDk1LDExICsxNjEzLDI0
IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKICAgICBuZXdDYWxs
RnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZUNoYWluLCBjYWxsRnJhbWUtPmFkZEhvc3RD
YWxsRnJhbWVGbGFnKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBmdW5jdGlvbik7ICAK
ICAgICBzY29wZUNoYWluLT5nbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUgPSBuZXdDYWxsRnJhbWU7
CiAgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1l
LCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxlLCBzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBv
bGRFbmQsIHNjb3BlQ2hhaW4sIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyB9OworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgICNpZiBtbGFt
X1BSSU5URgorICAgIHByaW50ZigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOworICAgIHBy
aW50ZigiKiBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoKVxuIik7CisgICAgcHJp
bnRmKCIqIGNsb3N1cmUgb2xkRnJhbWUgJXAgbmV3RnJhbWUgJXAgZnVuY3Rpb24gJXAgZXhlY3V0
YWJsZSAlcFxuIiwKKyAgICAgICAgICAgY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGZ1bmN0aW9u
LCBmdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIHByaW50ZigiKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KipcbiIpOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gRU5EIHRlc3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUm
IGNsb3N1cmUpIAogeworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50ZigiICoqKiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShjbG9zdXJlKSBvbGQgZnAgJXAsIG5ldyBmcCAlcFxuIiwgY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lKTsKKyAgICBWTUluc3BlY3Rvcjo6
ZHVtcEZyYW1lKGNsb3N1cmUubmV3Q2FsbEZyYW1lLCAiICoqKiBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShjbG9zdXJlKSIpOworICAgICNlbmRpZgogICAgIEFTU0VSVCghY2xvc3VyZS5vbGRDYWxsRnJh
bWUtPmdsb2JhbERhdGEoKS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgaWYgKGNsb3N1cmUub2xk
Q2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKQEAgLTE1MTQsNiArMTY0NSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxS
ZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIG1fcmVlbnRyeURlcHRo
Kys7ICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICByZXN1bHQgPSBsbGludENM
b29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdDYWxsRnJhbWUs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKKyNlbHNlIC8vICFFTkFCTEUoTExJ
TlRfQ19MT09QKQogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVU
RVIpCiAgICAgICAgIGlmIChjbG9zdXJlLm5ld0NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVz
ZUpJVCgpKQpAQCAtMTUyMiwxMCArMTY1NiwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKENhbGxGcmFtZUNsCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAg
IGVsc2UKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUo
Q0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRl
KE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CiAjZW5kaWYK
KyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogICAgICAgICBtX3JlZW50cnlEZXB0
aC0tOwogICAgIH0KIApAQCAtMTU0Miw2ICsxNjc4LDkgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZW5k
UmVwZWF0Q2FsbChDYWxsRnJhbQogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBpbnQgZ2xvYmFsUmVnaXN0ZXJPZmZzZXQpCiB7
CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJh
bWUsICIgKioqIEludGVycHJldGVyOjpleGVjdXRlKGV2YWwpIik7CisgICAgI2VuZGlmCiAgICAg
QVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1lKSk7CiAgICAgQVNT
RVJUKCFzY29wZUNoYWluLT5nbG9iYWxEYXRhLT5leGNlcHRpb24pOwogICAgIEFTU0VSVCghY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwpAQCAtMTYxOSw2ICsxNzU4
LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogCiAgICAgICAg
IG1fcmVlbnRyeURlcHRoKys7CiAgICAgICAgIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAgICAgIHJlc3VsdCA9IGxsaW50Q0xvb3BFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxl
LCBuZXdDYWxsRnJhbWUsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworI2Vsc2UgLy8gIUVOQUJMRShM
TElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQpA
QCAtMTYyNywxMCArMTc2OSwxMSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIGVsc2UKICNl
bmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikKICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwg
Jm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOwogI2VuZGlmCisjZW5kaWYgLy8gIUVOQUJM
RShMTElOVF9DX0xPT1ApCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgfQogCkBAIC0x
OTA2LDEyICsyMDQ5LDE1IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hl
R2UKIAogI2VuZGlmIC8vIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogCisjaWYgIUVOQUJM
RShMTElOVF9DX0xPT1ApCisKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4
ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIE9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIG91ciBhZGRy
ZXNzIHRhYmxlcy4gV2UgaGF2ZSB0byBwdXQgdGhpcyBjb2RlCiAgICAgLy8gaGVyZSBiZWNhdXNl
IG91ciBsYWJlbHMgYXJlIG9ubHkgaW4gc2NvcGUgaW5zaWRlIHRoaXMgZnVuY3Rpb24uCiAgICAg
aWYgKFVOTElLRUxZKGZsYWcgPT0gSW5pdGlhbGl6ZUFuZFJldHVybikpIHsKICAgICAgICAgI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisgICAgICAgIC8vIG1s
YW0gI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAgICAgICAgICAgICAjZGVmaW5l
IExJU1RfT1BDT0RFX0xBQkVMKGlkLCBsZW5ndGgpICYmaWQsCiAgICAgICAgICAgICAgICAgc3Rh
dGljIE9wY29kZSBsYWJlbHNbXSA9IHsgRk9SX0VBQ0hfT1BDT0RFX0lEKExJU1RfT1BDT0RFX0xB
QkVMKSB9OwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChsYWJlbHMpOyArK2kpCkBAIC0xOTkxLDkgKzIxMzcsOSBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgICAgICBVUERBVEVfQllURUNPREVf
T0ZGU0VUKCk7CiAjZWxzZQogICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShvcGNvZGUpIG9wY29k
ZTogVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKE9Q
Q09ERV9TVEFUUykKICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Ci0jZWxzZQorI2Vsc2UgLy8gIUVO
QUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgI2RlZmluZSBORVhU
X0lOU1RSVUNUSU9OKCkgU0FNUExFKGNvZGVCbG9jaywgdlBDKTsgZ290byBpbnRlcnByZXRlckxv
b3BTdGFydAogI2lmIEVOQUJMRShPUENPREVfU1RBVFMpCiAgICAgI2RlZmluZSBERUZJTkVfT1BD
T0RFKG9wY29kZSkgXApAQCAtMjAwNiw3ICsyMTUyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgIHdoaWxlICgxKSB7IC8vIGl0ZXJhdG9yIGxvb3AgYmVn
aW5zCiAgICAgaW50ZXJwcmV0ZXJMb29wU3RhcnQ6OwogICAgIHN3aXRjaCAodlBDLT51Lm9wY29k
ZSkKLSNlbmRpZgorI2VuZGlmIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVS
UFJFVEVSKQogICAgIHsKICAgICBERUZJTkVfT1BDT0RFKG9wX25ld19vYmplY3QpIHsKICAgICAg
ICAgLyogbmV3X29iamVjdCBkc3QocikKQEAgLTUzMTksNiArNTQ2NSw5IEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAjZW5kaWYgLy8gRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiB9CiAKKyNl
bmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworCiBKU1ZhbHVlIEludGVycHJldGVyOjpy
ZXRyaWV2ZUFyZ3VtZW50c0Zyb21WTUNvZGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uKSBjb25zdAogewogICAgIENhbGxGcmFtZSogZnVuY3Rpb25DYWxsRnJhbWUg
PSBmaW5kRnVuY3Rpb25DYWxsRnJhbWVGcm9tVk1Db2RlKGNhbGxGcmFtZSwgZnVuY3Rpb24pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTExJbnREYXRh
LmgiCisjaW5jbHVkZSAiTExJbnRPcGNvZGUuaCIgLy8gbWxhbQogI2luY2x1ZGUgIk9wY29kZS5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC0xOTQsNyArMTk1LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisvLyBtbGFtICNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICAgICAgICAgIHJldHVy
biBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0y
MDQsNiArMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29k
ZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRp
YWxpemVkKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogI2lmIEVOQUJMRShM
TElOVCkKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAg
IHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CkBAIC0yMTMsNiArMjE2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29k
ZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKIAogICAgICAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbmRpZiAvLyBtbGFtIG5ldwogI2Vs
c2UKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKQEAgLTIyNSw3ICsyMjksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKLSAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgU2Nv
cGVDaGFpbk5vZGUqLCBKU09iamVjdCogdGhpc09iaik7CisgICAgICAgIEpTVmFsdWUgZXhlY3V0
ZV9tbGFtUChQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFNjb3BlQ2hhaW5Ob2RlKiwg
SlNPYmplY3QqIHRoaXNPYmopOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFt
ZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVD
b25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBj
b25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU1ZhbHVlIGV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2Nv
cGVDaGFpbk5vZGUqKTsKQEAgLTI4MCw3ICsyODQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIENhbGxGcmFtZSogZmluZEZ1bmN0aW9uQ2FsbEZyYW1lRnJvbVZNQ29kZShD
YWxsRnJhbWUqLCBKU0Z1bmN0aW9uKik7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
ICAgICBKU1ZhbHVlIGxsaW50Q0xvb3BFeGVjdXRlKEV4ZWN1dGlvbkZsYWcsIFJlZ2lzdGVyRmls
ZSosIENhbGxGcmFtZSosIExMSW50T3Bjb2RlSUQgYm9vdHN0cmFwT3Bjb2RlSWQgPSBsbGludF91
bnVzZWQsIExMSW50OjpEYXRhKiBkYXRhID0gMCk7CisjZWxzZQogICAgICAgICBKU1ZhbHVlIHBy
aXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcsIFJlZ2lzdGVyRmlsZSosIENhbGxGcmFtZSopOwor
I2VuZGlmCiAKICAgICAgICAgdm9pZCBkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSopOwogICAgICAg
ICAKQEAgLTI5NCw2ICszMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3Rl
ckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJTlQpCiAgICAgICAgIE9wY29kZSogbV9v
cGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAg
ICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBP
cGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCkBAIC0zMDEsMTEgKzMxMCwxNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURz
XTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNo
TWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4g
T3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ09NUFVU
RURfR09UT19PUENPREVTKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBib29sIG1f
aW5pdGlhbGl6ZWQ7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2NsYXNzaWNFbmFibGVkOworCisg
ICAgICAgIC8vIG1sYW0gQkVHSU4KKyAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwor
ICAgICAgICAvLyBtbGFtIEVORAogICAgIH07CiAKICAgICAvLyBUaGlzIHZhbHVlIG11c3Qgbm90
IGJlIGFuIG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhpcyBjb252ZXJzaW9uIChXZWJDb3Jl
J3MgZ2xvYmFsIG9iamVjdCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvVk1JbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1MyBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBWTUluc3BlY3Rvcjo6Z2V0VHlwZU5h
bWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0IGNo
YXIqIHZQQ1RhZ0RlY29kZVN0ciA9ICIiOworICAgIHN3aXRjaCAodmFsdWUudGFnKCkpIHsKKyAg
ICBjYXNlIEpTVmFsdWU6OkludDMyVGFnOiAgICAgICAgIHZQQ1RhZ0RlY29kZVN0ciA9ICI8SW50
MzI+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpCb29sZWFuVGFnOiAgICAgICB2UENUYWdE
ZWNvZGVTdHIgPSAiPEJvb2w+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpOdWxsVGFnOiAg
ICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPE51bGw+IjsgYnJlYWs7CisgICAgY2FzZSBKU1Zh
bHVlOjpVbmRlZmluZWRUYWc6ICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPFVuZGVmaW5lZD4iOyBi
cmVhazsKKyAgICBjYXNlIEpTVmFsdWU6OkNlbGxUYWc6ICAgICAgICAgIHZQQ1RhZ0RlY29kZVN0
ciA9ICI8Q2VsbD4iOyBicmVhazsKKyAgICBjYXNlIEpTVmFsdWU6OkVtcHR5VmFsdWVUYWc6ICAg
IHZQQ1RhZ0RlY29kZVN0ciA9ICI8RW1wdHk+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpE
ZWxldGVkVmFsdWVUYWc6ICB2UENUYWdEZWNvZGVTdHIgPSAiPERlbGV0ZWQ+IjsgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjw+IjsgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiB2UENUYWdEZWNvZGVTdHI7CisjZWxzZQorICAgIGlmICh2YWx1ZS5pc0lu
dDMyKCkpICAgICAgICAgICByZXR1cm4gIjxJbnQzMj4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlz
Qm9vbGVhbigpKSAgICByZXR1cm4gIjxCb29sZWFuPiI7CisgICAgZWxzZSBpZiAodmFsdWUuaXNO
dWxsKCkpICAgICAgIHJldHVybiAiPEVtcHR5PiI7CisgICAgZWxzZSBpZiAodmFsdWUuaXNVbmRl
ZmluZWQoKSkgIHJldHVybiAiPFVuZGVmaW5lZD4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzQ2Vs
bCgpKSAgICAgICByZXR1cm4gIjxDZWxsPiI7CisgICAgZWxzZSBpZiAodmFsdWUuaXNFbXB0eSgp
KSAgICAgIHJldHVybiAiPEVtcHR5PiI7CisgICAgLy8gbWxhbSBGSVhNRSA/IGVsc2UgaWYgKEpT
VmFsdWU6OmlzRGVsZXRlZFZhbHVlKHZhbHVlLikpIHJldHVybiAiPERlbGV0ZWQ+IjsKKyAgICBy
ZXR1cm4gIiI7CisjZW5kaWYKK30KKwordm9pZCBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lMChDYWxs
RnJhbWUqIGZyYW1lKSB7CisgICAgZHVtcEZyYW1lKGZyYW1lLCAwLCAwLCAwLCAwLCAwKTsKK30K
KworLy8gbWxhbSBCRUdJTiB0ZXN0CitpbnRwdHJfdCBtbGFtSW52b2tlQ291bnQgPSAwOworCit2
b2lkIFZNSW5zcGVjdG9yOjptbGFtQnJlYWsoKSB7Cit9CisKKy8vIG1sYW0gRU5EIHRlc3QKK3Zv
aWQgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShDYWxsRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBw
cmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogcGMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZnVuY05hbWUsIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lKQoreworICAgIGludCBmcmFtZUNvdW50ID0gVk1JbnNwZWN0b3I6OmNvdW50RnJh
bWVzKGZyYW1lKTsKKyAgICBpZiAoZnJhbWVDb3VudCA8IDApCisgICAgICAgIHJldHVybjsKKwor
ICAgIEluc3RydWN0aW9uKiB2UEMgPSAwOworICAgIGlmIChmcmFtZS0+Y29kZUJsb2NrKCkpCisg
ICAgICAgIHZQQyA9IGZyYW1lLT5jdXJyZW50VlBDKCk7CisKKyAgICAjZGVmaW5lIENBU1QgcmVp
bnRlcnByZXRfY2FzdAorCisgICAgcHJpbnRmKCIgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAiKTsgLy8gbWxh
bSBURVNUCisgICAgcHJpbnRmKCI8JWxkPiAiLCArK21sYW1JbnZva2VDb3VudCk7CisgICAgaWYg
KHByZWZpeCkKKyAgICAgICAgcHJpbnRmKCIlcyAiLCBwcmVmaXgpOworICAgIHByaW50ZigiRlJB
TUUgWyVkXSAlcCAlcyBwYyAlcCB8IHZwYyAlcCVzIHwgY2IgJXA6JXMgcmV0UEMgJXA6JXMgc2Nv
cGUgJXA6JXMgY2FsbGVyRnJhbWUgJXA6JXMgYXJnYyAlZDolcyBjYWxsZWUgJXA6JXMiLAorICAg
ICAgICAgICBmcmFtZUNvdW50LCBmcmFtZSwgIjx1bmtub3duPiIsIHBjLAorCisgICAgICAgICAg
IHZQQywKKyAgICAgICAgICAgIiIsIC8vIG1sYW0gRG8gd2UgbmVlZCB0aGlzPyBnZXRUeXBlTmFt
ZShDQVNUPGludHB0cl90Pih2UEMpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtS
ZWdpc3RlckZpbGU6OkNvZGVCbG9ja10ucGF5bG9hZCgpKSwKKyAgICAgICAgICAgZ2V0VHlwZU5h
bWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2tdLmpzVmFsdWUoKSksCisKKyAgICAgICAg
ICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10ucGF5bG9hZCgpKSwK
KyAgICAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10uanNW
YWx1ZSgpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW5dLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVOYW1lKGZyYW1lW1JlZ2lz
dGVyRmlsZTo6U2NvcGVDaGFpbl0uanNWYWx1ZSgpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQq
PihmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5wYXlsb2FkKCkpLAorICAgICAgICAg
ICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5qc1ZhbHVlKCkp
LAorCisgICAgICAgICAgIGZyYW1lW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0ucGF5bG9h
ZCgpLAorICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnRdLmpzVmFsdWUoKSksCisKKyAgICAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0
ZXJGaWxlOjpDYWxsZWVdLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVOYW1lKGZyYW1l
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5qc1ZhbHVlKCkpKTsKKworICAgIGlmIChmdW5jTmFtZSB8
fCBmaWxlIHx8IChsaW5lID49IDApKSB7CisgICAgICAgIHByaW50ZigiIEAiKTsKKyAgICAgICAg
aWYgKGZ1bmNOYW1lKQorICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBmdW5jTmFtZSk7CisgICAg
ICAgIGlmIChmaWxlKQorICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBmaWxlKTsKKyAgICAgICAg
aWYgKGxpbmUgPj0gMCkKKyAgICAgICAgICAgIHByaW50ZigiOiVkIiwgbGluZSk7CisgICAgfQor
ICAgIHByaW50ZigiXG4iKTsKKworICAgIHByaW50ZigiICAgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7IC8vIG1s
YW0gVEVTVAorCisgICAgI3VuZGVmIENBU1QKKworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAg
IGlmIChtbGFtSW52b2tlQ291bnQgPT0gMTYpIHsKKyAgICAgICAgbWxhbUJyZWFrKCk7CisgICAg
fQorICAgIC8vIG1sYW0gRU5EIHRlc3QKK30KKworaW50IFZNSW5zcGVjdG9yOjpjb3VudEZyYW1l
cyhDYWxsRnJhbWUqIGZyYW1lKQoreworICAgIGludCBjb3VudCA9IC0xOworICAgIC8vIG1sYW0g
REVCVUcgQVNTRVJUKCEhZnJhbWUpOworICAgIC8vIG1sYW0gRklYTUU6IEV2ZW50dWFsbHksIHdl
IHNob3VsZCBjaGFuZ2UgdGhpcyBzbyB0aGF0IHdlIGFsbG93IHRoZSBIb3N0IGZsYWcgdG8KKyAg
ICAvLyBiZSBzZXQgYnV0IHdlIGdldCB0aGUgY2FsbGVyIHdpdGggdGhlIEhvc3QgZmxhZyBtYXNr
ZWQgb3V0LCBhbmQgb25seSB0ZXJtaW5hdGUKKyAgICAvLyB3aGVuIHRoZSBjYWxsZXIgRnJhbWUg
aXMgTlVMTC4KKyAgICB3aGlsZSAoZnJhbWUgJiYgIWZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxh
ZygpKSB7CisgICAgICAgIGNvdW50Kys7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIC8vIG1sYW0gREVCVUcgQVNTRVJUKCEhZnJhbWUpOworICAgIH0KKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKK2NvbnN0IGNoYXIqIFZNSW5zcGVjdG9yOjpnZXRGdW5jdGlv
bk5hbWUoSlNGdW5jdGlvbiogZnVuYywgRXhlY1N0YXRlKiBleGVjKQoreworICAgIFVTdHJpbmcg
bmFtZSA9IGZ1bmMtPmNhbGN1bGF0ZWREaXNwbGF5TmFtZShleGVjKTsKKyAgICBjb25zdCBjaGFy
KiBuYW1lU3RyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obmFtZS5jaGFyYWN0ZXJz
OCgpKTsKKyAgICBpZiAobmFtZVN0cikKKyAgICAgICAgcmV0dXJuIG5hbWVTdHI7CisgICAgcmV0
dXJuICI8dW5rbm93bj4iOworfQorCisKK3ZvaWQgVk1JbnNwZWN0b3I6OmR1bXBTdGFjayhDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBpbnQgZGVwdGggPSAwOworICAgIHByaW50ZigiU3Rh
Y2sgc3RhcnRpbmcgZnJvbSBmcmFtZSAlcFxuIiwgY2FsbEZyYW1lKTsKKyAgICB3aGlsZSAoY2Fs
bEZyYW1lKSB7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNhbGxGcmFtZS0+Y2FsbGVlKCkpOworICAgICAgICAvL2lmIChmdW5jKSB7CisgICAgICAgICAg
ICAvL2NvbnN0IGNoYXIqIGZ1bmNOYW1lID0gZ2V0RnVuY3Rpb25OYW1lKGZ1bmMsIGNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAvL3ByaW50ZigiICBbJWRdICVzIEAlcCB8IGZyYW1lICVwXG4iLCBk
ZXB0aCsrLCBmdW5jTmFtZSwgZnVuYywgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIC8vfSBlbHNl
IHsKKyAgICAgICAgICAgIHByaW50ZigiICBbJWRdIDxudWxsPiBAJXAgfCBmcmFtZSAlcFxuIiwg
ZGVwdGgrKywgZnVuYywgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICAvLyBk
dW1wUmVnaXN0ZXJzKGNhbGxGcmFtZSk7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+
Y2FsbGVyRnJhbWUoKTsKKyAgICB9CisgICAgcHJpbnRmKCJFTkQgb2Ygc3RhY2sgZnJvbSBmcmFt
ZSAlcFxuIiwgY2FsbEZyYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9y
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKyNpZm5kZWYgVk1JbnNwZWN0b3JfaAor
I2RlZmluZSBWTUluc3BlY3Rvcl9oCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1Zh
bHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTUluc3BlY3RvciB7CitwdWJsaWM6
ICAgIAorICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBnZXRUeXBlTmFt
ZShKU1ZhbHVlIHZhbHVlKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1w
RnJhbWUwKENhbGxGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXBGcmFtZShDYWxsRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcmVmaXggPSAwLCB2
b2lkKiBwYyA9IDAsIGNvbnN0IGNoYXIqIGZ1bmNOYW1lID0gMCwgY29uc3QgY2hhciogZmlsZSA9
IDAsIGludCBsaW5lID0gLTEpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291
bnRGcmFtZXMoQ2FsbEZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uTmFtZShKU0Z1bmN0aW9uKiBmdW5jLCBFeGVjU3RhdGUq
IGV4ZWMpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBTdGFjayhDYWxs
RnJhbWUqKTsKKworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgIHN0YXRpYyBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIG1sYW1CcmVhaygpOworICAgIC8vIG1sYW0gRU5EIHRlc3QKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gVk1JbnNwZWN0b3IuaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9u
IDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAvLyBVbmZvcnR1bmF0ZWx5IHRo
aXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJlbnRseSBv
bmx5IHVzZWQKIC8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3RyaWN0ZWQg
dG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKIC8vIHByb2JhYmx5IGZpeCB0aGF0IGF0
IHNvbWUgcG9pbnQuCi0jaWYgQ09NUElMRVIoR0NDKQorI2lmIENPTVBJTEVSKEdDQykgJiYgRU5B
QkxFKEpJVCkKIAogI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCiAjZGVmaW5lIEhP
U1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
SklUQ29kZV9oCiAjZGVmaW5lIEpJVENvZGVfaAogCi0jaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFC
TEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAKICAgICBjbGFzcyBKSVRDb2Rl
IHsKLSNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xP
T1ApCiAgICAgICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CiAgICAg
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIENvZGVQdHI7CiAjZWxzZQpAQCAtNzcs
NyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09
IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKICAgICAgICAgfQog
ICAgICAgICAKLSNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgIEpJVENvZGUoKQogICAgICAgICAgICAgOiBtX2ppdFR5cGUoTm9u
ZSkKICAgICAgICAgewpAQCAtMTI3LDEyICsxMjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCk7CiAgICAgICAgIH0K
IAorI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGUhCiAgICAgICAg
IGlubGluZSBKU1ZhbHVlIGV4ZWN1dGUoUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGN0aVRyYW1wb2xpbmUo
bV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlZ2lzdGVyRmlsZSwgY2FsbEZyYW1l
LCAwLCAwLCBnbG9iYWxEYXRhKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uID8ganNOdWxsKCkgOiByZXN1bHQ7CiAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAg
IHZvaWQqIHN0YXJ0KCkgY29uc3QKICAgICAgICAgewpAQCAtMTgyLDcgKzE4NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIENvZGVSZWYgbV9yZWY7CiAgICAgICAgIEpJVFR5cGUgbV9q
aXRUeXBlOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwg
RU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICB9OwogCiB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwzMCArMzEsNjMgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rv
ci5oIiAvLyBtbGFtIFRFU1Qgb25seQogCi0jaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogCiBuYW1lc3BhY2UgSlNDIHsKIAogRXhjZXB0aW9u
SGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgdW5zaWduZWQgdlBDSW5kZXgpCiB7
CiAgICAgQVNTRVJUKGV4Y2VwdGlvblZhbHVlKTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBW
TUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAgIG1sYW0gOjogZ2VuZXJpY1Rocm93
IEJFRk9SRSBoYW5kbGVyOiAiLCAodm9pZCopdlBDSW5kZXgsIF9fRklMRV9fLCBfX0ZVTkNUSU9O
X18sX19MSU5FX18pOworICAgICNlbmRpZgogCiAgICAgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0g
SlNWYWx1ZSgpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gZ2xvYmFsRGF0YS0+aW50ZXJw
cmV0ZXItPnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIHZQQ0luZGV4
KTsgLy8gVGhpcyBtYXkgdXBkYXRlIGNhbGxGcmFtZSAmIGV4Y2VwdGlvblZhbHVlIQogICAgIGds
b2JhbERhdGEtPmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOworICAgICNpZiBtbGFtX1BSSU5U
RgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICAgbWxhbSA6OiBnZW5l
cmljVGhyb3cgQUZURVIgaGFuZGxlcjogIiwgKHZvaWQqKXZQQ0luZGV4LCBfX0ZVTkNUSU9OX18s
IF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAKICAgICB2b2lkKiBjYXRjaFJvdXRp
bmU7CiAgICAgSW5zdHJ1Y3Rpb24qIGNhdGNoUENGb3JJbnRlcnByZXRlciA9IDA7CiAgICAgaWYg
KGhhbmRsZXIpIHsKLSAgICAgICAgY2F0Y2hSb3V0aW5lID0gaGFuZGxlci0+bmF0aXZlQ29kZS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAmY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbaGFuZGxlci0+dGFyZ2V0XTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rpb25QdHIoY3RpT3BUaHJvd05v
dENhdWdodCkudmFsdWUoKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyBI
YW5kbGVySW5mby5uYXRpdmVDb2RlIGlzIG9ubHkgaW5zdGFudGlhdGVkIGFuZCBpbml0aWFsaXpl
ZCB3aGVuCisgICAgICAgIC8vIHRoZSBKSVQgaXMgaW4gdXNlZC4gIEhlbmNlLCB3ZSBjYW4ndCBy
ZWx5IG9uIGl0IGZvciB0aGUgQyBsb29wLAorICAgICAgICAvLyBidXQgaGF2ZSB0byBjb21wdXRl
IHRoZSBieXRlY29kZSBQQyBvdXJzZWx2ZXMuCisgICAgICAgIGNhdGNoUm91dGluZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPnUub3Bjb2Rl
KTsKKyNlbHNlCisgICAgICAgIGNhdGNoUm91dGluZSA9IGhhbmRsZXItPm5hdGl2ZUNvZGUuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgorICAgICAgICAvLyBtbGFtIEJFR0lOCisgICAgICAg
ICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuICAgIG1sYW0gOjogZ2VuZXJpY1Ro
cm93KCkgU0VUIGhhbmRsZXIgJXAgfCBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAlcCBjYXRjaFJv
dXRpbmUgJXBcbiIsIGhhbmRsZXIsIGNhdGNoUENGb3JJbnRlcnByZXRlciwgY2F0Y2hSb3V0aW5l
KTsKKyAgICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGCisgICAgICAgIC8vIG1sYW0gRU5ECisg
ICAgfSBlbHNlIHsKKyAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rpb25QdHIoTExJbnQ6OkRh
dGE6OmdldENvZGVQdHIoY3RpT3BUaHJvd05vdENhdWdodCkpLnZhbHVlKCk7CisgICAgICAgIC8v
IG1sYW0gQkVHSU4KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiXG4g
ICAgbWxhbSA6OiBnZW5lcmljVGhyb3coKSBTRVQgTk8gaGFuZGxlciB8IGNhdGNoUm91dGluZSA9
ICVwXG4iLCBjYXRjaFJvdXRpbmUpOworICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYKKyAg
ICAgICAgLy8gbWxhbSBFTkQKKyAgICB9CiAgICAgCiAgICAgZ2xvYmFsRGF0YS0+Y2FsbEZyYW1l
Rm9yVGhyb3cgPSBjYWxsRnJhbWU7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0
b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgICBtbGFtIDo6IGdlbmVyaWNUaHJvdyBUQVJHRVQg
Y2FsbEZyYW1lOiAiLCAodm9pZCopdlBDSW5kZXgsIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9f
TElORV9fKTsKKyAgICAjZW5kaWYKICAgICBnbG9iYWxEYXRhLT50YXJnZXRNYWNoaW5lUENGb3JU
aHJvdyA9IGNhdGNoUm91dGluZTsKICAgICBnbG9iYWxEYXRhLT50YXJnZXRJbnRlcnByZXRlclBD
Rm9yVGhyb3cgPSBjYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CisgICAgLy8gbWxhbSBCRUdJTgorICAg
ICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50ZigiXG4gICAgbWxhbSA6OiBnZW5lcmljVGhyb3co
KSBjYXRjaFJvdXRpbmUgJXAgY2F0Y2hQQ0ZvckludGVycHJldGVyID0gJXBcbiIsIGNhdGNoUm91
dGluZSwgY2F0Y2hQQ0ZvckludGVycHJldGVyKTsKKyAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYK
KyAgICAvLyBtbGFtIEVORAogICAgIAogICAgIEFTU0VSVChjYXRjaFJvdXRpbmUpOwogICAgIEV4
Y2VwdGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlciA9IHsgY2F0Y2hSb3V0aW5lLCBjYWxsRnJh
bWUgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCShy
ZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKIAotI2lmIEVOQUJMRShBU1NF
TUJMRVIpCisjaWYgRU5BQkxFKEFTU0VNQkxFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUwLDcgKzUwLDcgQEAgRXhjZXB0aW9uSGFuZGxlciBqaXRU
aHJvdyhKU0dsb2JhbERhdGEqLAogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogI2VuZGlm
IC8vIEpJVEV4Y2VwdGlvbnNfaAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsMTMgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgdm9pZCogSklUX1NUVUIgY3RpX3ZtX3Rocm93KFNUVUJfQVJHU19ERUNMQVJBVElPTikgUkVG
RVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiB9IC8vIGV4dGVybiAiQyIKIAotI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisjZWxpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorCitzdHJ1Y3QgSklU
U3RhY2tGcmFtZSB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOworfTsKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKEpJVCkKKwogbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNJbnRlcmZhY2VKSVQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIg
ewogICAgIHB1YmxpYzoKQEAgLTMzMSw2ICszMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsUmVn
aXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi19Cit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNlbmRpZiAvLyBKU0ludGVyZmFj
ZUpJVF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAko
cmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIwICszMSwzNyBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCi0jaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorLy8gbWxhbSAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIgLy8gbWxhbQorLy8gbWxhbSAjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKIAorLy8gbWxhbSBCRUdJTgorYm9vbCBEYXRhOjpzX2lzSW5pdGVkID0g
ZmFsc2U7CitJbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSAwOwor
TExJbnRPcGNvZGUqIERhdGE6OnNfb3Bjb2RlTWFwID0gMDsKKy8vIG1sYW0gRU5ECisKIERhdGE6
OkRhdGEoKQorLyogbWxhbSBCRUdJTiBvcmlnCiAgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
cyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCi0gICAgLCBtX29wY29kZU1h
cChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCisgICAgICAvLyBtbGFtIG9yaWcgLCBtX29wY29k
ZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bj
b2RlW251bUxMSW50T3Bjb2RlSURzXSkKKyovCiB7CisgICAgaWYgKCFzX2lzSW5pdGVkKSB7Cisg
ICAgICAgIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gbmV3IEluc3RydWN0aW9uW21heE9wY29k
ZUxlbmd0aCArIDFdOworICAgICAgICBzX29wY29kZU1hcCA9IG5ldyBMTEludE9wY29kZVtudW1M
TEludE9wY29kZUlEc107CisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCi0gICAgICAgIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwotI2RlZmluZSBPUENPREVfRU5UUlkob3Bj
b2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF8jI29wY29kZSk7CisgICAgICAgIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9p
bnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIHNfb3Bjb2Rl
TWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CiAgICAg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CiAjdW5kZWYgT1BDT0RFX0VOVFJZCisg
ICAgICAgIHNfaXNJbml0ZWQgPSB0cnVlOworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgIH0KIH0KIAogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAtMTIyLDggKzEzOSwxMCBAQCB2
b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0CiAKIERhdGE6On5EYXRhKCkK
IHsKKyAgICAvKiBtbGFtIEJFR0lOIG9yaWcKICAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3Ry
dWN0aW9uczsKICAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKKyAgICAqLwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOSBAQAogI2RlZmluZSBM
TEludERhdGFfaAogCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2LDE2ICs0OCw3NCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiAgICAg
ewotICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgICAgIC8vIG1s
YW0gb3JpZyByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgICAgIHJldHVybiBz
X2V4Y2VwdGlvbkluc3RydWN0aW9uczsKICAgICB9CiAgICAgCi0gICAgT3Bjb2RlKiBvcGNvZGVN
YXAoKQorICAgIExMSW50T3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgLy8gbWxh
bSByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgICAgIHJldHVybiBzX29wY29kZU1hcDsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBpc0luaXRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gc19p
c0luaXRlZDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRJc0luaXRlZCgpCisgICAgewor
ICAgICAgICBzX2lzSW5pdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgTExJbnRPcGNv
ZGUgZ2V0T3Bjb2RlKExMSW50T3Bjb2RlSUQgaWQpCisgICAgeworI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX09QQ09ERVMpCisgICAgICAgIHJldHVybiBzX29wY29kZU1hcFtpZF07CisjZWxzZQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TExJbnRPcGNvZGU+KGlkKTsKKyNlbmRpZgorICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIExMSW50T3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRPcGNvZGUoc3RhdGljX2Nhc3Q8TExJ
bnRPcGNvZGVJRD4oaWQpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQqIGdldENvZGVQdHIoTExJbnRPcGNvZGVJRCBpZCkK
KyAgICB7CisgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKGlkKSk7CisgICAgICAgICNlbHNl
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGUoaWQpKTsK
KyAgICAgICAgI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkKiBnZXRDb2RlUHRyKHZvaWQgZ2x1ZUhlbHBlcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdsdWVIZWxwZXIpOworICAgIH0KKyNlbmRpZgorCisg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICAgICAgI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX09QQ09ERVMpCisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihnZXRP
cGNvZGUoaWQpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGdldE9wY29kZShpZCkpOworICAgICAgICAjZW5kaWYKICAgICB9CisKIHByaXZh
dGU6CisgICAgLyogbWxhbSBCRUdJTiBvcmlnCiAgICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zOwogICAgIE9wY29kZSogbV9vcGNvZGVNYXA7CisgICAgKi8KKyAgICBzdGF0
aWMgYm9vbCBzX2lzSW5pdGVkOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogc19leGNlcHRpb25J
bnN0cnVjdGlvbnM7CisgICAgc3RhdGljIExMSW50T3Bjb2RlKiBzX29wY29kZU1hcDsKKyAgICAv
LyBtbGFtIEVORCAqLwogfTsKICNlbHNlIC8vIEVOQUJMRShMTElOVCkKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgZ2V0RnVuY3Rpb25F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyNp
ZiBFTkFCTEUoSklUKQogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CiAgICAgICAgIGFy
aXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CkBAIC02MSw2ICs2Miw3IEBAIHZvaWQgZ2V0RnVuY3Rp
b25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYKICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KTsKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CiAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworI2VuZGlmCiB9
CiAKIHZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRD
b2RlJiBqaXRDb2RlKQpAQCAtNjksOCArNzEsOSBAQCB2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvCiAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKyNpZiBF
TkFCTEUoSklUKSAgICAKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0
dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyNlbmRpZgogfQogCiB2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKQEAgLTc5LDggKzgyLDkgQEAgdm9pZCBnZXRQcm9n
cmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIAogICAgICAgICBqaXRDb2RlID0gSklUQ29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3By
b2xvZ3VlKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBJbnN0cnVj
dGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4CiAgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5k
ZXNjcmlwdGlvbigpKTsKICNlbmRpZgogICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVj
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOwotICAgIAorCiAgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0
YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKIH0KIApAQCAtNzQsOCArNzQsOCBAQCB2b2lkKiBj
YWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RyCiAgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVz
Y3JpcHRpb24oKSk7CiAjZW5kaWYKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKTsKLSAgICAKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CisKKyAgICByZXR1cm4gTExJbnQ6OkRh
dGE6OmdldENvZGVQdHIobGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOSArMzEsMjYgQEAKICNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBDUFUoWDg2KQorCisjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKyNkZWZpbmUgT0ZGTElORV9BU01fQ19MT09QIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0NfTE9PUCAwCisjZW5kaWYKKworI2lmIENQVShYODYpICYm
ICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQogI2Vsc2UK
ICNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9USFVNQjIp
CisjaWYgQ1BVKEFSTV9USFVNQjIpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2RlZmluZSBP
RkZMSU5FX0FTTV9BUk12NyAxCiAjZWxzZQogI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCiAj
ZW5kaWYKIAotI2lmIENQVShYODZfNjQpCisjaWYgQ1BVKFg4Nl82NCkgJiYgIUVOQUJMRShMTElO
VF9DX0xPT1ApCiAjZGVmaW5lIE9GRkxJTkVfQVNNX1g4Nl82NCAxCiAjZWxzZQogI2RlZmluZSBP
RkZMSU5FX0FTTV9YODZfNjQgMApAQCAtOTEsNiArOTgsMTAgQEAKICNkZWZpbmUgT0ZGTElORV9B
U01fVkFMVUVfUFJPRklMRVIgMAogI2VuZGlmCiAKKy8qIG1sYW0gVFJZIG1vdmluZyB0byBMb3dM
ZXZlbEludGVycHJldGVyLmNwcAorCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIC8vIFRo
ZXNlIGFyZSBmb3IgYnVpbGRpbmcgYW4gaW50ZXJwcmV0ZXIgZnJvbSBnZW5lcmF0ZWQgYXNzZW1i
bHkgY29kZToKICNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4gICBhc20gKAogI2RlZmluZSBPRkZM
SU5FX0FTTV9FTkQgICAgICk7CkBAIC0xMDgsNyArMTE5LDIxIEBACiAgICAgSElERV9TWU1CT0wo
bGFiZWwpICJcbiIgICAgICAgICAgICAgICAgICAgICBcCiAgICAgU1lNQk9MX1NUUklORyhsYWJl
bCkgIjpcbiIKICNlbmRpZgorI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bjb2Rl
KSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGxpbnRfIyNvcGNvZGUpCiAKICNkZWZpbmUgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwobGFiZWwpICAgTE9DQUxfTEFCRUxfU1RSSU5HKGxhYmVsKSAi
OlxuIgogCisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorCisvLyBUaGVzZSBhcmUgZm9y
IGJ1aWxkaW5nIGEgQyBMb29wIGludGVycHJldGVyOgorI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJ
TgorI2RlZmluZSBPRkZMSU5FX0FTTV9FTkQKKyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wY29kZSkgREVGSU5FX09QQ09ERShvcGNvZGUpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dM
T0JBTF9MQUJFTChsYWJlbCkgIGxhYmVsOgorI2RlZmluZSBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChsYWJlbCkgICBsYWJlbDoKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisKKy8v
IG1sYW0gRU5EIHRyeSBtb3ZpbmcgdG8gTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8KKwogI2Vu
ZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiIC8vIG1sYW0KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjEsNyArNjIsOCBAQCBw
dWJsaWM6CiAKIGNvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkK
IHsKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUo
SklUKSB8fCBFTkFCTEUoTExJTlQpCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUK
IC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIgaWRl
bnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2
ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4
dHJhY3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBACiAj
aW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJQcm9maWxlci5oIiAvLyBt
bGFtCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKIApAQCAtMjMxLDkgKzIzMyw5IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm8KIAogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiB7
Ci0gICAgZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHNjb3BlICVwXG4i
LAorICAgIGRhdGFMb2coIiVwIHZwYyAlcDogZXhlY3V0aW5nICVwIGJjIyV6dSwgJXMsIHNjb3Bl
ICVwXG4iLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCi0gICAgICAgICAgICBleGVj
LAorICAgICAgICAgICAgZXhlYywgcGMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCiAgICAg
ICAgICAgICBvcGNvZGVOYW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKHBjWzBdLnUub3Bjb2RlKV0sCiAgICAgICAgICAgICBleGVjLT5zY29wZUNoYWluKCkp
OwpAQCAtMjU1LDYgKzI1Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2Up
CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KIAorI2lmIEVOQUJMRShKSVQpCiBpbmxpbmUgYm9v
bCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIFlvdSBjYW4gbW9kaWZ5IHRo
aXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxkLgpAQCAt
MzkwLDYgKzM5Myw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiAgICAgICAgIGNv
ZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChyZWdpc3Rlcl9m
aWxlX2NoZWNrKQogewpAQCAtNDAzLDYgKzQwNyw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJl
Z2lzdGVyX2ZpbGVfY2hlY2sKICNlbmRpZgogICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClb
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwogICAgIGlmIChVTkxJS0VM
WSghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVn
aXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7Cisg
ICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGV4
ZWMsICIgICAqKiogbWxhbSBsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrOiAiKTsKKyAgICAgICAg
I2VuZGlmCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5Q
QygpOwogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICAgICAgZ2xvYmFs
RGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CkBAIC00MjEs
OCArNDI4LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXQKICAg
ICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIGdsb2JhbERhdGEuZXhj
ZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwogICAgICAgICBpbnRlcnBy
ZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0dXJuUEMpOworICAgICAgICAjaWYgbWxhbV9QUklO
VEYKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShleGVjLCAiICoqKiBTdGFja092ZXJm
bG93IChpbiBzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKSIpOworICAgICAgICAjZW5kaWYKICAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpLCBleGVjKTsKICAgICB9CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1J
bnNwZWN0b3I6OmR1bXBGcmFtZShuZXdFeGVjLCAiICoqKiBOb3JtYWwgKGluIHNsb3dfcGF0aF9j
YWxsX2FyaXR5Q2hlY2spIik7CisgICAgI2VuZGlmCiAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBu
ZXdFeGVjKTsKIH0KIApAQCAtNjM3LDYgKzY1MCwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbXVsKQogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgZG91YmxlIGEgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKICAgICBkb3VibGUgYiA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgICNpZiBtbGFtX1BSSU5URgorICAg
IHByaW50ZigiXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PVxuIik7CisgICAgcHJpbnRmKCIgbGxpbnQgc2xvd19wYXRoX211bCAlZSAqICVlID09PiAlZVxu
IiwgYSwgYiwgYSpiKTsKKyAgICBwcmludGYoIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAjZW5kaWYKICAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoYSAqIGIpKTsKIH0KIApAQCAtNzc4LDcgKzc5Niw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJl
c29sdmVHbG9iYWwoRXhlY1N0YXRlKiAKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpKTsKICAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKLSAgICAKKworICAg
IC8vc3RhdGljIGludCBtbGFtQ291bnQgPSAwOworICAgIC8vcHJpbnRmKCJcblxuICoqKiBbJWRd
IHN0cnVjdHVyZSAlcCwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSAlcFxuXG4iLCArK21sYW1D
b3VudCwgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkp
OwogICAgIAogICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBy
b3BlcnR5KTsKQEAgLTc5Miw3ICs4MTIsMTIgQEAgc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2Jh
bChFeGVjU3RhdGUqIAogICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgIH0KLSAgICAgICAg
CisgICAgICAgIC8qIG1sYW0KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIGlmIChy
ZXN1bHQuaXNJbnQzMigpKQorICAgICAgICAgICAgcHJpbnRmKCIgICBtbGFtIFNMT1cgcmVzb2x2
ZUdsb2JhbCB8IGNvZGVCbG9jayAlcCBvYmogJXAgcmVzdWx0ID0gJWRcbiIsIGNvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCByZXN1bHQuYXNJbnQzMigpKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAg
IC8vIG1sYW0gKi8KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkBAIC04OTcs
MTAgKzkyMiwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewotICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MzAsMTIgKzk1
NSwzNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKLSAgICBpZiAocGNb
OF0udS5vcGVyYW5kKQorICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKICAgICAgICAgYXNPYmpl
Y3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50LCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgc2xvdCk7Ci0gICAgZWxzZQorICAgICAgICAvKiBtbGFtCisgICAgICAgICNp
ZiBtbGFtX1BSSU5URgorICAgICAgICBpZiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkuaXNJbnQz
MigpKSB7CisgICAgICAgICAgICAvLyBwcmludGYoIiAgIG1sYW0gUEFUSF8xIHNsb3dfcGF0aF9w
dXRfYnlfaWQgfCBjb2RlYmxvY2sgJXAgcmVzdWx0ID0gJWRcbiIsIGNvZGVCbG9jaywgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkuYXNJbnQzMigpKTsKKyAgICAgICAgfQorICAgICAgICAjZW5kaWYK
KyAgICAgICAgLy8gbWxhbSAqLworICAgIH0gZWxzZSB7CiAgICAgICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICAgICAgLyog
bWxhbQorICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgaWYgKExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLmlzSW50MzIoKSkgeworICAgICAgICAgICAgLy8gcHJpbnRmKCIgICBtbGFtIFBB
VEhfMiBzbG93X3BhdGhfcHV0X2J5X2lkIHwgb2JqICVwIGNvZGVibG9jayAlcCByZXN1bHQgPSAl
ZFxuIiwgYmFzZVZhbHVlLmdldE9iamVjdCgpLCBjb2RlQmxvY2ssIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLmFzSW50MzIoKSk7CisgICAgICAgIH0KKyAgICAgICAgI2VuZGlmCisgICAgICAgIC8v
IG1sYW0gKi8KKyAgICB9CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCisgICAg
LyogbWxhbQorICAgICNpZiBtbGFtX1BSSU5URgorICAgIGlmIChMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS5pc0ludDMyKCkpIHsKKyAgICAgICAgLy8gcHJpbnRmKCIgICBtbGFtIE5PX0VYQ0VQVElP
TiBzbG93X3BhdGhfcHV0X2J5X2lkIHwgY29kZWJsb2NrICVwIHJlc3VsdCA9ICVkXG4iLCBjb2Rl
QmxvY2ssIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLmFzSW50MzIoKSk7CisgICAgfQorICAgICNl
bmRpZgorICAgIC8vIG1sYW0gKi8KKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9X
CiAgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkpIHsKQEAgLTk1Myw3ICsxMDAwLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKICAg
ICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgotICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAKICAgICAgICAgICAgICAgICAgICAgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTk3MywyNCArMTAyMCwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAo
cGNbOF0udS5vcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQp
OworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUp
OworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAg
ICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpAQCAtMTMwNCw2ICsxMzUxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25ld19mdW5jXwogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxl
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogeworICAgIC8vIG1sYW0gcHJpbnRmKCIg
ICBtbGFtIFNMT1cgUEFUSCBoYW5kbGVIb3N0Q2FsbCBmcCAlcCBwYyAlcCBjYWxsZWUgJXAga2lu
ZCAlZCBAICVzOiVkXG4iLCBleGVjQ2FsbGVlLCBwYywgY2FsbGVlLmdldE9iamVjdCgpLCBraW5k
LCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOwogCkBAIC0xMzcxLDIyICsxNDE5LDU1IEBAIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc2Nv
cGUtPmdsb2JhbERhdGE7CiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihzY29wZSk7CiAg
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAg
ICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAgICoqKiBtbGFtIGV4ZWN1dGFibGUgPSBj
YWxsZWUtPmV4ZWN1dGFibGUoKSAlcFxuIiwgZXhlY3V0YWJsZSk7CisgICAgI2VuZGlmCiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAwOwotICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlm
IChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisjaWYgRU5BQkxFKEpJVCkgLy8gbWxh
bSBGSVhNRQogICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
cihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOwotICAgIGVsc2UgeworI2Vsc2UKKyAgICAgICAgY29k
ZVB0ciA9IChraW5kID09IENvZGVGb3JDYWxsKSA/CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5l
KSA6CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0
cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOworI2VuZGlmIC8vIG1sYW0gRklY
TUUKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiICAgKioqIG1sYW0g
aXNIb3N0RnVuY3Rpb24gfCBjb2RlUHRyID8/XG4iIC8qICwgY29kZVB0ciAqLyk7CisgICAgICAg
ICNlbmRpZgorICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGls
ZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOwotICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICB9CiAgICAgICAg
IGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOwogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRG
CisgICAgICAgIHByaW50ZigiICAgKioqIG1sYW0gTk9UIGlzSG9zdEZ1bmN0aW9uIHwgY29kZUJs
b2NrICVwXG4iLCBjb2RlQmxvY2spOworICAgICAgICAjZW5kaWYKKyAgICAgICAgLy8qIG1sYW0K
KyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiXG4gbWxhbSBDT01QSUxF
RCBjb2RlQmxvY2s9ICVwIGV4ZWN1dGFibGUgJXAgQCAlcyAlczolZFxuIiwKKyAgICAgICAgICAg
ICAgIGNvZGVCbG9jaywgZnVuY3Rpb25FeGVjdXRhYmxlLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9f
LCBfX0xJTkVfXyk7CisgICAgICAgICNlbmRpZgorICAgICAgICAvLyBtbGFtICovCisjaWYgRU5B
QkxFKEpJVCkgLy8gbWxhbSBGSVhNRQogICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpKQogICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8
IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAg
ICAgICAgY29kZVB0ciA9IChraW5kID09IENvZGVGb3JDYWxsKSA/CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spIDoKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IChraW5kID09
IENvZGVGb3JDYWxsKSA/CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpIDoKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlRfQ19MT09QKQogICAgIH0KICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvKSB7CkBAIC0x
NDAwLDYgKzE0ODEsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhl
YwogICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7
CiAgICAgfQogICAgIAorICAgICNpZiBtbGFtX1BSSU5URgorICAgIGV4ZWNDYWxsZWUtPnNldENv
ZGVCbG9jayhjb2RlQmxvY2spOworICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhlY0NhbGxl
ZSwgIiAgPj4+IFBVU0hFRCAoRU5EIHNldHVwQ2FsbCkgdG8gbmV3ICIsIHBjLCBfX0ZVTkNUSU9O
X18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCisKICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0KIApA
QCAtMTQxNCwxMCArMTUwMCwyMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWND
YWxsKEV4CiAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCk7CiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3Bl
cmFuZDsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAgICoqKiBtbGFtIGV4ZWND
YWxsZWUgJXAgPSAgZXhlYyAlcCArICVkXG4iLCBleGVjQ2FsbGVlLCBleGVjLCBwY1szXS51Lm9w
ZXJhbmQpOworICAgICNlbmRpZgogICAgIAogICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgcHJpbnRmKCIgICAqKiogbWxhbSBhcmdDb3VudEluY2x1ZGluZ1RoaXMgJWRcbiIsIHBjWzJd
LnUub3BlcmFuZCk7CisgICAgI2VuZGlmCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdp
c3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgICNpZiBtbGFtX1BSSU5URgor
ICAgIHByaW50ZigiICAgKioqIG1sYW0gY2FsbGVlICVwXG4iLCBjYWxsZWVBc1ZhbHVlLmdldE9i
amVjdCgpKTsKKyAgICAjZW5kaWYKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAgICoqKiBtbGFtIGNhbGxlckZy
YW1lICVwXG4iLCBleGVjKTsKKyAgICAjZW5kaWYKICAgICAKICAgICBBU1NFUlQocGNbNF0udS5j
YWxsTGlua0luZm8pOwogICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQs
IGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKQEAgLTE0MjUsNiArMTUyMywx
MiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4CiAKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQogeworICAgIC8qIG1sYW0KKyAgICAjaWYgbWxh
bV9QUklOVEYKKyAgICBwcmludGYoIlxuXG4gbWxhbSAmJiYmJiYmJiBsbGludF9zbG93X3BhdGhf
Y2FsbCB8IHBjICVwIGZyYW1lKCVwKS0+Y3VycmVudFZQQygpID0gJXAgQCAlczolZFxuXG4iLAor
ICAgICAgICAgICBwYywgZXhlYywgZXhlYy0+Y3VycmVudFZQQygpLCBfX0ZJTEVfXywgX19MSU5F
X18pOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gKi8KICAgICBMTElOVF9CRUdJTl9OT19TRVRf
UEMoKTsKICAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKIH0K
QEAgLTE0NjgsMTQgKzE1NzIsMjIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nh
bGxfZXZhbAogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAgIGV4ZWND
YWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
ICAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Ci0gICAg
ZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50
X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoTExJ
bnQ6OkRhdGE6OmdldENvZGVQdHIobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKICAgICBl
eGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyAr
IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CiAgICAgCiAgICAgaWYgKCFpc0hvc3RGdW5j
dGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAgICAgIHJldHVybiBzZXRV
cENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKICAgICAK
KyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGV4ZWNDYWxs
ZWUsICIgID4+PiBQVVNIRUQgKHNsb3cgZXZhbCkgdG8gbmV3ICIsIHBjLCBfX0ZVTkNUSU9OX18s
IF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCisKICAgICBnbG9iYWxEYXRhLmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgICNpZiBtbGFtX1BSSU5URgor
ICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhlY0NhbGxlZSwgIiAgPz8/IEFGVEVSIChzbG93
IGV2YWwpIHRvIG5ldyAiLCBwYywgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOwor
ICAgICNlbmRpZgorCiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKIH0KIApAQCAtMTUx
NCw2ICsxNjI2LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpCiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpCiB7CisgICAgLyog
bWxhbQorICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhl
YywgIiAgID09PSBpbnNwZWN0ICIsIHBjLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVf
Xyk7CisgICAgI2VuZGlmCisgICAgLy8gbWxhbSAqLwogICAgIExMSU5UX0JFR0lOKCk7CiAgICAg
TExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMzMgKzQ0LDUwIEBAIG5hbWVzcGFjZSBM
TEludCB7CiAvLyB3YXJuaW5ncywgb3Igd29yc2UsIGEgY2hhbmdlIGluIHRoZSBBQkkgdXNlZCB0
byByZXR1cm4gdGhlc2UgdHlwZXMuCiBzdHJ1Y3QgU2xvd1BhdGhSZXR1cm5UeXBlIHsKICAgICB2
b2lkKiBhOwotICAgIHZvaWQqIGI7CisgICAgRXhlY1N0YXRlKiBiOwogfTsKIAotaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwgdm9pZCogYikKK2lubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKIHsK
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0OwogICAgIHJlc3VsdC5hID0gYTsKICAgICBy
ZXN1bHQuYiA9IGI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbHNlCisKK2lubGluZSB2b2lk
IGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0
YXRlKiYgYikKK3sKKyAgICBhID0gcmVzdWx0LmE7CisgICAgYiA9IHJlc3VsdC5iOworfQorCisj
ZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogdHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0dXJu
VHlwZTsKIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwg
dm9pZCogYikKK3R5cGVkZWYgdW5pb24geworICAgIHN0cnVjdCB7CisgICAgICAgIHZvaWQqIGE7
CisgICAgICAgIEV4ZWNTdGF0ZSogYjsKKyAgICB9IHBhaXI7CisgICAgaW50NjRfdCBpOworfSBT
bG93UGF0aFJldHVyblR5cGVFbmNvZGluZzsKKworaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBl
bmNvZGVSZXN1bHQodm9pZCogYSwgRXhlY1N0YXRlKiBiKQogewotICAgIHVuaW9uIHsKLSAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgIHZvaWQqIGE7Ci0gICAgICAgICAgICB2b2lkKiBiOwot
ICAgICAgICB9IHBhaXI7Ci0gICAgICAgIGludDY0X3QgaTsKLSAgICB9IHU7CisgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKICAgICB1LnBhaXIuYSA9IGE7CiAgICAgdS5wYWlyLmIg
PSBiOwogICAgIHJldHVybiB1Lmk7CiB9Ci0jZW5kaWYKKworaW5saW5lIHZvaWQgZGVjb2RlUmVz
dWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQor
eworICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7CisgICAgdS5pID0gcmVzdWx0Owor
ICAgIGEgPSB1LnBhaXIuYTsKKyAgICBiID0gdS5wYWlyLmI7Cit9CisjZW5kaWYgLy8gVVNFKEpT
VkFMVUUzMl82NCkKIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
b3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgewogCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7CiAg
ICAgSlNJbnRlcmZhY2VKSVQgaml0OwpAQCAtNzgsNiArODAsOCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHCiAgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIik7CiB9CiAK
KyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
cmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgzLDE1ICs4MywxNiBAQCBj
b25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKIAogCiAjIFV0aWxpdGllcworCiBtYWNy
byBkaXNwYXRjaChhZHZhbmNlKQotICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCi0gICAgam1wIFtQ
Q10KKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQyAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihj
dXJyZW50Qnl0ZWNvZGUpOworICAgIGptcCBbUENdICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IE5FWFRfSU5TVFJVQ1RJT047CiBlbmQKIAogbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHBjT2Zmc2V0KQogICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKICAgICBhZGRwIHBjT2Zmc2V0LCBQ
QwotICAgIGptcCBbUENdCisgICAgam1wIFtQQ10gICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKIGVuZAogCiBtYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkK
QEAgLTEwMCwyMSArMTAxLDI1IEBAIG1hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQogZW5k
CiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCi0gICAgam1wIFtQQ10KKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1f
UFJJTlRGKSBwcmludGYoIlxuIG1sYW0gOjogUFJJTlQgZGlzcGF0Y2hBZnRlckNhbGwoKSB8IHBj
ID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnO1xuXG4iKTsKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAv
LyBSZWxvYWQgYSBwcmV2aW91c2x5IHN0YXNoZWQgcmV0dXJuUEMuCisgICAgam1wIFtQQ10gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047
CiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQogICAgIGlmIEFSTXY3
Ci0gICAgICAgIG1vdmUgYXJnMSwgdDAKLSAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBt
b3ZlIGFyZzEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMSA9IC4uLjsKKyAg
ICAgICAgbW92ZSBhcmcyLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzIgPSAu
Li47CisgICAgICAgIGNhbGwgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
YWxsIEMgZnVuY3Rpb247CiAgICAgZWxzaWYgWDg2Ci0gICAgICAgIHBva2UgYXJnMSwgMAotICAg
ICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmcxLCAwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAgICAgIHBva2UgYXJnMiwgMSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBhcmcyID0gLi4uOworICAgICAgICBjYWxsIGZ1bmN0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uOworICAgIGVsc2lmIENf
TE9PUAorICAgICAgICBjeHhDYWxsU2xvd1BhdGggZnVuY3Rpb24sIGFyZzEsIGFyZzIgICAgLy8g
Y2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAg
ICBlbmQKLSAgICBjYWxsIGZ1bmN0aW9uCiBlbmQKIAogIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJn
MyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KQEAgLTEyNCwyMSArMTI5
LDI0IEBAIG1hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywKICAgICAgICAg
bW92ZSBhcmcyLCB0MQogICAgICAgICBtb3ZlIGFyZzMsIHQyCiAgICAgICAgIG1vdmUgYXJnNCwg
dDMKKyAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NgogICAgICAgICBwb2tlIGFy
ZzEsIDAKICAgICAgICAgcG9rZSBhcmcyLCAxCiAgICAgICAgIHBva2UgYXJnMywgMgogICAgICAg
ICBwb2tlIGFyZzQsIDMKKyAgICAgICAgY2FsbCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAor
ICAgICAgICBlcnJvcgogICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKLSAgICBjYWxs
IGZ1bmN0aW9uCiBlbmQKIAogbWFjcm8gY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGNDYWxs
MihzbG93UGF0aCwgY2ZyLCBQQykKLSAgICBtb3ZlIHQwLCBQQwotICAgIG1vdmUgdDEsIGNmcgor
ICAgIG1vdmUgdDAsIFBDICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlv
bjx0MD4KKyAgICBtb3ZlIHQxLCBjZnIgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KIGVuZAogCiAjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0
byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQpA
QCAtMTYyLDggKzE3MCw5IEBAIGVuZAogCiAjIENhbGwgYSBzbG93UGF0aCBmb3IgY2FsbCBvcGNv
ZGVzLgogbWFjcm8gY2FsbENhbGxTbG93UGF0aChhZHZhbmNlLCBzbG93UGF0aCwgYWN0aW9uKQot
ICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAotICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwICAgICAgICAg
ICAgICAgICAgICAvLyByZXR1cm5QQzx0MD4gPSBwYyArIGFkdmFuY2UqNDsKKyAgICBzdG9yZXAg
dDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENvdW50
LlRhZyA9IHJldHVyblBDPHQwPjsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJp
bnRmKCJcbiBtbGFtIDo6IFBSSU5UIGNhbGxDYWxsU2xvd1BhdGgoKSB8IGNmciAlcCBwYyAlcCB8
IHJldHVyblBDPHQwPiA9IHBjICsgYWR2YW5jZSo0OyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBy
ZXR1cm5QQzx0MD47XG5cbiIsIGNhbGxGcmFtZSwgclBDLnUudnApOwogICAgIGNDYWxsMihzbG93
UGF0aCwgY2ZyLCBQQykKICAgICBtb3ZlIHQxLCBjZnIKICAgICBhY3Rpb24odDApCkBAIC0xNzMs
MzAgKzE4MiwzMCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVCgKICAgICAgICAgMSwKICAgICAgICAgbWFjcm8gKCkKLSAgICAgICAgICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENv
dW50LlRhZyA9IHBjOwogICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQ
QykKICAgICAgICAgICAgIG1vdmUgdDEsIGNmcgogICAgICAgICAgICAgYnRweiB0MCwgLnJlY292
ZXIKICAgICAgICAgICAgIGptcCB0MAogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMgICAgLy8gcGMgPSBjZnIuQXJndW1l
bnRDb3VudC5UYWc7CiAgICAgICAgIGVuZCkKIGVuZAogCiAjIEluZGV4LCB0YWcsIGFuZCBwYXls
b2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CiAjIGNoYW5nZWQu
CiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCi0gICAg
YmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCi0gICAgam1wIC5kb25lCisgICAgYmlndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OworICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIGluZGV4LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNm
cltpbmRleDxhMD4uUGF5bG9hZDsKKyAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgZ290byAuZG9uZTsKIC5jb25zdGFudDoKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgcGF5bG9hZAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZl
Y3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbcGF5bG9hZF0sIHBheWxvYWQgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEy
PiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgICMg
VGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1
ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3
aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAz
LgotICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRw
IFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgbG9hZHAgVGFn
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+
W2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwog
LmRvbmU6CiBlbmQKIApAQCAtMjE1LDM1ICsyMjQsNDAgQEAgZW5kCiAKICMgSW5kZXggYW5kIHBh
eWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgog
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKLSAg
ICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNy
bzogbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgeworICAg
IGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5d
LlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9h
ZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOworICAgIGptcCAuZG9uZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0YWcKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3Rl
cnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0YWddLCB0YWcgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+
ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICAgIyBU
aGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVl
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAogICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdp
bGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMu
Ci0gICAgbHNoaWZ0aSAzLCBpbmRleAotICAgIGFkZHAgaW5kZXgsIHRhZwotICAgIGxvYWRwIFBh
eWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAotICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcK
KyAgICBsc2hpZnRpIDMsIGluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0ZUluZGV4PGEw
PiA9IGluZGV4PGEwPiA8PCAzOworICAgIGFkZHAgaW5kZXgsIHRhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4g
PSBjb25zdGFudDxhMT4uUGF5bG9hZDsKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5UYWc7CiAuZG9uZToKKyAgICAvLyB9
IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZy4KIGVuZAogCiBtYWNybyBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxv
YWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50Ci0gICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAv
LyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFn
Q2hlY2ssIHBheWxvYWQpIHsKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LCAuY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25z
dGFudDsKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hl
Y2soY2ZyW2luZGV4XS5UYWcpOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOworICAgIG1sYW1EbyAvLyBpZiAo
bWxhbVByaW50KSB7IHByaW50ZigiICAgICAgbWxhbSBBU00gbG9hZCB2YXIgfCBvYmogJXAgY2Zy
ICVwW2luZGV4ICVsZF1cbiIsIHIwLnUudnAsIGNhbGxGcmFtZSwgcjQudS5pKTsgbWxhbVByaW50
PSBmYWxzZTsgfQorICAgIGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBn
b3RvIC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
Ci0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxv
YWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIGNvZGVCbG9jazxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Bh
eWxvYWRdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2Fk
PiA9IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwog
ICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMg
YSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUg
PDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
KSA8PCAzLgotICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCi0gICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICB0YWdD
aGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVy
PHBheWxvYWQ+W2luZGV4XS5UYWcpOworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwg
aW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBwYXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2Fk
OwogLmRvbmU6CisgICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b20uCiBlbmQKIAogIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVu
dCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKQEAgLTI1MiwxMCArMjY2LDE0
IEBAIGVuZAogIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZv
bGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQogIyB0YWcuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgLy8g
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBw
YXlsb2FkLCBzbG93KSB7CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b20oCiAgICAgICAgIGluZGV4LAotICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1
YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKLSAgICAgICAgcGF5bG9hZCkKKyAgICAgICAg
bWFjcm8gKGFjdHVhbFRhZykKKyAgICAgICAgICAgIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRU
YWcsIHNsb3cgIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsK
KyAgICAgICAgZW5kLAorICAgICAgICBwYXlsb2FkKSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbSguLi4pOworICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkLgogZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQpAQCAtMjcxLDggKzI4OSwxMCBAQCBlbmQKIAog
bWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKICAgICBpZiBWQUxVRV9Q
Uk9GSUxFUgotICAgICAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRh
Z09mZnNldFtwcm9maWxlXQotICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjpt
X2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCisgICAgLy8gbWFjcm8gdmFsdWVQcm9m
aWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSBpLmUuIG9yYWNsZUNhY2hlSWQpIHsKKyAgICAgICAg
c3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0g
ICAgICAgICAgICAvLyAgIFZhbHVlUHJvZmlsZTo6YnVja2V0c1tvcmFjbGVDYWNoZUlkXS5UYWcg
PSB0YWc8YTA+OworICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tl
dHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdICAgIC8vICAgVmFsdWVQcm9maWxlOjpidWNrZXRz
W29yYWNsZUNhY2hlSWRdLlBheWxvYWQgPSBwYXlsb2FkPGExPjsKKyAgICAvLyB9IEVORCB2YWx1
ZVByb2ZpbGUuCiAgICAgZW5kCiBlbmQKIApAQCAtMjk5LDYzMiArMzE5LDk2NiBAQCBlbmQKIAog
IyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisvLyBm
dW5jdGlvbjogZm9yIGVhY2ggaWQgaW4gbG9jYWxzIHsgY2ZyW2lkXSA9IHVuZGVmaW5lZDsgfQor
Ly8KKy8vICAgSW5pdGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4gSWYgdGhl
IGNvZGUgYmxvY2sgcmVxdWlyZXMKKy8vICAgYW4gYWN0aXZhdGlvbiwgZW50ZXJfd2l0aF9hY3Rp
dmF0aW9uIGlzIHVzZWQgaW5zdGVhZC4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0
IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfZW50ZXI6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAgICAg
ICAgICAvLyB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNvZGVCbG9jawotICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5t
X251bVZhcnMKLSAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKLSAgICBtb3ZlIFVuZGVmaW5lZFRh
ZywgdDAKLSAgICBtb3ZlIDAsIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAg
ICAgICAgICAgIC8vIGNvZGVCbG9jazx0Mj4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRpIENv
ZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyBudW1WYXJzPHQyPiA9IGNvZGVCbG9j
azx0Mj4ubV9udW1WYXJzOworICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZSAgICAgICAgICAgICAg
ICAgICAvLyBpZiAobnVtVmFyczx0Mj4gPT0gMCkgZ290byAuZG9uZTsKKyAgICBtb3ZlIFVuZGVm
aW5lZFRhZywgdDAgICAgICAgICAgICAgICAgICAgLy8ganNVbmRlZmluZWQ8dDA+ID0gVW5kZWZp
bmVkVGFnOworICAgIG1vdmUgMCwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB6
ZXJvPHQxPiA9IDA7CiAub3BFbnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0MgotICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCi0gICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorICAgIHN1YmkgMSwgdDIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIG51bVZhcnM8dDI+LS07CisgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5U
YWcgPSBqc1VuZGVmaW5lZDx0MD47CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5QYXlsb2FkID0gemVybzx0MT47CisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcCAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQy
PiAhPSAwKSBnb3RvIC5sb29wOwogLm9wRW50ZXJEb25lOgotICAgIGRpc3BhdGNoKDEpCisgICAg
ZGlzcGF0Y2goMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FjdGl2YXRpb24gZHN0UmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IEFjdGl2YXRpb24oKSBpZiBub3QgYWxyZWFkeSBw
cmVzZW50OworLy8KKy8vICAgSWYgdGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxm
cmFtZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQg
d3JpdGVzIGl0IGJhY2sgdG8gZHN0LgorCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAg
ICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFjdGl2YXRpb25SZWc8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QWN0aXZhdGlvbkRvbmUgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVnPHQwPl0uVGFnICE9IEVtcHR5
VmFsdWVUYWcpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y3JlYXRlX2FjdGl2YXRpb24pICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9j
cmVhdGVfYWN0aXZhdGlvbjsKIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgotICAgIGRpc3BhdGNo
KDIpCisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNv
ZGU6IGluaXRfbGF6eV9yZWcgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0g
SlNWYWx1ZSgpOworLy8KKy8vICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8v
ICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJs
b2NrLgogCiBfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQotICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
ZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJ
ZF07CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0PHQwPl0uVGFnID0gRW1wdHlWYWx1ZVRhZzsK
KyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3Q8dDA+XS5QYXlsb2FkID0gMDsKKyAgICBkaXNwYXRj
aCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FyZ3Vt
ZW50cyBkc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBuZXcgQXJndW1lbnRz
KCkgaWYgbm90IGFscmVhZHkgcHJlc2VudDsKKy8vCisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVu
dHMnIG9iamVjdCBhbmQgcGxhY2VzIGl0IGluIGJvdGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNh
bGwgZnJhbWUgc2xvdCBhbmQgdGhlIGxvY2FsICdhcmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBp
ZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4KKwogX2xsaW50X29wX2NyZWF0
ZV9hcmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAot
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QXJndW1lbnRzRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9h
cmd1bWVudHMpCisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3Jl
YXRlQXJndW1lbnRzRG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XS5UYWcgIT0gRW1wdHlWYWx1ZVRh
ZykgZ290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9h
cmd1bWVudHM7CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAg
ZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG9wX2Ny
ZWF0ZV90aGlzIHRoaXNSZWdJZAorLy8gZnVuY3Rpb246IGNmclt0aGlzUmVnSWRdID0gbmV3IE9i
amVjdChjdXJyZW50IFByb3RvPyk7CisvLyBtbGFtIEZJWE1FOiBIb3cgZG9lcyB0aGUgY2FjaGVk
SW5oZXJpdG9yIGdldCBwb3B1bGF0ZWQ/CisvLyAgICAgICBDbGFzc2ljIHNwZWNpZmllcyBhIDJu
ZCBvcGVyYW5kIHByb3RvKHIpLCBidXQgb3VyIGRpc3BhdGNoIGJlbG93IGlnbm9yZXMgaXQuCisv
LworLy8gICBBbGxvY2F0ZSBhbiBvYmplY3QgYXMgJ3RoaXMnLCBmb3IgdXNlIGluIGNvbnN0cnVj
dGlvbi4KKy8vICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5u
aW5nIG9mIGEgY29kZSBibG9jay4KIAogX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVU
aGlzU2xvdworICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnIuQ2FsbGVlOworICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MiAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaW5oZXJpdG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOwor
ICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKGluaGVyaXRvciA9PSAwKSBnb3RvIC5zbG93OworICAgIC8v
IGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xv
YmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgaW5oZXJpdG9yPHQyPiwgdDAsIHQxLCB0
MywgLm9wQ3JlYXRlVGhpc1Nsb3cpOwogICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFs
T2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5m
bywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQotICAgIGxvYWRpIDRbUENdLCB0
MQotICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRp
IDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpc0lEPHQxPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnJbdGhpc0lEPHQxPl0uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
clt0aGlzSUQ8dDE+XS5QYXlsb2FkID0gdGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfdGhpczsKKyAgICBkaXNwYXRjaCgyKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogY29udmVydF90aGlzIHRoaXNSZWdJ
ZCBvcmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogY2ZyW3RoaXNSZWdJZF0gPSBDb252ZXJ0VG9U
aGlzKGNmclt0aGlzUmVnSWRdKTsKKy8vCisvLyAgIFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3Ro
aXMnIHJlZ2lzdGVyLCBjb252ZXJ0cyBpdCB0byBhCisvLyAgIHZhbHVlIHRoYXQgaXMgc3VpdGFi
bGUgZm9yIHVzZSBhcyB0aGUgJ3RoaXMnIHZhbHVlLCBhbmQKKy8vICAgc3RvcmVzIGl0IGluIHRo
ZSAndGhpcycgcmVnaXN0ZXIuIFRoaXMgb3Bjb2RlIGlzIGVtaXR0ZWQKKy8vICAgdG8gYXZvaWQg
ZG9pbmcgdGhlIGNvbnZlcnNpb24gaW4gdGhlIGNhbGxlciB1bm5lY2Vzc2FyaWx5LgorLy8KKy8v
ICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg
Y29kZQorLy8gICBibG9jay4KKwogX2xsaW50X29wX2NvbnZlcnRfdGhpczoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAg
dmFsdWVQcm9maWxlKENlbGxUYWcsIHQwLCB0MSkKLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRp
IDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpc0lEPHQwPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgICAgICAg
ICAvLyBpZiAoY2ZyW3RoaXNJRDx0MD5dLlRhZyAhPSBDZWxsVGFnKSBnb3RvIC5zbG93OworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnJbdGhpc0lEPHQwPl0uUGF5bG9hZDsKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MD4gPSB0aGlzPHQwPi5zdHJ1Y3R1cmU7CisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBl
LCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgLy8gaWYgKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlw
ZSA8IE9iamVjdFR5cGUpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJZDx0
MT4gPSBvcGVyYW5kc1tvcmFjbGVDYWNoZUlkXTsKKyAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywg
dDAsIHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlUHJv
ZmlsZShDZWxsVGFnLCBzdHJ1Y3R1cmU8dDA+LCBvcmFjbGVJZDx0MT4pOworICAgIGRpc3BhdGNo
KDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BDb252ZXJ0VGhpc1Nsb3c6Ci0gICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKQotICAgIGRpc3BhdGNoKDMp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jb252ZXJ0X3RoaXM7CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5ld19vYmpl
Y3QgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IE9iamVjdCgpOwor
Ly8KKy8vICAgQ29uc3RydWN0cyBhIG5ldyBlbXB0eSBPYmplY3QgaW5zdGFuY2UgdXNpbmcgdGhl
IG9yaWdpbmFsCisvLyAgIGNvbnN0cnVjdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lz
dGVyIGRzdC4KKwogX2xsaW50X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0
U3RydWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOwor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MCAgICAgICAgICAgICAg
ICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAg
IGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEgICAg
Ly8gZW1wdHlTdHJ1Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5lbXB0eU9iamVjdFN0cnVj
dHVyZTsKKyAgICAvLyBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIGVtcHR5U3RydWN0
dXJlPHQxPiwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdyk7CiAgICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0Zp
bmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKLSAg
ICBsb2FkaSA0W1BDXSwgdDEKLSAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0
Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgIC8vIGNmcltk
c3RJZDx0MT5dLlRhZyA9IENlbGxUYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0g
YWxsb2NhdGVkT2JqZWN0PHQwPjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmV3
T2JqZWN0U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0
KQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3
X29iamVjdCkgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXdfb2JqZWN0OworICAg
IGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBtb3YgZHN0UmVnSWQgc3Jj
UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY1JlZ0lkXTsKKy8vCisv
LyAgIENvcGllcyByZWdpc3RlciBzcmMgdG8gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfbW92
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0
W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFu
ZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAg
Ly8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHZhbHVlPHQyLCB0Mz4pOwor
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQwPl0uVGFnID0gc3JjVGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0
MD5dLlBheWxvYWQgPSBzcmNQYXlsb2FkPHQzPjsKKyAgICAjIG1sYW1EbyAvLyBpZiAobWxhbV9Q
UklOVEYpIHByaW50ZigiICAgbWxhbSBvcF9tb3YgfCBwYXlsb2FkPHQzPiA9ICVsZFxuIiwgcjQu
dS5pKTsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogbm90IGRz
dFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3JjcmVn
SWRdOworLy8KKy8vICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0ZXIgc3JjIChjb252
ZXJ0ZWQgdG8KKy8vICAgYm9vbGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIg
ZHN0LgogCiBfbGxpbnRfb3Bfbm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4
W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQwLCB0MiwgdDMpCi0gICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKLSAgICB4
b3JpIDEsIHQzCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxv
YWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAg
ICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MD4gPT4g
dGFnPHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RT
bG93ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gIT0gQm9vbGVhblRhZykg
Z290byAuc2xvdzsKKyAgICB4b3JpIDEsIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDM+ID0gIXBheWxvYWQ8dDM+OworICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Zy
W2RzdHhzSWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9h
ZCA9IHBheWxvYWQ8dDM+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BOb3RTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkKLSAgICBkaXNwYXRjaCgz
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2FsbCBzbG93X3BhdGhfbm90OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CiAKKy8vIGJ5dGVjb2RlOiBlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5j
dGlvbjogY2ZyW2RzdHJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSA9PSBjZnJbc3JjMlJlZ0lkXSk7
CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMy
IGFyZSBlcXVhbCwKKy8vICAgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPT0nIG9wZXJhdG9yLCBh
bmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAK
IF9sbGludF9vcF9lcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgMTJbUENdLCB0
MgotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQz
LCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQotICAgIGJp
bmVxIHQyLCB0MywgLm9wRXFTbG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93Ci0g
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MgotICAg
IGNpZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNw
YXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9h
ZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
cmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc3JjMklkPHQyPiA9PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQw
Pik7CisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4pIGdvdG8gLnNsb3c7CisgICAgYmll
cSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAodGFnMTx0Mj4gPT0gQ2VsbFRhZykgZ290byAuc2xvdzsKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQp
dGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgNFtQQ10sIHQyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVy
YW5kc1tkc3RSZWdJZF07CisgICAgY2llcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDA+ID0gKHBheWxvYWQyPHQxPiA9PSBwYXls
b2FkMTx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0g
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgIC8v
IGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBwYXlsb2FkMTx0MD47CisgICAgZGlzcGF0Y2goNCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAKIC5vcEVxU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9lcSkKLSAgICBkaXNwYXRjaCg0KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2VxKSAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfZXE7CisgICAgZGlz
cGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGVxX251bGwgZHN0UmVnSWQgc3Jj
UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0cmVnSWRdID0gKGNmcltzcmNSZWdJZF0gPT0gbnVs
bCk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMgaXMgbnVsbCwgYXMgd2l0
aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0
IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9lcV9udWxsOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwg
dDMKLSAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxCi0gICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCi0gICAgam1wIC5v
cEVxTnVsbE5vdEltbWVkaWF0ZQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRd
OworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0Tm90
Q29uc3RhbnQoc3JjSWQ8dDA+KTsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MT4gPSBjZnJbc3JjSWQ8dDA+XS5UYWc7
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYXlsb2FkPHQwPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgICAvLyBpZiAo
dGFnPHQxPiAhPSBDZWxsVGFnKSBnb3RvIC5pbW1lZGlhdGU7CisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+
ID0gcGF5bG9hZDx0MD4uc3RydWN0dXJlOworICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MSAvLyBy
ZXN1bHQ8dDE+ID0gKChzdHJ1Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWcgJiBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSAhPSAwKTsKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gLm5vdEltbWVkaWF0ZTsKIC5vcEVxTnVsbElt
bWVkaWF0ZToKLSAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgotICAgIGNpZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEKLSAgICBvcmkgdDIsIHQxCisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc051bGw8dDI+ID0gKHRhZzx0MT4gPT0g
TnVsbHRhZyk7CisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiA9PSBVbmRlZmluZWRU
YWcpOworICAgIG9yaSB0MiwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IGlzTnVsbDx0Mj4gfCBpc1VuZGVmaW5lZDx0MT47CiAu
b3BFcU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAg
IGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5lcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJl
Z0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPSBjZnJb
c3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCBy
ZWdpc3RlciBzcmMyIGFyZSBub3QKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQg
JyE9JyBvcGVyYXRvciwgYW5kIHB1dHMgdGhlCisvLyAgIHJlc3VsdCBhcyBhIGJvb2xlYW4gaW4g
cmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbmVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCi0gICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93Ci0gICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wTmVxU2xvdwotICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93Ci0gICAg
bG9hZGkgNFtQQ10sIHQyCi0gICAgY2luZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFu
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRz
W3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAg
IC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxv
YWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAg
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09
PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSB0YWcyPHQz
PikgZ290byAuc2xvdzsKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiA9PSBDZWxsdGFnKSBnb3RvIC5zbG93
OworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA8IExvd2VzdFRhZykgZ290byAuc2xvdzsK
KyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBjaW5lcSB0MCwgdDEs
IHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MD4g
PSAocGF5bG9hZDE8dDA+ICE9IHBheWxvYWQyPHQxPik7CisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5U
YWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHJlc3VsdDx0
MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcE5lcVNsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
IHNsb3dfcGF0aF9uZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICAgCiAKKy8vIGJ5
dGVjb2RlOiBuZXFfbnVsbCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RS
ZWdJZF0gPSAoY2ZyW3NyY1JlZ0lkXSAhPSBudWxsKTsKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVy
IHJlZ2lzdGVyIHNyYyBpcyBub3QgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisv
LyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3Rl
ciBkc3QuCisKIF9sbGludF9vcF9uZXFfbnVsbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCi0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5l
cU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKLSAg
ICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0MQotICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisg
ICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mz4gPSBv
cGVyYW5kc1tkc3RSZWdJZF07CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnROb3RDb25zdGFudChzcmNJZDx0MD4pOwor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdGFnPHQxPiA9IGNmcltzcmNJZDx0MD5dLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MCAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDA+ID0g
Y2ZyW3NyY0lkPHQwPl0uUGF5bG9hZDsKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVs
bEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IENlbGxUYWcpIGdv
dG8gLmltbWVkaWF0ZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQwPi5zdHJ1Y3R1
cmU7CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEgLy8gcmVzdWx0PHQxPiA9ICgoc3RydWN0dXJl
PHQxPi50eXBlSW5mby5mbGFncyAmIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpID09IDApOworICAg
IGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byAubm90SW1tZWRpYXRlOwogLm9wTmVxTnVsbEltbWVkaWF0ZToKLSAgICBjaW5lcSB0
MSwgTnVsbFRhZywgdDIKLSAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQotICAgIGFuZGkg
dDIsIHQxCisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpc05vdE51bGw8dDI+ID0gKHRhZzx0MT4gIT0gTnVsbFRhZyk7CisgICAg
Y2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpc05vdFVuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiAhPSBVbmRlZmluZWRUYWcpOworICAgIGFu
ZGkgdDIsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cmVzdWx0PHQxPiA9IChpc05vdE51bGw8dDI+ICYgaXNOb3RVbmRlZmluZWQ8dDE+KTsKIC5vcE5l
cU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRp
c3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiAKIAogbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYXRoKQot
ICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0MiwgdDMsIC5zbG93Ci0gICAgYmliIHQyLCBMb3dlc3RU
YWcsIC5zbG93Ci0gICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDMKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwotICAgIGJiZXEgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93CisgICAgbG9h
ZGkgMTJbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
cmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVy
YW5kc1tzcmMxUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkg
ICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+
ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIGJpbmVx
IHQyLCB0MywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KHRhZzE8dDI+ICE9IHRhZzI8dDM+KSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+IDwg
TG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IENlbGxUYWcpIGdv
dG8gLm5vdFN0cmluZzsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTE8dDI+ID0gcGF5bG9hZDE8dDA+LnN0cnVj
dHVyZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0cnVjdHVyZTI8dDM+ID0gcGF5bG9hZDI8dDE+LnN0cnVjdHVyZTsKKyAg
ICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3Ry
aW5nVHlwZSwgLm5vdFN0cmluZyAgLy8gaWYgKHN0cnVjdHVyZTE8dDI+LnR5cGVJbmZvLnR5cGUg
IT0gU3RyaW5nVHlwZSkgZ290byAubm90U3RyaW5nOworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93ICAgICAgICAv
LyBpZiAoc3RydWN0dXJlMjx0Mz4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKSBnb3RvIC5z
bG93OwogLm5vdFN0cmluZzoKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBlcXVhbGl0eU9wZXJh
dGlvbih0MCwgdDEsIHQwKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNw
YXRjaCg0KQorICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGVxdWFs
aXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVz
dWx0PHQwPiA9IHBheWxvYWQxPHQwPiBDT01QQVJBVE9SIHBheWxvYWQyPHQxPjsKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXls
b2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNsb3dQ
YXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNs
b3dQYXRoPGExPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIGVuZAogCisvLyBieXRlY29k
ZTogc3RyaWN0ZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltkc3RSZWdJZF0gPSAoY2ZyW3NyYzFSZWdkXSA9PT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8v
ICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgc3Ry
aWN0bHkKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz09PScgb3BlcmF0b3Is
IGFuZCBwdXRzIHRoZQorLy8gICByZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lzdGVyIGRzdC4K
KwogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAvLyBzdHJp
Y3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcT4pOworICAgIC8vIENPTVBB
UkFUT1IgPSAiPT0iCiAgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNp
ZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXEpCiAK
IAorLy8gYnl0ZWNvZGU6IG5zdHJpY3RlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisv
LyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPT0gY2ZyW3NyYzJS
ZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0
ZXIgc3JjMiBhcmUgbm90CisvLyAgIHN0cmljdGx5IGVxdWFsLCBhcyB3aXRoIHRoZSBFQ01BU2Ny
aXB0ICchPT0nIG9wZXJhdG9yLCBhbmQKKy8vICAgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVh
biBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uc3RyaWN0ZXE6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIC8vIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5l
cSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9uc3Ry
aWN0ZXE+KTsKKyAgICAvLyBDT01QQVJBVE9SID0gIiE9IgogICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50
X3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IHByZV9pbmMgc3JjRHN0UmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbc3JjRHN0cmVnSWRdID0gKytjZnJbc3JjRHN0cmVnSWRdOwor
Ly8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlciwgYWRkcyBvbmUsIGFu
ZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgYmFjayBpbiByZWdpc3RlciBzcmNEc3QuCisKIF9sbGlu
dF9vcF9wcmVfaW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAK
LSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93
Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAgICBiYWRkaW8gMSwg
dDEsIC5vcFByZUluY1Nsb3cKLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ0lkPHQwPiA9IG9wZXJhbmRzW3NyY0Rz
dFJlZ0lkXTsKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
cmVJbmNTbG93ICAgICAgICAvLyBpZiAoY2ZyW3JlZ0lkPHQwPl0uVGFnICE9IEludDMyVGFnKSBn
b3RvIC5zbG93OworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MT4gPSBjZnJbcmVnSWQ8dDA+XS5QYXlsb2Fk
OworICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmICgrK3Jlc3VsdDx0MT4gb3Zlcmxvd3MpIGdvdG8gLnNsb3c7CisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2go
MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQcmVJbmNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3ByZV9pbmMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNs
b3dfcGF0aF9wcmVfaW5jOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBi
eXRlY29kZTogcHJlX2RlYyBzcmNEc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltzcmNEc3RSZWdJ
ZF0gPSAtLWNmcltzcmNEc3RSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmNE
c3QgdG8gbnVtYmVyLCBzdWJ0cmFjdHMgb25lLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGJh
Y2sgaW4gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcHJlX2RlYzoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCi0gICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93Ci0gICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZWdJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdyAgICAgICAgLy8gaWYgKGNm
cltyZWdJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1
bHQ8dDE+ID0gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZDsKKyAgICBic3ViaW8gMSwgdDEsIC5vcFBy
ZURlY1Nsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1yZXN1bHQ8
dDE+IG92ZXJsb3dzKSBnb3RvIC5zbG93OworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltyZWdJZDx0MD5dLlBheWxv
YWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUHJl
RGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQotICAg
IGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfcHJlX2RlYzsKKyAgICBkaXNw
YXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IHBvc3RfaW5jIGRzdFJlZ0lk
IHNyY0RzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmNEc3RSZWdJ
ZF0rKzsKKy8vCisvLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBu
dW1iZXIgaXRzZWxmIGlzCisvLyAgIHdyaXR0ZW4gdG8gcmVnaXN0ZXIgZHN0LCBhbmQgdGhlIG51
bWJlciBwbHVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0Lgor
CiBfbGxpbnRfb3BfcG9zdF9pbmM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhb
UENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJ
bmNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBtb3Zl
IHQyLCB0MwotICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKLSAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0
W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
c3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJZDx0
MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9z
dEluY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+
ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNm
cltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXls
b2FkPHQyPjsKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpZiAoKytuZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8g
LnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3RJbmNEb25lOgot
ICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0
SW5jU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2luYykKLSAg
ICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfaW5j
KSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfaW5jOworICAgIGRp
c3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogcG9zdF9kZWMgZHN0UmVn
SWQgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY0RzdFJl
Z0lkXS0tOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlci4gVGhl
IG51bWJlciBpdHNlbGYgaXMKKy8vICAgd3JpdHRlbiB0byByZWdpc3RlciBkc3QsIGFuZCB0aGUg
bnVtYmVyIG1pbnVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0
LgogCiBfbGxpbnRfb3BfcG9zdF9kZWM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRp
IDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBv
c3REZWNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBt
b3ZlIHQyLCB0MwotICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKLSAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2Fk
aSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJ
ZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9w
UG9zdERlY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8
dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9
IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQ
YXlsb2FkPHQyPjsKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1uZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdv
dG8gLnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3REZWNEb25l
OgotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQ
b3N0RGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2RlYykK
LSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3Rf
ZGVjKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfZGVjOworICAg
IGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogdG9fanNudW1iZXIg
ZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gTnVtYmVyKGNm
cltkc3RSZWdJZF0pOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjIHRvIG51bWJlciwg
YW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF90
b19qc251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0g
ICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQz
KQotICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKLSAgICBiaWFlcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4g
PSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0
UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+ID09PiB0
YWc8dDI+LCBwYXlsb2FkPHQzPik7CisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1i
ZXJJc0ludCAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gPT0gSW50MzJUYWcp
IGdvdG8gLmlzSW50OworICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVy
U2xvdyAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQyPiA+PSBFbXB0eVZh
bHVlVGFnKSBnb3RvIC5zbG93OwogLm9wVG9Kc251bWJlcklzSW50OgotICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5UYWcgPSB0
YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBwYXlsb2FkPHQzPjsK
KyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFRvSnNudW1iZXJTbG93OgotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX2pzbnVtYmVyKQotICAgIGRpc3BhdGNo
KDMpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIpICAgICAg
ICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfdG9fanNudW1iZXI7CisgICAgZGlzcGF0Y2go
MykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBuZWdhdGUgZHN0UmVnSWQgc3JjUmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gLWNmcltzcmNSZWdJZF07CisvLworLy8g
ICBDb252ZXJ0cyByZWdpc3RlciBzcmMgdG8gbnVtYmVyLCBuZWdhdGVzIGl0LCBhbmQgcHV0cyB0
aGUKKy8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX25lZ2F0ZToKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10s
IHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50Ci0gICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwotICAgIG5lZ2kgdDIKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQot
ICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRd
OworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRzdElkPHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQwPiA9PT4gdGFnPHQxPiwgcGF5bG9hZDx0Mj4p
OworICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50ICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IEludDMyVGFnKSBnb3RvIC5zcmNOb3RJbnQ7Cisg
ICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdyAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKChwYXlsb2FkPHQyPiAmIDB4N2ZmZmZmZmYpID09IDApIGdvdG8gLnNsb3c7
IC8vIGlmIChpcyAwIG9yIElOVF9NSU4pIC4uLgorICAgIG5lZ2kgdDIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDI+ID0gLXBh
eWxvYWQ8dDI+OworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEludDMyVGFnOworICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwYXlsb2FkPHQyPjsKKyAgICBkaXNwYXRj
aCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAub3BOZWdhdGVTcmNOb3RJbnQ6Ci0gICAgYmlhIHQxLCBMb3dl
c3RUYWcsIC5vcE5lZ2F0ZVNsb3cKLSAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BO
ZWdhdGVTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFn
PHQxPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBXZSBoYXZlIGFuIHVuYm94ZWQg
ZG91YmxlLCBqdXN0IGludmVydCBpdHMgc2lnbiBiaXQ6CisgICAgeG9yaSAweDgwMDAwMDAwLCB0
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGlnaFdvcmQ8dGFn
PHQxPj4uc2lnbkJpdCA9ICFoaWdoV29yZDx0YWc8dDE+Pi5zaWduQml0OworICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mz5dLlRhZyA9IHRhZzx0MT47CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5
bG9hZCA9IHBheWxvYWQ8dDI+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9w
TmVnYXRlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCi0g
ICAgZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUp
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZWdhdGU7CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50
ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxv
YWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQy
LCB0MCkKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKLSAgICBiaW5lcSB0Mywg
SW50MzJUYWcsIC5vcDJOb3RJbnQKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBpbnRlZ2VyT3Bl
cmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQotICAgIGRpc3BhdGNoKDUpCisg
ICAgLy8gbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUs
IGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3Bl
cmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJl
Z0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0Mj4gPT0+IHRh
ZzI8dDM+LCBwYXlsb2FkMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIG1sYW1EbyAv
LyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDFcbiIpOworICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLm9wMU5vdEludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQy
PiAhPSBJbnQzMlRhZykgZ290byAub3AxTm90SW50OworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
Lm9wMk5vdEludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAh
PSBJbnQzMlRhZykgZ290byAub3AyTm90SW50OworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFt
IEJJTiBPUCBzdGVwIDIgfCB0MSAlbGQsIHQwICVsZFxuIiwgcjEudS5pLCByMC51LmkpOworICAg
IC8vIG9wMSBhbmQgb3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBl
bmQuCisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpICAgICAgICAgICAgIC8v
IGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBwYXlsb2Fk
MTx0MD4sIC5zbG93LCB0Mik7CisgICAgIyBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmlu
dGYoIiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4iLCByMC51LmkpOworICAg
IG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4i
LCByMC51LmkpOworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wMU5vdEludDoK
LSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25k
IG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCi0gICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93
Ci0gICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKLSAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5zbG93Ci0gICAgY2kyZCB0MSwgZnQxCi0gICAgam1wIC5vcDFOb3RJbnRS
ZWFkeQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDNcbiIpOworICAg
IC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9w
ZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQy
PiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91
YmxlLCBvcDIgaXMgPz8/OiBjaGVjayBvcDIuCisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFO
b3RJbnRPcDJEb3VibGUgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcy
PHQzPiA8IExvd2VzdFRhZykgZ290byAub3AxTm90SW50T3AyRG91YmxlOworICAgIGJpbmVxIHQz
LCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
ICghdGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gb3AxIGlzIGludC1l
bmNvZGVkLWRvdWJsZSwgb3AyIGlzIGludDMyOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAg
Y2kyZCB0MSwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+KTsKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IC5vcDFOb3RJbnRSZWFkeTsKIC5vcDFOb3RJbnRPcDJEb3VibGU6Ci0gICAgZmlpMmQgdDEsIHQz
LCBmdDEKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA0XG4iKTsKKyAg
ICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50LWVuY29kZWQtZG91Ymxl
OiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAgZmlpMmQgdDEsIHQzLCBmdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUo
cGF5bG9hZDI8dDE+LCB0YWcyPHQzPik7CiAub3AxTm90SW50UmVhZHk6Ci0gICAgbG9hZGkgNFtQ
Q10sIHQxCi0gICAgZmlpMmQgdDAsIHQyLCBmdDAKLSAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBm
dDApCi0gICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goNSkKKyAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA1XG4iKTsKKyAgICAvLyBvcDEgaXMg
aW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgZG91YmxlOgorICAgIGxvYWRpIDRbUENdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERvdWJsZShwYXls
b2FkMTx0MD4sIHRhZzE8dDI+KTsKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9w
ZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOworICAgICMgbWxhbSBtbGFtRG8gLy8g
aWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiBtbGFtIEJJTiBPUCBkb3VibGUgfCByZXN1bHQ8ZnQw
PiA9ICVlXG4iLCBkMC51LmQpOworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBk
b3VibGUgfCByZXN1bHQ8ZnQwPiA9ICVlXG4iLCBkMC51LmQpOworICAgIHN0b3JlZCBmdDAsIFtj
ZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OworICAgIGRpc3BhdGNoKDUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogLm9wMk5vdEludDoKLSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBh
biBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KLSAgICBsb2FkaSA0
W1BDXSwgdDIKLSAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKLSAgICBjaTJkIHQwLCBmdDAK
LSAgICBmaWkyZCB0MSwgdDMsIGZ0MQotICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAg
ICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAv
LyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDZcbiIpOworICAgIC8vIEZpcnN0IG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dC4KKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmlhIHQz
LCBMb3dlc3RUYWcsIC5zbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBv
cDEgaXMgaW50MzIsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6CisgICAgY2kyZCB0MCwgZnQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJs
PGZ0MD4gPSBEb3VibGUocGF5bG9hZDE8dDA+KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICBmaWkyZCB0MSwgdDMsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKKyAg
ICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3Ax
RGJsPGZ0MD4pOworICAgICMgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgbWxh
bSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAudS5kKTsKKyAgICBtbGFt
RG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwg
ZDAudS5kKTsKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5Eb3VibGUgPSByZXN1bHREYmw8ZnQw
PjsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNhbGxTbG93
UGF0aChzbG93UGF0aCkKLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBt
bGFtIEJJTiBPUCBzdGVwIDdcbiIpOworICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvdyBwYXRoOworICAgIGRp
c3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKyAgICAvLyB9IEVORCBtYWNybyBiaW5hcnlPcEN1c3Rv
bVN0b3JlLiAKIGVuZAogCiBtYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVP
cGVyYXRpb24sIHNsb3dQYXRoKQorICAgIC8vIG1hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRp
b24sIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKICAgICBiaW5hcnlPcEN1c3RvbVN0b3Jl
KAogICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKLSAg
ICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCi0gICAgICAgICAg
ICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAg
c3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICAv
LyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAg
ICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykgICAgICAgICAgICAgICAgIC8v
ICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdyk7CisgICAgICAgICAgICBzdG9y
ZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAgICAgLy8gICBjZnJb
aW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgICAgIC8vICAgY2ZyW2luZGV4XS5QYXlsb2FkID0g
cmlnaHQ7CisgICAgICAgICAgICAjIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHByaW50Zigi
ICAgICAgICBtbGFtIEFTTSBBREQgfCBjZnIgJXBbaW5kZXggJWxkXSA9IHJlc3VsdCAlbGQgfCBj
ZnJbMV08JXA+ID0gJXBcbiIsIGNhbGxGcmFtZSwgcjIudS5pLCByMC51LmksIENBU1Q8dm9pZCAq
PihmcC51Lmk4cCArICgxIDw8IDMpICsgMCksICpDQVNUPHZvaWQgKio+KGZwLnUuaThwICsgKDEg
PDwgMykgKyAwKSk7IG1sYW1QcmludCA9IGZhbHNlOyB9CisgICAgICAgICAgICBtbGFtRG8gLy8g
eyBwcmludGYoIiAgICAgICAgbWxhbSBBU00gQUREIHwgY2ZyICVwW2luZGV4ICVsZF0gPSByZXN1
bHQgJWxkIHwgY2ZyWzFdPCVwPiA9ICVwXG4iLCBjYWxsRnJhbWUsIHIyLnUuaSwgcjAudS5pLCBD
QVNUPHZvaWQgKj4oZnAudS5pOHAgKyAoMSA8PCAzKSArIDApLCAqQ0FTVDx2b2lkICoqPihmcC51
Lmk4cCArICgxIDw8IDMpICsgMCkpOyBtbGFtUHJpbnQgPSBmYWxzZTsgfQorICAgICAgICAgICAg
Ly8gfSBFTkQgbWFjcm8uCiAgICAgICAgIGVuZCwKLSAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBz
bG93UGF0aCkKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkgLy8gICBiaW5hcnlP
cEN1c3RvbVN0b3JlKCk7CisgICAgLy8gfSBFTkQgbWFjcm8gYmluYXJ5T3AuCiBlbmQKIAorLy8g
Ynl0ZWNvZGU6IGFkZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjog
Y2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMyUmVnSWRdICsgY2ZyW3NyYzFSZWdJZF07CisvLworLy8g
ICBBZGRzIHJlZ2lzdGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNyYzIsIGFuZCBwdXRzIHRoZSByZXN1
bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LiAoSlMgYWRkIG1heSBiZSBzdHJpbmcgY29uY2F0ZW5h
dGlvbiBvcgorLy8gICBudW1lcmljIGFkZCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlcyBvZiB0aGUg
b3BlcmFuZHMuKQorCiBfbGxpbnRfb3BfYWRkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBt
bGFtRG8gLy8gbWxhbVByaW50ID0gdHJ1ZTsKICAgICBiaW5hcnlPcCgKLSAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxp
bnRfc2xvd19wYXRoX2FkZCkKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICAgKioqIG1sYW0gQEBAIGJhZGRpbyBsZWZ0LCBy
aWdodCwgc2xvdyBAICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAg
ICAgIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGlmICgocmlnaHQgKz0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgIGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgbWxhbURvIC8vIHBy
aW50ZigiICAgKioqIG1sYW0gQEBAIGFkZGQgbGVmdCwgcmlnaHQgQCAlczolZFxuIiwgX19GVU5D
VElPTl9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICBhZGRkIGxlZnQsIHJpZ2h0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByaWdodCA9IGxlZnQgKyByaWdodDsKKyAg
ICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2FkZCkgLy8gYmluYXJ5T3AoImJh
ZGRpbyBsZWZ0LCByaWdodCwgc2xvdyIsICJhZGRkIGxlZnQsIHJpZ2h0IiwgX2xsaW50X3Nsb3df
cGF0aF9hZGQpIHsKKyAgICAvLyB9IC8vIEVORCBiaW5hcnlPcCgpCisKIAorLy8gYnl0ZWNvZGU6
IG11bCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJl
Z0lkXSA9IGNmcltzcmMxUmVnSWRdICogY2ZyW3NyYzJSZWdJZF0KKy8vCisvLyAgIE11bHRpcGxp
ZXMgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvCisvLyAgIG51
bWJlcnMpLCBhbmQgcHV0cyB0aGUgcHJvZHVjdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9v
cF9tdWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAg
ICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAg
ICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJl
dXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KLSAgICAg
ICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3Jh
dGNoLCBzbG93Ci0gICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQotICAgICAgICAgICAg
YmlsdCBsZWZ0LCAwLCBzbG93Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAg
ICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgewor
ICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2lu
Y2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY3JhdGNoID0gcmlnaHQ7CisgICAgICAgICAg
ICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
KHNjcmF0Y2ggKj0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgICAgICBidGlu
eiBzY3JhdGNoLCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc2NyYXRj
aCAhPSAwKSBnb3RvIC5kb25lOworICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGxlZnQgPCAwKSBnb3RvIC5zbG93OworICAg
ICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWYgKHJpZ2h0IDwgMCkgZ290byAuc2xvdzsKICAgICAgICAgLmRvbmU6Ci0gICAgICAgICAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAg
c3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgIC8vIGNmcltp
bmRleF0uVGFnID0gSW50MzJUYWc7CisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XSAgICAvLyBjZnJbaW5kZXhdLlBheWxvYWQgPSBzY3JhdGNo
OworICAgICAgICAgICAgLy8gfSBFTkQgbWFjcm8uCiAgICAgICAgIGVuZCwKLSAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9tdWwpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkKKyAgICAgICAgICAgIG11
bGQgbGVmdCwgcmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0ID0g
bGVmdCAqIHJpZ2h0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfbXVs
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW5hcnlPcEN1c3RvbVN0b3JlKC4u
LiwgX2xsaW50X3Nsb3dfcGF0aF9tdWwpOworCiAKKy8vIGJ5dGVjb2RlOiBzdWIgZHN0UmVnSWQg
c3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3Jj
MVJlZ0lkXSAtIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgU3VidHJhY3RzIHJlZ2lzdGVyIHNy
YzIgKGNvbnZlcnRlZCB0byBudW1iZXIpIGZyb20gcmVnaXN0ZXIKKy8vICAgc3JjMSAoY29udmVy
dGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZSBkaWZmZXJlbmNlIGluCisvLyAgIHJlZ2lzdGVy
IGRzdC4KIAogX2xsaW50X29wX3N1YjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYmluYXJ5
T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0
LCBzbG93IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0
IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKChyaWdodCAtPSBsZWZ0KSBvdmVyZmxvd3MpIGdv
dG8gc2xvdzsKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAg
ICAgICAgICBzdWJkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIHJpZ2h0ID0gcmlnaHQgLSBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9z
bG93X3BhdGhfc3ViKSAvLyBiaW5hcnlPcCguLi4sIF9sbGludF9zbG93X3BhdGhfc3ViKSB7Cisg
ICAgLy8gfSAvLyBFTkQgYmluYXJ5T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBkaXYgZHN0UmVnSWQg
ZGl2aWRlbmRSZWdJZCBkaXZpc29yUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0g
Y2ZyW2RpdmlkZW5kUmVnSWRdIC8gY2ZyW2Rpdmlzb3JSZWdJZF07CisvLworLy8gICBEaXZpZGVz
IHJlZ2lzdGVyIGRpdmlkZW5kIChjb252ZXJ0ZWQgdG8gbnVtYmVyKSBieSB0aGUKKy8vICAgcmVn
aXN0ZXIgZGl2aXNvciAoY29udmVydGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZQorLy8gICBx
dW90aWVudCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9kaXY6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAK
LSAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQotICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQot
ICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAotICAgICAgICAgICAgc3RvcmVp
IGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0b3JlaSBy
aWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgam1wIC5kb25l
CisgICAgICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkgeworICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbGVmdERibDxmdDA+ID0gRG91YmxlKGxlZnQpOworICAgICAgICAgICAgY2ky
ZCByaWdodCwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHREYmw8
ZnQxPiA9IERvdWJsZShyaWdodCk7CisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQxPiA9IHJpZ2h0RGJsPGZ0
MD4gLyBsZWZ0RGJsPGZ0MT47CisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50
ICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8cmlnaHQ+ID0gSW50KHJlc3VsdERibDxm
dDE+KSBpZiAoKGRvdWJsZSkoaW50KXJlc3VsdERibCA9IHJlc3VsdERibCkgZWxzZSBnb3RvIC5u
b3RJbnQ7CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4
LCA4XSAgICAgICAvLyBjZnJbaW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAgICAgc3Rv
cmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgLy8gY2ZyW2luZGV4
XS5QYXlsb2FkID0gcmlnaHQ7CisgICAgICAgICAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIC5kb25lOwogICAgICAgICAubm90SW50Ogot
ICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9y
ZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0gICAgICAgICAgICAgICAgICAgICAvLyBjZnJbaW5kZXhd
LkRvdWJsZSA9IHJlc3VsdERibDxmdDE+OwogICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIC8v
IEVORCBtYWNyby4KICAgICAgICAgZW5kLAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRp
dmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgZGl2ZCBsZWZ0LCByaWdodCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgPSByaWdodCAvIGxlZnQ7CisgICAg
ICAgIGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9kaXYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGJpbmFyeU9wQ3VzdG9tU3RvcmUoLi4uLCBfbGxpbnRfc2xvd19wYXRo
X2Rpdik7CiAKIAogbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKLSAg
ICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCi0gICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwotICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLnNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBvcGVyYXRpb24odDEsIHQw
LCAuc2xvdykKLSAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisg
ICAgLy8gbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkgeworICAgIGxv
YWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9
IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgIC8vIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAvLyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQor
ICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRh
ZzI8dDM+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
LnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFnKSBnb3Rv
IC5zbG93OworICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIG9wZXJhdGlvbih0MSwgdDAs
IC5zbG93KSAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlvbihwYXls
b2FkMjx0MT4sIHBheWxvYWQxPHQwPiwgLnNsb3cpOworICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gdGFnMjx0Mz47
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaChhZHZhbmNlKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisgICAg
Y2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQ
YXRoOworICAgIGRpc3BhdGNoKGFkdmFuY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOworICAgIC8vIEVORCBtYWNybyBtYWNybyBiaXRPcC4KIGVuZAog
CisKKy8vIGJ5dGVjb2RlOiBsc2hpZnQgZHN0UmVnSWQgdmFsUmVnSWQgc2hpZnRSZWdJZAorLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBJbnQzMihjZnJbdmFsUmVnSWRdKSA8PCBjZnJbc2hp
ZnRSZWdJZF0pOworLy8KKy8vICAgUGVyZm9ybXMgbGVmdCBzaGlmdCBvZiByZWdpc3RlciB2YWwg
KGNvbnZlcnRlZCB0byBpbnQzMikgYnkKKy8vICAgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0
byB1aW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KKwog
X2xsaW50X29wX2xzaGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGxzaGlmdGkgbGVm
dCwgcmlnaHQgICAgICAgICAvLyByaWdodCA9IChyaWdodCA8PCBsZWZ0KTsKKyAgICAgICAgZW5k
LAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAg
NCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwgNCkgeworICAgIC8vIH0g
Ly8gRU5EIGJpdE9wKCkKIAogCisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZhbFJlZ0lk
IHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbFJlZ0lkXSA+
PiBjZnJbc2hpZnRSZWdJZF07CisvLworLy8gICBQZXJmb3JtcyBhcml0aG1ldGljIHJpZ2h0IHNo
aWZ0IG9mIHJlZ2lzdGVyIHZhbCAoY29udmVydGVkCisvLyAgIHRvIGludDMyKSBieSByZWdpc3Rl
ciBzaGlmdCAoY29udmVydGVkIHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1bHQg
aW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgcnNoaWZ0aSBsZWZ0LCByaWdodCAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0ID4+
IGxlZnQpOworICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0LAot
ICAgICAgICA0KQorICAgICAgICA0KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfcnNo
aWZ0LCA0KSB7CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQogCisvLyBieXRlY29kZTogcnNoaWZ0
IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOgorLy8KKy8vICAgUGVy
Zm9ybXMgbG9naWNhbCByaWdodCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRlZAorLy8g
ICB0byB1aW50MzIpIGJ5IHJlZ2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8KKy8vICAgdWludDMy
KSwgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF91cnNo
aWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCBzbG93KQotICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKLSAgICAg
ICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJp
Z2h0ICAgICAgICAvLyByaWdodCA9ICgodW5zaWduZWQpcmlnaHQgPj4gbGVmdCk7CisgICAgICAg
ICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93ICAgICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkgZ290byBz
bG93OwogICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKLSAg
ICAgICAgNCkKKyAgICAgICAgNCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3Vyc2hp
ZnQsIDQpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6IGJpdGFu
ZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lk
XSA9IGNmcltzcmMxUmVnSWRdICYgY2ZyW3NyYzJSZWdJZF07CisvLworLy8gICBDb21wdXRlcyBi
aXR3aXNlIEFORCBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisvLyAgIGFu
ZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0
CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
YW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykK
KyAgICAgICAgICAgIGFuZGkgbGVmdCwgcmlnaHQgICAgICAgICAgICAvLyByaWdodCA9IChyaWdo
dCAmIGxlZnQpOworICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5k
LAotICAgICAgICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhf
Yml0YW5kLCA1KSB7CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQogCiAKKy8vIGJ5dGVjb2RlOiBi
aXR4b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RS
ZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSBeIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0
ZXMgYml0d2lzZSBYT1Igb2YgcmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8g
ICBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJl
c3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpCisgICAgICAgICAgICB4b3JpIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmlnaHQgPSAo
cmlnaHQgXiBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2Jp
dHhvciwKLSAgICAgICAgNSkKKyAgICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19w
YXRoX2JpdHhvciwgNSkgeworICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKKwogCisvLyBieXRlY29k
ZTogYml0b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJRAorLy8gZnVuY3Rpb246IGNmcltk
c3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSB8IGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29t
cHV0ZXMgYml0d2lzZSBPUiBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisv
LyAgIGFuZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUK
Ky8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2JpdG9yOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpCisgICAgICAgICAgICBvcmkgbGVmdCwgcmlnaHQgICAgICAgICAgICAgLy8gcmlnaHQgPSAo
cmlnaHQgfCBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2Jp
dG9yLAotICAgICAgICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3Bh
dGhfYml0b3IsIDUpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6
IGNoZWNrX2hhc19pbnN0YW5jZSBjb25zdHJ1Y3RvclJlZ0lkCisvLyBmdW5jdGlvbjogYXNzZXJ0
KHR5cGVvZiBjZnJbY29uc3RydWN0b3JSZWdJZF0uSGFzSW5zdGFuY2UgPT0gImZ1bmN0aW9uIik7
CisvLworLy8gICBDaGVjayAnY29uc3RydWN0b3InIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBpbnRl
cm5hbCBwcm9wZXJ0eQorLy8gICBbSGFzSW5zdGFuY2VdIChpLmUuIGlzIGEgZnVuY3Rpb24gLi4u
ICpzaGFrZXMgaGVhZCBzYWRseSBhdAorLy8gICBKU0MgQVBJKikuIFJhaXNlcyBhbiBleGNlcHRp
b24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90CisvLyAgIGEgdmFsaWQgcGFyYW1ldGVy
IGZvciBpbnN0YW5jZW9mLgogCiBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Ci0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0
W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjb25zdHJ1Y3RvcklkPHQxPiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9yUmVnSWRd
OworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cpIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNv
bnN0cnVjdG9ySWQ8dDE+LCBDZWxsVGFnLCBvYmo8dDA+LCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dyk7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0
dXJlOworICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93ICAvLyBp
ZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2Up
IGdvdG8gLnNsb3c7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
CiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2U7CisgICAgZGlzcGF0Y2go
MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBpbnN0YW5jZW9m
IGRzdFJlZ0lkIHZhbHVlUmVnSWQgY29uc3RydWN0b3JSZWdJZCBjb25zdHJ1Y3RvclByb3RvUmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbHVlUmVnSWRdIGluc3RhbmNl
b2YgY2ZyW2NvbnN0cnVjdG9yUmVnaWRdOworLy8KKy8vICAgVGVzdHMgd2hldGhlciByZWdpc3Rl
ciB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiByZWdpc3RlcgorLy8gICBjb25zdHJ1Y3RvciwgYW5k
IHB1dHMgdGhlIGJvb2xlYW4gcmVzdWx0IGluIHJlZ2lzdGVyCisvLyAgIGRzdC4gUmVnaXN0ZXIg
Y29uc3RydWN0b3JQcm90byBtdXN0IGNvbnRhaW4gdGhlICJwcm90b3R5cGUiCisvLyAgIHByb3Bl
cnR5IChub3QgdGhlIGFjdHVhbCBwcm90b3R5cGUpIG9mIHRoZSBvYmplY3QgaW4KKy8vICAgcmVn
aXN0ZXIgY29uc3RydWN0b3IuIFRoaXMgbG9va3VwIGlzIHNlcGFyYXRlZCBzbyB0aGF0CisvLyAg
IHBvbHltb3JwaGljIGlubGluZSBjYWNoaW5nIGNhbiBhcHBseS4KKy8vCisvLyAgIFJhaXNlcyBh
biBleGNlcHRpb24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90IGFuCisvLyAgIG9iamVj
dC4KIAogX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMg
Q2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVo
YXZpb3IuCisgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQg
SGFzSW5zdGFuY2UgYmVoYXZpb3IuCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVj
YXRlZC4KLSAgICBsb2FkaSAxMltQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRVbmNoZWNrZWQodDEsIHQwKQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdwotICAg
IAotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAgbG9hZGkgMTZbUENdLCB0MAotICAg
IGxvYWRpIDRbUENdLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRpIDhbUENd
LCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Miwg
Lm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgCi0gICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90
b3R5cGUsIHQyID0gdmFsdWUKLSAgICBtb3ZlIDEsIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY29uc3RydWN0b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lk
XTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFVuY2hlY2tlZChjb25zdHJ1Y3RvcklkPHQxPiwgb2JqPHQwPik7CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0
dXJlOworICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdyAvLyBp
ZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSBnb3RvIC5zbG93OworCisgICAgLy8gQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAg
bG9hZGkgMTZbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JQcm90b0lkPHQwPiA9IG9w
ZXJhbmRzW2NvbnN0cnVjdG9yUHJvdG9SZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpICAg
ICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNvbnN0cnVj
dG9yUHJvdG9JZDx0MD4sIENlbGxUYWcsIHByb3RvT2JqPHQxPiwgLnNsb3cpOworICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0Mj4gPSBwcm90b09iajx0MT4uc3Ry
dWN0dXJlOworICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cgICAgIC8vIGlmICgodW5zaWduZWQp
c3RydWN0dXJlPHQyPi50eXBlSW5mby50eXBlIDwgT2JqZWN0VHlwZSkgZ290byAuc2xvdzsKKyAg
ICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZUlkPHQwPiA9IG9wZXJhbmRzW3Zh
bHVlUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHZhbHVlSWQ8dDA+LCBDZWxsVGFnLCBvYmo8dDI+LCAuc2xvdyk7
CisKKyAgICAvLyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAg
ICBtb3ZlIDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm90b1dhc0ZvdW5kPHQwPiA9IHRydWU7
CiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDIKLSAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0s
IHQyCi0gICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRpbnogdDIsIC5v
cEluc3RhbmNlb2ZMb29wCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzdHJ1
Y3R1cmU8dDI+ID0gb2JqPHQyPi5zdHJ1Y3R1cmU7CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBvYmo8dDI+ID0gc3RydWN0dXJlPHQyPi5wcm90b3R5cGUuUGF5bG9hZDsKKyAg
ICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChvYmo8dDI+ID09IHByb3RvT2Jq
KSBnb3RvIC5kb25lOworICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChvYmo8
dDI+ICE9IG51bGwpIGdvdG8gLmxvb3A7CiAKLSAgICBtb3ZlIDAsIHQwCisgICAgbW92ZSAwLCB0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSBmYWxzZTsKIC5vcEluc3Rh
bmNlb2ZEb25lOgotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
LSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCg1
KQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9
IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQzPl0uUGF5bG9hZCA9IHByb3RvV2FzRm91bmQ7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDUp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfaW5zdGFu
Y2VvZjsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CisKIAorLy8gYnl0ZWNvZGU6IGlzX3VuZGVmaW5lZCBkc3RSZWdJZCBzcmNSZWdJZAorLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltzcmNSZWdJZF0gPT0gInVuZGVm
aW5lZCIpOworLy8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Ig
c3JjIGFjY29yZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAidW5kZWZpbmVk
IiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9v
cF9pc191bmRlZmluZWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0
MQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQy
LCB0MykKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsCi0gICAgY2llcSB0MiwgVW5kZWZp
bmVkVGFnLCB0MwotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAg
IGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRb
UENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQwPiA9IG9w
ZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMp
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFn
PHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0gICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsICAgICAgICAgICAgLy8gaWYgKHRh
Zzx0Mj4gPT0gQ2VsbFRhZykgZ290byAuY2VsbDsKKyAgICBjaWVxIHQyLCBVbmRlZmluZWRUYWcs
IHQzICAgICAgICAgICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0Mz4gPSAodGFnPHQyPiA9
PSBVbmRlZmluZWRUYWcpOworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dID0gaXNVbmRlZmluZWQ8dDM+OworICAgIGRp
c3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEKLSAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKLSAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4g
PSBwYXlsb2FkPHQzPi5zdHJ1Y3R1cmU7CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxICAvLyBp
c1VuZGVmaW5lZDx0MT4gPSAoKHN0cnVjdHVyZTx0MT4udHlwZUluZm8uZmxhZ3MgJiBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSAhPSAwKTsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQxPjsK
KyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IGlzX2Jvb2xlYW4gZHN0UmVnSWQg
c3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVn
SWRdID09ICJib29sZWFuIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUg
c3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlz
ICJib29sZWFuIiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisK
IF9sbGludF9vcF9pc19ib29sZWFuOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4
W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
VGFnKHQxLCB0MCkKLSAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MAotICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1Jl
Z0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVRhZyh0MSwgdDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVRhZyhzcmNJZDx0MT4gPT0+IHRhZzx0MD4pOworICAgIGNpZXEgdDAsIEJvb2xlYW5UYWcsIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzQm9vbGVhbjx0MD4gPSAodGFnPHQwPiA9PSBC
b29sZWFuVGFnKTsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
ICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5d
LlBheWxvYWQgPSBpc0Jvb2xlYW48dDA+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRl
Y29kZTogaXNfbnVtYmVyIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJl
Z0lkXSA9ICh0eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAibnVtYmVyIik7CisvLworLy8gICBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAg
IHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlzICJudW1iZXIiLCBhbmQgcHV0cyB0aGUgcmVzdWx0Cisv
LyAgIGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2lzX251bWJlcjoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGFkZGkgMSwgdDAKLSAgICBjaWIgdDAsIExvd2Vz
dFRhZyArIDEsIHQxCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0g
ICAgZGlzcGF0Y2goMykKLQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2Fk
aSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4g
PSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwg
dDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNSZWdJZDx0
MT4gPT0+IHRhZzx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0gICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgYWRk
aSAxLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQwPiAr
PSAxOworICAgIGNpYiB0MCwgTG93ZXN0VGFnICsgMSwgdDEgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlzTnVtYmVyPHQxPiA9ICgodW5zaWduZWQpdGFnPHQwPiA8IExvd2VzdFRhZyArIDEpOwor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc051bWJlcjx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CisKKy8vIGJ5dGVjb2RlOiBpc19zdHJpbmcgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9u
OiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJzdHJpbmciKTsKKy8v
CisvLyAgIERldGVybWluZXMgd2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBhY2NvcmRp
bmcgdG8KKy8vICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInN0cmluZyIsIGFuZCBwdXRzIHRo
ZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfc3RyaW5nOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BD
XSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCi0gICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGJpbmVxIHQwLCBDZWxsVGFn
LCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBd
LCBTdHJpbmdUeXBlLCB0MQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5k
c1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RS
ZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQx
PiA9PT4gdGFnPHQwPiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNTdHJp
bmdOb3RDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDA+ICE9
IENlbGxUYWcpIGdvdG8gLm5vdENlbGw7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDA+
ID0gcGF5bG9hZDx0Mz4uc3RydWN0dXJlOworICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxICAgLy8gaXNTdHJpbmc8dDE+
ID0gKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc1N0cmluZzx0MT47CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BJc1N0cmluZ05vdENlbGw6Ci0gICAg
c3RvcmVwIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAg
IHN0b3JlcCAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IGZhbHNlOworICAgIGRpc3Bh
dGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdl
LCB0YWcsIHBheWxvYWQpCisgICAgLy8gbWFjcm86IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBh
eWxvYWQpIHsKICAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZzZXQsIElu
bGluZVN0b3JhZ2VDYXBhY2l0eSwgb2sgZW5kKQogICAgIG5lZ2kgcHJvcGVydHlPZmZzZXQKLSAg
ICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBv
YmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtv
YmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHN0b3JhZ2U8b2JqZWN0QW5kU3RvcmFnZT4gPSBvYmplY3Q8b2JqZWN0QW5kU3Rv
cmFnZT4ub3V0T2ZMaW5lU3RvcmFnZTsKICAgICBsb2FkaSBUYWdPZmZzZXQgKyAoSW5saW5lU3Rv
cmFnZUNhcGFjaXR5IC0gMikgKiA4W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4
XSwgdGFnCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIChJbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
LSAyKSAqIDhbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCisg
ICAgLy8gfSBFTkQgbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90Rmlu
YWwKIGVuZAogCiBtYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zm
c2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCkBAIC05NDAsMzIgKzEyOTQsNDYg
QEAgbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZQogZW5kCiAKIG1hY3Jv
IHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKLSAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dz
OgotICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCi0gICAgIyA4W1BDXSAg
IFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCi0gICAgIyAxMltQ
Q10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVy
YXRvci4KLSAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVk
IHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQotICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cK
LSAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtu
b3duTm90RmluYWwodDEsIHQwLCB0MiwgdDMpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCi0gICAgdmFs
dWVQcm9maWxlKHQyLCB0MywgdDApCi1lbmQKKyAgICAvLyBtYWNybyByZXNvbHZlR2xvYmFsKHNp
emUsIHNsb3cpIHsKKyAgICAvLyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAvLyA0W1BD
XSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAvLyA4W1BDXSAgIFByb3BlcnR5IGlk
ZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgLy8gMTJbUENdICBTdHJ1Y3R1
cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAg
Ly8gMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBi
eXRlY29kZSBnZW5lcmF0b3IuCisgICAgLy8gLi4uCisgICAgLy8gb3JhY2xlQ2FjaGVJZFtQQ10g
IE9mZnNldCBpbnRvIHRoZSBWYWx1ZVByb2ZpbGU6OmJ1Y2tldHMgdGhhdCB3aWxsIHN0b3JlIHRo
ZSBvcmFjbGUgdmFsdWUgZm9yIHRoaXMgYnl0ZWNvZGUuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQw
PiA9IGNmci5Db2RlQmxvY2s7CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRm
KCIgICAgICBtbGFtIGNvZGVibG9jayAlcFxuIiwgcjAudS52cCk7CisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFs
T2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVj
dHVyZTx0MT4gPSBnbG9iYWxPYmplY3Q8dDA+LnN0cnVjdHVyZTsKKyAgICBicG5lcSB0MSwgMTJb
UENdLCBzbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3Ry
dWN0dXJlPHQxPiAhPSBzdHJ1Y3R1cmVBcmc8cGNbMTJdPikgZ290byAuc2xvdzsKKyAgICBsb2Fk
aSAxNltQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBvZmZzZXQ8dDE+ID0gb2Zmc2V0QXJnW3BjWzE2XV0pOworICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKSAgIC8vIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKG9mZnNldDx0MT4sIGdsb2JhbE9iamVjdDx0
MD4gPT0+IHRhZzx0Mj4sIHBheWxvYWQ8dDM+KTsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBwY1s0
XTsKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0MD5dLlBheWxvYWQgPSBwYXlsb2FkPHQzPjsKKyAgICBtbGFtRG8gLy8gaWYgKG1s
YW1fUFJJTlRGKSBwcmludGYoIiAgIG1sYW0gcmVzb2x2ZWdsb2JhbCB8IHBheWxvYWQ8dDM+ID0g
JWxkXG4iLCByNC51LmkpOworICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yYWNsZUlkPHQwPiA9IHBjW29yYWNsZUNhY2hl
SWRdOworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHZhbHVlUHJvZmlsZSh0YWc8dDI+LCBwYXlsb2FkPHQzPiwgb3JhY2xl
SWQ8dDA+KTsKKyAgICAvLyB9IEVORCBtYWNybyByZXNvbHZlR2xvYmFsLgorZW5kCisKKy8vIGJ5
dGVjb2RlOiBkc3RSZWdJZCBnbG9iYWxPYmplY3QoYykgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShz
SUQpIG9mZnNldChuKSBvcmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9
IGdsb2JhbE9iamVjdFtvZmZzZXRdOworLy8KKy8vICAgUGVyZm9ybXMgYSBkeW5hbWljIHByb3Bl
cnR5IGxvb2t1cCBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LCBvbiB0aGUgcHJvdmlkZWQKKy8vICAg
Z2xvYmFsIG9iamVjdC4gIElmIHN0cnVjdHVyZSBtYXRjaGVzIHRoZSBTdHJ1Y3R1cmUgb2YgdGhl
IGdsb2JhbCB0aGVuIHBlcmZvcm0KKy8vICAgYSBmYXN0IGxvb2t1cCB1c2luZyB0aGUgY2FzZSBv
ZmZzZXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gYSBmdWxsIHJlc29sdmUgYW5kCisvLyAgIGNh
Y2hlIHRoZSBuZXcgc3RydWN0dXJlIGFuZCBvZmZzZXQKIAogX2xsaW50X29wX3Jlc29sdmVfZ2xv
YmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29s
dmVHbG9iYWxTbG93KQotICAgIGRpc3BhdGNoKDYpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BS
ZXNvbHZlR2xvYmFsU2xvdykgIC8vIHJlc29sdmVHbG9iYWwoNiwgLnNsb3cpOworICAgIGRpc3Bh
dGNoKDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAKIC5vcFJlc29sdmVHbG9iYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3Jlc29sdmVfZ2xvYmFsKQotICAgIGRpc3BhdGNoKDYpCisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWwpICAgLy8gY2FsbCBzbG93X3BhdGhfcmVzb2x2
ZV9nbG9iYWw7CisgICAgZGlzcGF0Y2goNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKICMgR2l2ZXMgeW91IHRoZSBzY29wZSBp
biB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFs
IGNoZWNrcyBvbiB0aGUKQEAgLTk3Myw1NCArMTM0MSw2OSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWw6CiAjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1
c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAogIyB1c2UgdDMsIHNvIHlv
dSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgogbWFjcm8gZ2V0U2NvcGUoZGVCcnVp
amluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQotICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQwCi0gICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0Mgor
ICAgIC8vIG1hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykg
eworICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwICAgICAgICAg
ICAgICAgICAgIC8vIHNjb3BlT2JqPHQwPiA9IGNmci5TY29wZUNoYWluLlBheWxvYWQ7CisgICAg
bG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGVCcnVpamluSW5kZXg8dDI+ID0gW2RlQnJ1aWppbkluZGV4T3BlcmFuZF07CiAgICAg
Ci0gICAgYnRpeiB0MiwgLmRvbmUKKyAgICBidGl6IHQyLCAuZG9uZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ID09
IDApIGdvdG8gLmRvbmU7CiAgICAgCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAg
YmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAotICAg
IGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNvZGVCbG9jazx0MT4gPSBjZnIuQ29kZUJsb2NrOworICAgIGJpbmVxIENvZGVCbG9jazo6
bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AgICAgICAgIC8vIGlmIChjb2RlQmxv
Y2s8dDE+LmNvZGVUeXBlICE9IEZ1bmN0aW9uQ29kZSkgZ290byAubG9vcDsKKyAgICBidGJ6IENv
ZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AgICAgICAgICAgICAvLyBp
ZiAoIWNvZGVCbG9jazx0MT4ubmVlZHNGdWxsU2NvcGVDaGFpbikgZ290byAubG9vcDsKICAgICAK
LSAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKyAgICBs
b2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEgICAgICAgICAgICAg
ICAvLyBhY3RpdmF0aW9uUmVnPHQxPiA9IGNvZGVCbG9jazx0MT4uYWN0aXZhdGlvblJlZ2lzdGVy
OwogCi0gICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KLSAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlv
bgotICAgIHNjb3BlQ2hlY2sodDAsIHQxKQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0
W3QwXSwgdDAKKyAgICAvLyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29w
ZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0
aXZhdGlvbiAgICAvLyBpZiAoY2ZyW2FjdGl2YXRpb25SZWc8dDE+XS5UYWcgPT0gRW1wdHlWYWx1
ZVRhZykgZ290byAubm9BY3RpdmF0aW9uOworICAgIHNjb3BlQ2hlY2sodDAsIHQxKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlQ2hlY2soc2NvcGVPYmo8
dDA+LCBhY3RpdmF0aW9uUmVnPHQxPik7CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRb
dDBdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gc2NvcGVP
Ymo8dDA+Lm5leHQ7CiAubm9BY3RpdmF0aW9uOgotICAgIHN1YmkgMSwgdDIKKyAgICBzdWJpIDEs
IHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
ZUJydWlqaW5JbmRleDx0Mj4tLTsKICAgICAKLSAgICBidGl6IHQyLCAuZG9uZQorICAgIGJ0aXog
dDIsIC5kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmIChkZUJydWlqaW5JbmRleDx0Mj4gPT0gMCkgZ290byAuZG9uZTsKIC5sb29wOgotICAgIHNj
b3BlQ2hlY2sodDAsIHQxKQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAK
LSAgICBzdWJpIDEsIHQyCi0gICAgYnRpbnogdDIsIC5sb29wCisgICAgc2NvcGVDaGVjayh0MCwg
dDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzY29wZUNo
ZWNrKHNjb3BlT2JqPHQwPiwgYWN0aXZhdGlvblJlZzx0MT4pOworICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc2NvcGVP
Ymo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5leHQ7CisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBkZUJydWlqaW5JbmRleDx0
Mj4tLTsKKyAgICBidGlueiB0MiwgLmxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ICE9IDApIGdvdG8gLmxvb3A7
CiAKIC5kb25lOgorICAgIC8vIH0gRU5EIG1hY3JvIGdldFNjb3BlLgogZW5kCiAKKy8vIGJ5dGVj
b2RlOiByZXNvbHZlX3NraXAgZHN0KHIpIGdsb2JhbE9iamVjdChjKSBwcm9wZXJ0eShpZCkgc3Ry
dWN0dXJlKHNJRCkgb2Zmc2V0KG4pIG9yYWNsZUNhY2hlSWQKKy8vIGZ1bmN0aW9uOiAKKy8vCisv
LyAgIFBlcmZvcm1zIGEgZHluYW1pYyBwcm9wZXJ0eSBsb29rdXAgZm9yIHRoZSBnaXZlbiBwcm9w
ZXJ0eSwgb24gdGhlIHByb3ZpZGVkCisvLyAgIGdsb2JhbCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUg
bWF0Y2hlcyB0aGUgU3RydWN0dXJlIG9mIHRoZSBnbG9iYWwgdGhlbiBwZXJmb3JtCisvLyAgIGEg
ZmFzdCBsb29rdXAgdXNpbmcgdGhlIGNhc2Ugb2Zmc2V0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRv
IGEgZnVsbCByZXNvbHZlIGFuZAorLy8gICBjYWNoZSB0aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zm
c2V0LgorLy8gICAgICAgICAKKy8vICAgVGhpcyB3YWxrcyB0aHJvdWdoIG4gbGV2ZWxzIG9mIHRo
ZSBzY29wZSBjaGFpbiB0byB2ZXJpZnkgdGhhdCBub25lIG9mIHRob3NlIGxldmVscworLy8gICBp
biB0aGUgc2NvcGUgY2hhaW4gaW5jbHVkZSBkeW5hbWljYWxseSBhZGRlZCBwcm9wZXJ0aWVzLgor
CiBfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCi0gICAgbG9hZHAg
SlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IHNwLmdsb2JhbERhdGE7CisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4gPSBn
bG9iYWxEYXRhPHQzPi5hY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIGdldFNjb3BlKAogICAgICAg
ICAyMFtQQ10sCiAgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGxv
YWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoCi0gICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTdXBlclNsb3cKLSAgICAgICAgZW5kKQotICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVz
b2x2ZUdsb2JhbER5bmFtaWNTbG93KQotICAgIGRpc3BhdGNoKDcpCisgICAgICAgIC8vIG1hY3Jv
IChzY29wZSwgc2NyYXRjaCkgeworICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9i
amVjdFtzY29wZV0sIHNjcmF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9i
ajxzY3JhdGNoPiA9IHNjb3BlLm9iamVjdDsKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdyAg
ICAvLyBpZiAob2JqPHNjcmF0Y2g+LnN0cnVjdHVyZSAhPSBhY3RpdmF0aW9uU3RydWN0dXJlPHQz
PikgZ290byAuc3VwZXJTbG93OworICAgICAgICAvLyB9IEVORCBtYWNyby4KKyAgICAgICAgZW5k
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnZXRTY29wZShvcGVyYW5kc1tvZmZzZXRdLCAuLi4pOwor
ICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmVHbG9iYWwoNywgLnNsb3cp
OworICAgIGRpc3BhdGNoKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
IAogLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKLSAgICBk
aXNwYXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZm9y
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19w
YXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BSZXNvbHZlR2xvYmFs
RHluYW1pY1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKLSAgICBkaXNwYXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlz
cGF0Y2goNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIF9sbGlu
dF9vcF9nZXRfc2NvcGVkX3ZhcjoKQEAgLTEwNjYsNiArMTQ0OSw3IEBAIG1hY3JvIGdldEdsb2Jh
bFZhcihzaXplKQogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbG9hZGkgKHNpemUgLSAxKSAq
IDRbUENdLCB0MworICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAgIG1s
YW0gZ2V0R2xvYmFsVmFyOiA8dDM+ID0gJWxkICB8IHBheWxvYWQ8dDE+ID0gJWxkXG4iLCByNC51
LmksIHIxLnUuaSk7CiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2go
c2l6ZSkKIGVuZApAQCAtMTE2NSw2ICsxNTQ5LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBtbGFtRG8gLy8gbWxhbVByaW50PSB0cnVlOwogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNs
b3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKQEAgLTEx
NzYsMTEgKzE1NjEsMjMgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAg
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCiAgICAg
ICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICBzdG9yZWkgc2Ny
YXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBtbGFtRG8g
Ly8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiAgIG1sYW0gQVNNIHB1dEJ5SWQgcmVzdWx0PHQy
PiA9ICVsZFxuIiwgcjIudS5pKTsKICAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAg
ZW5kKQogZW5kCiAKKy8vIGJ5dGVjb2RlOiBwdXRfYnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkg
dmFsdWUocikgbm9wKG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRpcmVjdChiKQorLy8KKy8vICAg
R2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3M6IFNldHMgdGhlIHByb3BlcnR5IG5hbWVkIGJ5IGlkZW50
aWZpZXIKKy8vICAgcHJvcGVydHksIGJlbG9uZ2luZyB0byByZWdpc3RlciBiYXNlLCB0byByZWdp
c3RlciB2YWx1ZS4KKy8vCisvLyAgIFVubGlrZSBtYW55IG9wY29kZXMsIHRoaXMgb25lIGRvZXMg
bm90IHdyaXRlIGFueSBvdXRwdXQgdG8KKy8vICAgdGhlIHJlZ2lzdGVyIGZpbGUuCisvLworLy8g
ICBUaGUgImRpcmVjdCIgZmxhZyBzaG91bGQgb25seSBiZSBzZXQgdGhpcyBwdXRfYnlfaWQgaXMg
dG8gaW5pdGlhbGl6ZQorLy8gICBhbiBvYmplY3QgbGl0ZXJhbC4KKwogX2xsaW50X29wX3B1dF9i
eV9pZDoKICAgICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCkBAIC0xNDM3LDI1ICsxODM0
LDM0IEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAKICAgICBsb2Fk
aSA4W1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAgMVxuIik7CiAgICAgYmluZXEgdDAsIEludDMy
VGFnLCAub3AxTm90SW50CiAgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAg
bWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDJcbiIpOworICAgIG1s
YW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENvbXBhcmluZyBpZiAodDEgJWxkIGFuZCB0MiAl
bGQpOiBicmFuY2ggLi4uXG4iLCByMS51LmksIHI0LnUuaSk7CiAgICAgaW50ZWdlckNvbXBhcmUo
dDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBD
T01QQVJFIHN0ZXAgM1xuIik7CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gRElE
IE5PVCBicmFuY2hcbiIpOwogICAgIGRpc3BhdGNoKDQpCiAKIC5vcDFOb3RJbnQ6CisgICAgbWxh
bURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDRcbiIpOwogICAgIGJpYSB0
MCwgTG93ZXN0VGFnLCAuc2xvdwogICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3Ay
RG91YmxlCiAgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwogICAgIGNpMmQgdDMsIGZ0MQog
ICAgIGptcCAub3AxTm90SW50UmVhZHkKIC5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgbWxhbURv
IC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDVcbiIpOwogICAgIGZpaTJkIHQz
LCB0MiwgZnQxCiAub3AxTm90SW50UmVhZHk6CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBA
IG1sYW0gQ09NUEFSRSBzdGVwIDZcbiIpOwogICAgIGZpaTJkIHQxLCB0MCwgZnQwCiAgICAgZG91
YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCiAgICAgZGlzcGF0Y2goNCkKIAogLm9w
Mk5vdEludDoKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAg
N1xuIik7CiAgICAgY2kyZCB0MSwgZnQwCiAgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CiAg
ICAgZmlpMmQgdDMsIHQyLCBmdDEKQEAgLTE0NjMsOSArMTg2OSwxMiBAQCBtYWNybyBjb21wYXJl
KGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAgICAgZGlzcGF0Y2goNCkKIAogLmp1bXBUYXJn
ZXQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDhcbiIp
OworICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIEJSQU5DSEVEXG4iKTsKICAgICBk
aXNwYXRjaEJyYW5jaCgxMltQQ10pCiAKIC5zbG93OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAg
IEBAQCBtbGFtIENPTVBBUkUgc3RlcCA5XG4iKTsKICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgp
CiAgICAgZGlzcGF0Y2goMCkKIGVuZApAQCAtMTU0NywzMiArMTk1Niw1NSBAQCBfbGxpbnRfb3Bf
bmV3X2Z1bmM6CiAub3BOZXdGdW5jRG9uZToKICAgICBkaXNwYXRjaCg0KQogCittYWNybyBjYWxs
VGFyZ2V0RnVuY3Rpb24oY2FsbExpbmtJbmZvKQorICAgIGlmIENfTE9PUAorICAgICAgICBjeHhD
YWxsSlNGdW5jdGlvbiBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbY2FsbExp
bmtJbmZvXSAgICAgLy8gY2FsbCBjYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXQ7CisgICAg
ZWxzZQorICAgICAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtj
YWxsTGlua0luZm9dICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldDsK
KyAgICAgICAgLy8gUmVsb2FkIHRoZSByZXR1cm4gUEMgZnJvbSB3aGVyZSB3ZSBzdGFzaGVkIGl0
LCBhbmQgZ28gdGhlcmU6CisgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAg
Z290byAqcGM7CisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3BhdGNoQWZ0ZXJDYWxsKCk7CisgICAgZW5kCitl
bmQKIAogbWFjcm8gZG9DYWxsKHNsb3dQYXRoKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxv
YWRpIDE2W1BDXSwgdDEKLSAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwg
dDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cENhbGxTbG93KQotICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICBsb2FkaSAxMltQ
Q10sIHQzCi0gICAgYWRkcCAyNCwgUEMKLSAgICBsc2hpZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIs
IHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCi0gICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKLSAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxv
YWRPZmZzZXRbdDNdCi0gICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0
M10KLSAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgotICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCi0gICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCi0gICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkg
Q2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQotICAgIHN0b3JlaSBDZWxsVGFnLCBTY29w
ZUNoYWluICsgVGFnT2Zmc2V0W3QzXQotICAgIG1vdmUgdDMsIGNmcgotICAgIGNhbGwgTExJbnRD
YWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KCkKKyAgICAvLyBtYWNybyBkb0NhbGwoc2xvd1BhdGgpIHsKKyAgICBsb2FkaSA0W1BDXSwgdDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY0lkPHQwPiA9IHBjWzFd
OworICAgIGxvYWRpIDE2W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsTGlua0luZm88dDE+ID0gcGNbNF07CisgICAgbG9hZHAgTExJbnRDYWxsTGlua0lu
Zm86OmNhbGxlZVt0MV0sIHQyICAgICAgICAgICAgIC8vIGNhbGxlZTx0Mj4gPSBjYWxsTGlua0lu
Zm88dDE+LmNhbGxlZTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDMsIC5vcENhbGxTbG93KSAvLyBsb2FkKGZ1bmNJZDx0MD4gPT0+IGZ1bmM8dDM+LCAu
Li4pOworICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNvZGUoKT8pIGdv
dG8gLnNsb3c7CisgICAgbG9hZGkgMTJbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBwY1szXTsKKworICAgIGFkZHAgMjQsIFBDICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyArPSAyNCBpLmUuIHBvaW50
IHRvIHRoZSByZXR1cm4gYWRkcmVzcy4KKworICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciArIG9m
ZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9IHNpemVvZiBjdXJyZW50IGZyYW1lOworICAgIGxz
aGlmdGkgMywgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZz
ZXQ8dDM+ID0gb2Zmc2V0PHQzPiA8PCAzOworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlu
cyB0aGUgbmV3IHZhbHVlIG9mIGNmciAgICAvLyBuZXdGcmFtZTx0Mz4gPSBvZmZzZXQ8dDM+ICsg
Y2ZyOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV3RnJhbWU6CisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNh
bGxlZTx0Mj4uc2NvcGVDaGFpbjsKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZz
ZXRbdDNdICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZS5QYXlsb2FkID0gY2Fs
bGVlPHQyPjsKKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXSAg
ICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4uUGF5bG9hZCA9IHNjb3BlPHQwPjsK
KyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbnVtQXJnczx0Mj4gPSAuLi47CisgICAgbWxhbURvICAvLyBpZiAobWxhbV9QUklOVEYpIHBy
aW50ZigiXG4gbWxhbSA6OiBQUklOVCBkb0NhbGwoKSB8IGNmci5Bcmd1bWVudENvdW50LlRhZyA9
IHBjICVwO1xuXG4iLCB2UEMpOworICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldFtjZnJdICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBwYzsgLy8gU3Rh
c2ggdGhlIHJldHVybiBQQy4KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10gICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlckZyYW1lID0gY2ZyOworICAg
IHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAvLyBu
ZXdGcmFtZTx0Mz4uQXJndW1lbnRDb3VudC5QYXlsb2FkID0gbnVtQXJnczx0Mj47CisgICAgc3Rv
cmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10gICAgICAgICAgICAgIC8vIG5ld0Zy
YW1lPHQzPi5DYWxsZWUuVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVD
aGFpbiArIFRhZ09mZnNldFt0M10gICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4u
VGFnID0gQ2VsbFRhZzsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJc
biBtbGFtIDo6IEJFRk9SRSBwdXNoIHwgY2ZyKCVwKS0+dlBDKCkgPSAlcDtcblxuIiwgY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmN1cnJlbnRWUEMoKSk7CisgICAgbW92ZSB0MywgY2ZyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKKyAg
ICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IEFGVEVSIHB1
c2ggfCBjZnIoJXApLT52UEMoKSA9ICVwO1xuXG4iLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y3Vy
cmVudFZQQygpKTsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgVk1JbnNwZWN0b3I6
OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgID4+PiBQVVNIRUQgdG8gbmV3ICIsIHZQQywgImRvQ2Fs
bCIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICAvLyBDYWxsIHRoZSB0YXJnZXQgYXMgaWYg
aXQncyBhIGNvbXBpbGVkIG1ldGhvZDoKKyAgICAjIG1sYW0gY2FsbCBMTEludENhbGxMaW5rSW5m
bzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdICAgICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvPHQxPi5t
YWNoaW5lQ29kZVRhcmdldDsKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24odDEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxsTGlua0luZm88dDE+
KTsKIAogLm9wQ2FsbFNsb3c6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dQYXRoKQorICAg
IHNsb3dQYXRoRm9yQ2FsbCg2LCBzbG93UGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
YWxsIHNsb3dQYXRoOworICAgIC8vIH0gRU5EIGRvQ2FsbC4KIGVuZAogCiAKQEAgLTE1OTgsMTIg
KzIwMzAsMjUgQEAgX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKICAgICBkaXNwYXRjaCgy
KQogCiAKKy8vIGJ5dGVjb2RlOiByZXQgcmVzdWx0UmVnSWQKKy8vIGZ1bmN0aW9uOiByZXR1cm4g
Y2ZyW3Jlc3VsdFJlZ0lkXTsKKy8vCisvLyAgIFJldHVybiByZWdpc3RlciByZXN1bHQgYXMgdGhl
IHJldHVybiB2YWx1ZSBvZiB0aGUgY3VycmVudAorLy8gICBmdW5jdGlvbiBjYWxsLCB3cml0aW5n
IGl0IGludG8gZnVuY3Rpb25SZXR1cm5WYWx1ZS4KKy8vICAgSW4gYWRkaXRpb24sIHVud2luZCBv
bmUgY2FsbCBmcmFtZSBhbmQgcmVzdG9yZSB0aGUgc2NvcGUKKy8vICAgY2hhaW4sIGNvZGUgYmxv
Y2sgaW5zdHJ1Y3Rpb24gcG9pbnRlciBhbmQgcmVnaXN0ZXIgYmFzZQorLy8gICB0byB0aG9zZSBv
ZiB0aGUgY2FsbGluZyBmdW5jdGlvbi4KKwogX2xsaW50X29wX3JldDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbWxhbURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAi
bWxhbSBGLkEuQSIpOwogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCi0gICAgbG9h
ZGkgNFtQQ10sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQotICAg
IGRvUmV0dXJuKCkKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJh
bWUsICJtbGFtIEYuQS5CIik7CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAg
ICAgLy8gcmVzdWx0SWQ8dDI+ID0gb3BlcmFuZHNbcmVzdWx0UmVnSWRdOworICAgIG1sYW1EbyAv
LyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkMiKTsKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKGNmcltyZXN1bHRJZDx0Mj5dID09PiB0YWc8dDE+LCBwYXlsb2FkPHQwPik7CisgICAgbWxh
bURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAibWxhbSBGLkEuRCIpOwor
ICAgIGRvUmV0dXJuKCkgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvUmV0dXJuKCk7CiAK
IAogX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKQEAgLTE2OTAsNiArMjEzNSwxMiBAQCBfbGxp
bnRfb3BfbmV4dF9wbmFtZToKICAgICBkaXNwYXRjaCgwKQogCiAKKy8vIGJ5dGVjb2RlOiBjYXRj
aCBleChyKQorLy8KKy8vICAgUmV0cmlldmVzIHRoZSBWTSdzIGN1cnJlbnQgZXhjZXB0aW9uIGFu
ZCBwdXRzIGl0IGluIHJlZ2lzdGVyCisvLyAgIGV4LiBUaGlzIGlzIG9ubHkgdmFsaWQgYWZ0ZXIg
YW4gZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZCwKKy8vICAgYW5kIHVzdWFsbHkgZm9ybXMgdGhl
IGJlZ2lubmluZyBvZiBhbiBleGNlcHRpb24gaGFuZGxlci4KKwogX2xsaW50X29wX2NhdGNoOgog
ICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBv
bGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxs
IGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQpAQCAtMTY5NywxOCArMjE0OCwx
OCBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNh
bGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKICAgICAjIGNvZGUgbXVz
dCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFu
ZCBoYXZlCiAgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3cuCi0gICAgbW92ZSB0MCwgY2ZyCi0gICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQzCi0gICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9y
VGhyb3dbdDNdLCBQQwotICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9h
ZE9mZnNldFt0M10sIHQwCi0gICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdP
ZmZzZXRbdDNdLCB0MQotICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBh
eWxvYWRPZmZzZXRbdDNdCi0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6
ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFtjZnIsIHQyLCA4XQorICAgIG1vdmUgdDAsIGNmciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gY2F0Y2hlckZyYW1l
PHQwPjsKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxz
cD4uZ2xvYmFsRGF0YTsKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvd1t0M10sIFBDICAgICAgICAgICAgIC8vIHBjID0gZ2xvYmFsRGF0YS50YXJnZXRJ
bnRlcnByZXRlclBDRm9yVGhyb3c7CisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQwPiA9IGds
b2JhbERhdGEuZXhjZXB0aW9uLlBheWxvYWQ7CisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNl
cHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MSAgICAgICAgICAgICAgICAgICAvLyB0YWc8dDE+ID0g
Z2xvYmFsRGF0YS5leGNlcHRpb24uVGFnOworICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4
Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YS5l
eGNlcHRpb24uUGF5bG9hZCA9IDA7CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFs
RGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAvLyBnbG9iYWxEYXRhLmV4Y2Vw
dGlvbi5UYWcgPSBFbXB0eVZhbHVlVGFnOworICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhSZWdJZDx0Mj4g
PSBvcGVyYW5kc1swXTsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltleFJlZ0lkPHQyPl0uUGF5bG9h
ZCA9IHBheWxvYWQ8dDA+OworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2V4UmVnSWQ8dDI+XS5UYWcg
PSB0YWc8dDE+OwogICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJl
IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgot
ICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IAogX2xsaW50X29wX2VuZDoKQEAgLTE3MjIsMTUgKzIxNzMsMTcgQEAgX2xsaW50X29wX2VuZDoK
IAogCiBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZToKKyAgICBtbGFtRG8g
Ly8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1s
YW0gX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmVcblxuIik7CiAgICAgIyBX
aGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJ
bnRTbG93UGF0aHMpLCBzbwogICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJp
bHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgogICAgICMgVGhpcyBlc3NlbnRp
YWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCi0gICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCi0gICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpj
YWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQxICAgICAgICAgICAgICAgICAvLyBnbG9iYWxEYXRhPHQxPiA9IGppdFN0YWNr
RnJhbWU8c3A+Lmdsb2JhbERhdGE7CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVG
b3JUaHJvd1t0MV0sIHQwICAgICAgICAgICAvLyBjYWxsRnJhbWU8dDA+ID0gZ2xvYmFsRGF0YTx0
MT4uY2FsbEZyYW1lRm9yVGhyb3c7CiAgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3dbdDFdCiAKIAogX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6
CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioq
KioqKioqKioqKiBtbGFtIF9sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lXG5cbiIp
OwogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKICAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKICAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNh
bGxGcmFtZUZvclRocm93W3QxXSwgdDAKQEAgLTE3MzgsMTYgKzIxOTEsMTggQEAgX2xsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CiAKIAogbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xp
bmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCi0gICAgc3RvcmVwIDAsIENvZGVCbG9ja1tj
ZnJdCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAKLSAgICBsb2FkaSBTY29wZUNoYWlu
ICsgUGF5bG9hZE9mZnNldFt0MF0sIHQxCi0gICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4g
KyBUYWdPZmZzZXRbY2ZyXQotICAgIHN0b3JlaSB0MSwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZz
ZXRbY2ZyXQorICAgIC8vIEluaXQgY2ZyW0NvZGVCbG9jaywgU2NvcGVDaGFpbiwgUmV0dXJuUENd
OgorICAgIHN0b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIuQ29kZUJsb2NrID0gMDsKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVyRnJhbWU8dDA+ID0gY2ZyLkNhbGxlckZy
YW1lOworICAgIG1sYW1EdW1wIHQwCisgICAgbG9hZGkgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZz
ZXRbdDBdLCB0MSAgICAgICAgICAgIC8vIHNjb3BlPHQxPiA9IGNhbGxlckZyYW1lPHQwPi5TY29w
ZUNoYWluLlBheWxvYWQ7CisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZz
ZXRbY2ZyXSAgICAgICAgIC8vIGNmci5TY29wZUNoYWluLlRhZyA9IENlbGxUYWc7CisgICAgc3Rv
cmVpIHQxLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdICAgICAgICAgIC8vIGNmci5T
Y29wZUNoYWluLlBheWxvYWQgPSBzY29wZTx0MT47CiAgICAgaWYgWDg2CiAgICAgICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA0W3NwXSwgdDMgIyBBZGRpdGlvbmFsIG9mZnNl
dCBmb3IgcmV0dXJuIGFkZHJlc3MKICAgICAgICAgc3RvcmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0
b3BDYWxsRnJhbWVbdDNdCiAgICAgICAgIHBlZWsgMCwgdDEKLSAgICAgICAgc3RvcmVwIHQxLCBS
ZXR1cm5QQ1tjZnJdCisgICAgICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0MT47CiAgICAgICAgIG1vdmUgY2ZyLCB0
MiAgIyB0MiA9IGVjeAogICAgICAgICBzdWJwIDE2IC0gNCwgc3AKICAgICAgICAgbG9hZGkgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQpAQCAtMTc1NywyNiArMjIxMiw0OSBAQCBtYWNy
byBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgICAgIGFkZHAgMTYgLSA0
LCBzcAogICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhICsgNFtzcF0sIHQz
CiAgICAgZWxzaWYgQVJNdjcKLSAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQzCi0gICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1l
W3QzXQotICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwodDMpCi0gICAgICAgIHN0b3JlcCB0MywgUmV0dXJuUENbY2ZyXQotICAgICAgICBt
b3ZlIGNmciwgdDAKLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0
MQotICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQotICAgICAg
ICBtb3ZlIHQyLCBjZnIKLSAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0
MV0KLSAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDMpCi0gICAgICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgICAgICAvLyBTZXQg
Z2xvYmFsRGF0YS50b3BDYWxsRnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAgICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+
ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICAgICAgc3RvcmVwIGNmciwgSlNH
bG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVbdDNdICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9wQ2Fs
bEZyYW1lID0gY2ZyOworICAgICAgICBtb3ZlIHQwLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzYXZlZENhbGxlckZyYW1lPHQyPiA9IGNhbGxlckZyYW1lPHQwPjsK
KyAgICAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQzKSAgICAgICAgICAgICAg
Ly8gc2F2ZWRSZXR1cm5QQzx0Mz4gPSByZXR1cm5QQzsKKyAgICAgICAgc3RvcmVwIHQzLCBSZXR1
cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQzPjsK
KyAgICAgICAgLy8gUGFzcyBjdXJyZW50RnJhbWUgYXMgYW4gYXJnIHRvIHRoZSB0YXJnZXQ6Cisg
ICAgICAgIG1vdmUgY2ZyLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGFyZzA6IGFyZzA8dDA+ID0gY2ZyOworICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRo
IHIwID0gY3VycmVudEZyYW1lLCBjZnIgPSBvbGRGcmFtZTogV2h5Pz8/CisgICAgICAgIGxvYWRp
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEgICAgICAgICAgIC8vIGpzZnVuYzx0MT4g
PSBjZnIuQ2FsbGVlLlBheWxvYWQ7CisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0
YWJsZVt0MV0sIHQxICAgICAgICAgIC8vIGFyZzE6IGV4ZWN1dGFibGU8dDE+ID0ganNmdW5jPHQx
Pi5leGVjdXRhYmxlOworICAgICAgICBtb3ZlIHQyLCBjZnIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIgPSBzYXZlZENhbGxlckZyYW1lPHQyPjsKKyAgICAgICAgY2Fs
bCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgICAgICAgICAgLy8gY2FsbCBleGVj
dXRhYmxlPHQxPi5DYWxsT3JDb25zdHJ1Y3Q7CisKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4odDMpICAgICAgICAgICAgLy8gcmV0dXJuUEMgPSBzYXZlZFJldHVyblBD
PHQzPjsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAg
ICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOwor
ICAgIGVsc2lmIENfTE9PUAorICAgICAgICAvLyBTZXQgZ2xvYmFsRGF0YS50b3BDYWxsRnJhbWUg
PSBjdXJyZW50RnJhbWU7CisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xv
YmFsRGF0YTsKKyAgICAgICAgc3RvcmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVb
dDNdICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9wQ2FsbEZyYW1lID0gY2ZyOworICAgICAgICBt
bGFtRHVtcCBjZnIKKyAgICAgICAgbW92ZSB0MCwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc2F2ZWRDYWxsZXJGcmFtZTx0Mj4gPSBjYWxsZXJGcmFtZTx0MD47Cisg
ICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MykgICAgICAgICAgICAgIC8v
IHNhdmVkUmV0dXJuUEM8dDM+ID0gcmV0dXJuUEM7CisgICAgICAgIHN0b3JlcCB0MywgUmV0dXJu
UENbY2ZyXSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0Mz47Cisg
ICAgICAgIC8vIFBhc3MgY3VycmVudEZyYW1lIGFzIGFuIGFyZyB0byB0aGUgdGFyZ2V0OgorICAg
ICAgICBtb3ZlIGNmciwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
cmcwOiBhcmcwPHQwPiA9IGNmcjsKKyAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBy
MCA9IGN1cnJlbnRGcmFtZSwgY2ZyID0gb2xkRnJhbWU6IFdoeT8/PworICAgICAgICBsb2FkaSBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxICAgICAgICAgICAvLyBqc2Z1bmM8dDE+ID0g
Y2ZyLkNhbGxlZS5QYXlsb2FkOworICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVbdDFdLCB0MSAgICAgICAgICAvLyBhcmcxOiBleGVjdXRhYmxlPHQxPiA9IGpzZnVuYzx0MT4u
ZXhlY3V0YWJsZTsKKyAgICAgICAgbW92ZSB0MiwgY2ZyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gc2F2ZWRDYWxsZXJGcmFtZTx0Mj47CisgICAgICAgICMgbWxh
bSBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAgICAgICAgICAgICAvLyBjYWxs
IGV4ZWN1dGFibGU8dDE+LkNhbGxPckNvbnN0cnVjdDsKKyAgICAgICAgY3h4Q2FsbE5hdGl2ZSBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgLy8gY2FsbCBleGVjdXRhYmxlPHQxPi5D
YWxsT3JDb25zdHJ1Y3Q7CisKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1
cm4odDMpICAgICAgICAgICAgLy8gcmV0dXJuUEMgPSBzYXZlZFJldHVyblBDPHQzPjsKKyAgICAg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xv
YmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOwogICAgIGVsc2UgIAog
ICAgICAgICBlcnJvcgogICAgIGVuZAotICAgIGJpbmVxIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9u
ICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1ZVRhZywgLmV4Y2VwdGlvbgotICAgIHJldAorICAg
IGJpbmVxIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1
ZVRhZywgLmV4Y2VwdGlvbiAvLyBpZiAoZ2xvYmFsRGF0YTx0Mz4uZXhjZXB0aW9uLFRhZyAhPSBF
bXB0eVZhbHVlVGFnKSBnb3RvIC5leGNlcHRpb247CisgICAgcmV0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybjsKIC5leGNlcHRpb246CiAg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKSAjIFRoaXMgaXMgcmVhbGx5IG9u
bHkgbmVlZGVkIG9uIFg4NgotICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XSwgUEMKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDICAgICAg
ICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF90aHJvd19mcm9tX25hdGl2ZV9jYWxsKQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZQogZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTMzLDQ5ICszMyw3NyBAQCBjb25zdCBWYWx1ZVVuZGVmaW5l
ZCAgPSBUYWdCaXRUeXBlT3RoZXIgCiBjb25zdCBWYWx1ZU51bGwgICAgICAgPSBUYWdCaXRUeXBl
T3RoZXIKIAogIyBVdGlsaXRpZXMuCisKIG1hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCi0gICAgYWRk
cCBhZHZhbmNlLCBQQwotICAgIGptcCBbUEIsIFBDLCA4XQorICAgIGFkZHAgYWR2YW5jZSwgUEMg
ICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOworICAg
IGptcCBbUEIsIFBDLCA4XSAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogZW5kCiAKIG1hY3JvIGRpc3BhdGNoSW50KGFkdmFuY2UpCiAgICAgYWRkaSBhZHZhbmNlLCBQ
QwotICAgIGptcCBbUEIsIFBDLCA4XQorICAgIGptcCBbUEIsIFBDLCA4XSAgICAgICAgICAgICAg
ICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogZW5kCiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0
aW9uc1tQQl0sIFBCCi0gICAgam1wIFtQQiwgUEMsIDhdCisgICAgam1wIFtQQiwgUEMsIDhdICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiBlbmQKIAogbWFjcm8gY0Nh
bGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQotICAgIG1vdmUgYXJnMSwgdDUKLSAgICBtb3ZlIGFy
ZzIsIHQ0Ci0gICAgY2FsbCBmdW5jdGlvbgorICAgIGlmIFg4Nl82NAorICAgICAgICBtb3ZlIGFy
ZzEsIHQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAg
ICAgIG1vdmUgYXJnMiwgdDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMiA9
IC4uLjsKKyAgICAgICAgY2FsbCBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIEMgZnVuY3Rpb247CisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxT
bG93UGF0aCBmdW5jdGlvbiwgYXJnMSwgYXJnMgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKIGVuZAogCiAjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBw
cm9iYWJseSBiZSBpbW1lZGlhdGVzLgogbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KQotICAgIG1vdmUgYXJnMSwgdDUKLSAgICBtb3ZlIGFyZzIsIHQ0Ci0gICAg
bW92ZSBhcmczLCB0MQotICAgIG1vdmUgYXJnNCwgdDIKLSAgICBjYWxsIGZ1bmN0aW9uCisgICAg
aWYgWDg2XzY0CisgICAgICAgIG1vdmUgYXJnMSwgdDUKKyAgICAgICAgbW92ZSBhcmcyLCB0NAor
ICAgICAgICBtb3ZlIGFyZzMsIHQxCisgICAgICAgIG1vdmUgYXJnNCwgdDIKKyAgICAgICAgY2Fs
bCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBlcnJvcgorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKIGVuZAogCiBtYWNybyBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgp
CisgICAgIyBtbGFtIGlmIG5vdCBDX0xPT1AgIyBtbGFtCisgICAgIyAgICBsZWFwIFtQQiwgUEMs
IDhdLCBQQworICAgICMgICAgbW92ZSBQQiwgdDMKKyAgICAjIG1sYW0gZW5kCiAgICAgbGVhcCBb
UEIsIFBDLCA4XSwgUEMKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsZWEgW1BCLCBQQywgOF0gPT4g
UEMgJXBcbiIsIHJQQy51LnZwKTsKICAgICBtb3ZlIFBCLCB0MwogZW5kCiAKIG1hY3JvIHJlc3Rv
cmVTdGF0ZUFmdGVyQ0NhbGwoKQotICAgIG1vdmUgdDAsIFBDCi0gICAgbW92ZSB0MSwgY2ZyCisg
ICAgIyBtbGFtIGlmIG5vdCBDX0xPT1AgIyBtbGFtCisgICAgIyAgICBtb3ZlIHQwLCBQQyAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CisgICAgIyAgICBtb3Zl
IHQxLCBjZnIgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgorICAg
ICMgICAgbW92ZSB0MywgUEIKKyAgICAjICAgIHN1YnAgUEIsIFBDCisgICAgIyAgICB1cnNoaWZ0
cCAzLCBQQworICAgICMgbWxhbSBlbmQKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgcmVzdG9yZSBQ
QiAlcCBQQyAlcCA+Pj4gXG4iLCByQmFzZVBDLnUudnAsIHJQQy51LnZwKTsKKyAgICBtb3ZlIHQw
LCBQQyAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CisgICAg
bW92ZSB0MSwgY2ZyICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4K
ICAgICBtb3ZlIHQzLCBQQgorICAgIG1sYW1EbyAvLyBwcmludGYoIiByZXN0b3JlIFBCICVwIFBD
ICVwID4+PiBcbiIsIHJCYXNlUEMudS52cCwgclBDLnUudnApOwogICAgIHN1YnAgUEIsIFBDCiAg
ICAgdXJzaGlmdHAgMywgUEMKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgc3ViIFBCLCBQQyB8IHVy
c2hpZnQgMywgUEMgPT4gUEMgJXBcbiIsIHJQQy51LnZwKTsKIGVuZAogCiBtYWNybyBjYWxsU2xv
d1BhdGgoc2xvd1BhdGgpCkBAIC05OCwxMCArMTI2LDMwIEBAIGVuZAogCiAjIENhbGwgYSBzbG93
IHBhdGggZm9yIGNhbGwgY2FsbCBvcGNvZGVzLgogbWFjcm8gY2FsbENhbGxTbG93UGF0aChhZHZh
bmNlLCBzbG93UGF0aCwgYWN0aW9uKQorICAgICMgbW92ZSBBcmd1bWVudENvdW50LCB0MAorICAg
ICMgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBBcmd1bWVudENvdW50ID0+ICVwIFxuIiwgcjAu
dS52cCk7CisgICAgIyBhZGRpIFRhZ09mZnNldCwgY2ZyLCB0MAorICAgICMgbWxhbURvIC8vIHBy
aW50ZigiICAgVEVTVCBUYWdPZmZzZXRbY2ZyICVwXSA9PiAlcCBcbiIsIGNhbGxGcmFtZSwgcjAu
dS52cCk7CisgICAgIyBtb3ZlIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQsIHQwCisgICAgIyBt
bGFtRG8gLy8gcHJpbnRmKCIgICBURVNUIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQgPT4gJXAg
XG4iLCByMC51LnZwKTsKKyAgICAjIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XSwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgbW92ZSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2NmciAlcF0gPT4gJXAgXG4iLCBjYWxsRnJhbWUsIHIwLnUudnApOworICAg
ICMgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCB0MAorICAgICMgbWxhbURv
IC8vIHByaW50ZigiICAgVEVTVCBsb2FkIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyICVw
XSA9PiAlcCBcbiIsIGNhbGxGcmFtZSwgcjAudS52cCk7CisgICAgIyBtb3ZlIENhbGxlckZyYW1l
LCB0MAorICAgICMgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBDYWxsZXJGcmFtZSA9PiAlcCBc
biIsIHIwLnUudnApOworICAgICMgbW92ZSBDYWxsZXJGcmFtZVtjZnJdLCB0MAorICAgICMgbWxh
bURvIC8vIHByaW50ZigiICAgVEVTVCBtb3ZlIENhbGxlckZyYW1lW2NmciAlcF0gPT4gJXAgXG4i
LCBjYWxsRnJhbWUsIHIwLnUudnApOworICAgICMgbG9hZGkgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAK
KyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgbG9hZCBDYWxsZXJGcmFtZVtjZnIgJXBd
ID0+ICVwIFxuIiwgY2FsbEZyYW1lLCByMC51LnZwKTsKKwogICAgIGFkZGkgYWR2YW5jZSwgUEMs
IHQwCisgICAgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBCRUZPUkUgY2ZyICVwIGNhbGxlckZy
YW1lICVwIFxuIiwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwogICAgIHN0
b3JlaSB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgbWxhbURvIC8vIHBy
aW50ZigiICAgVEVTVCBBRlRFUiBjZnIgJXAgY2FsbGVyRnJhbWUgJXAgXG4iLCBjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQog
ICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBB
RlRFUiBjQ2FsbDIgUEIgJXAgUEMgJXAgPj4+IFxuIiwgckJhc2VQQy51LnZwLCByUEMudS52cCk7
CiAgICAgbW92ZSB0MSwgY2ZyCiAgICAgYWN0aW9uKHQwKQogZW5kCkBAIC0xMjQsMjQgKzE3Miwz
MyBAQCBlbmQKIAogIyBJbmRleCBhbmQgdmFsdWUgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJz
LiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdmFsdWUpCisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9y
VmFyaWFibGVcbiIpOwogICAgIGJwZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsIC5jb25zdGFudAorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlIC52YXJpYWJsZVxuIik7CiAgICAgbG9hZHAgW2NmciwgaW5kZXgsIDhdLCB2YWx1
ZQorICAgIG1sYW1EdW1wIHZhbHVlCiAgICAgam1wIC5kb25lCiAuY29uc3RhbnQ6CisgICAgIyBt
bGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9yVmFyaWFibGUgLmNvbnN0YW50XG4i
KTsKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKICAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2YWx1ZQog
ICAgIHN1YnAgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIGluZGV4CiAgICAgbG9hZHAgW3Zh
bHVlLCBpbmRleCwgOF0sIHZhbHVlCisgICAgbWxhbUR1bXAgdmFsdWUKIC5kb25lOgorICAgICMg
bWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIC5kb25lXG4iKTsK
IGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoaW5kZXgsIHZhbHVlLCBz
bG93KQorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
SW50MzJcbiIpOwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHZhbHVlKQogICAg
IGJwYiB2YWx1ZSwgdGFnVHlwZU51bWJlciwgc2xvdwogZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKGluZGV4LCB2YWx1ZSwgc2xvdykKKyAgICAjIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxcbiIpOwogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoaW5kZXgsIHZhbHVlKQorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbDogdmFsdWUgJXAgdGFnTWFzayAlcFxuIiwgcjQudS52
cCwgdGFnTWFzay51LnZwKTsKICAgICBidHBueiB2YWx1ZSwgdGFnTWFzaywgc2xvdwogZW5kCiAK
QEAgLTE4MCw1OCArMjM3LDg2IEBAIGVuZAogCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9u
cwogCisvLyBieXRlY29kZTogZW50ZXIKKy8vCisvLyAgIEluaXRpYWxpemVzIGxvY2FsIHZhcmlh
YmxlcyB0byB1bmRlZmluZWQuIElmIHRoZSBjb2RlIGJsb2NrIHJlcXVpcmVzCisvLyAgIGFuIGFj
dGl2YXRpb24sIGVudGVyX3dpdGhfYWN0aXZhdGlvbiBpcyB1c2VkIGluc3RlYWQuCisvLyAgIFRo
aXMgb3Bjb2RlIGFwcGVhcnMgb25seSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4K
KwogX2xsaW50X29wX2VudGVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJsb2NrPiA9IGNmci5Db2Rl
QmxvY2sKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8
c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgYnRpeiB0MiwgLm9wRW50ZXJE
b25lCi0gICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAKKyAgICBidGl6IHQyLCAub3BFbnRlckRv
bmUgICAgICAgICAgICAgICAgICAgLy8gaWYgKG51bVZhcnM8dDI+ID09IDApIGdvdG8gLmRvbmU7
CisgICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAgICAgICAgICAgICAgICAgIC8vIGpzVW5kZWZp
bmVkPHQwPiA9IFVuZGVmaW5lZDsKIC5vcEVudGVyTG9vcDoKLSAgICBzdWJpIDEsIHQyCi0gICAg
c3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0KLSAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisgICAg
c3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbnVtVmFyczx0Mj4t
LTsKKyAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgLy8gICBjZnJb
bnVtVmFyczx0Mj5dID0ganNVbmRlZmluZWQ8dDA+OworICAgIGJ0aW56IHQyLCAub3BFbnRlckxv
b3AgICAgICAgICAgICAgICAgICAvLyBpZiAobnVtVmFyczx0Mj4gIT0gMCkgZ290byAubG9vcDsK
IC5vcEVudGVyRG9uZToKLSAgICBkaXNwYXRjaCgxKQorICAgIGRpc3BhdGNoKDEpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNv
ZGU6IGNyZWF0ZV9hY3RpdmF0aW9uIGRzdChyKQorLy8KKy8vICAgSWYgdGhlIGFjdGl2YXRpb24g
b2JqZWN0IGZvciB0aGlzIGNhbGxmcmFtZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAg
IHRoaXMgY3JlYXRlcyBpdCBhbmQgd3JpdGVzIGl0IGJhY2sgdG8gZHN0LgogCiBfbGxpbnRfb3Bf
Y3JlYXRlX2FjdGl2YXRpb246CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpcyA4W1BC
LCBQQywgOF0sIHQwCi0gICAgYnBuZXEgW2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVh
dGVBY3RpdmF0aW9uRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0
ZV9hY3RpdmF0aW9uKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0MD4gPSBvcGVyYW5kPGRzdFJlZ0lk
PjsKKyAgICBicG5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFjdGl2YXRp
b25Eb25lIC8vIGlmIChjZnJbYWN0aXZhdGlvblJlZzx0MD5dICE9IEVtcHR5KSBnb3RvIC5kb25l
OworICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKSAg
ICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb247CiAub3BDcmVhdGVBY3Rp
dmF0aW9uRG9uZToKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CiAKKy8vIGJ5dGVjb2RlOiBpbml0X2xhenlfcmVnIGRzdChyKQorLy8KKy8vICAgSW5pdGlhbGlz
ZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0
IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgogCiBfbGxpbnRfb3BfaW5pdF9sYXp5X3Jl
ZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAg
ICBzdG9yZXAgVmFsdWVFbXB0eSwgW2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZDxk
c3RSZWdJZD47CisgICAgc3RvcmVwIFZhbHVlRW1wdHksIFtjZnIsIHQwLCA4XSAgICAgLy8gY2Zy
W2RzdDx0MD5dID0gRW1wdHk7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBjcmVhdGVfYXJndW1l
bnRzIGRzdChyKQorLy8KKy8vICAgQ3JlYXRlcyB0aGUgJ2FyZ3VtZW50cycgb2JqZWN0IGFuZCBw
bGFjZXMgaXQgaW4gYm90aCB0aGUKKy8vICAgJ2FyZ3VtZW50cycgY2FsbCBmcmFtZSBzbG90IGFu
ZCB0aGUgbG9jYWwgJ2FyZ3VtZW50cycKKy8vICAgcmVnaXN0ZXIsIGlmIGl0IGhhcyBub3QgYWxy
ZWFkeSBiZWVuIGluaXRpYWxpc2VkLgogCiBfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBicG5l
cSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQorICAgIGxvYWRp
cyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
PHQwPiA9IG9wZXJhbmQ8ZHN0UmVnSWQ+OworICAgIGJwbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVF
bXB0eSwgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XSAhPSBFbXB0
eSkgZ290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKSAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHM7CiAu
b3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG9wX2NyZWF0ZV90aGlzIHRoaXMocikgcHJvdG8o
cikKKy8vCisvLyAgIEFsbG9jYXRlIGFuIG9iamVjdCBhcyAndGhpcycsIGZvciB1c2UgaW4gY29u
c3RydWN0aW9uLgorLy8gICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgogCiBfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MAotICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MgotICAgIGJ0cHogdDIsIC5vcENy
ZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoaXM8dDA+ID0gY2ZyLkNhbGxlZTsKKyAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIgICAgICAgLy8gaW5oZXJpdG9yPHQyPiA9
IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOworICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNT
bG93ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoaW5oZXJpdG9yID09IDApIGdvdG8g
LnNsb3c7CisgICAgLy8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwganNGaW5hbE9iamVjdC5jbGFzcywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRo
aXNTbG93KTsKICAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdykKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQotICAg
IHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaXMgOFtQ
QiwgUEMsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpc0lEPHQxPiA9
IG9wZXJhbmQ8dGhpc1JlZ0lkPjsKKyAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3RoaXNJRDx0MT5dID0gdGhpczx0MD47CisgICAg
ZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykgICAgICAgICAgLy8gY2FsbCBz
bG93X3BhdGhfY3JlYXRlX3RoaXM7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRf
b3BfY29udmVydF90aGlzOgpAQCAtMjcxLDkgKzM1NiwxNiBAQCBfbGxpbnRfb3BfbW92OgogICAg
IGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwg
dDIpCiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwgOF0KKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIg
KioqIFNUT1JFIGNmclt0MCAlbGQgKiA4ID09PiAlbGRdID0gdDIgJXBcbiIsIHIwLnUuaSwgcjAu
dS5pICogOCwgcjIudS52cCk7CiAgICAgZGlzcGF0Y2goMykKIAogCisvLyBieXRlY29kZTogbm90
IGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3Jj
cmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0ZXIgc3JjIChj
b252ZXJ0ZWQgdG8KKy8vICAgYm9vbGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0
ZXIgZHN0LgorCiBfbGxpbnRfb3Bfbm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2Fk
aXMgMTZbUEIsIFBDLCA4XSwgdDAKQEAgLTM1MywyNSArNDQ1LDQ0IEBAIF9sbGludF9vcF9uZXFf
bnVsbDoKIG1hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGF0aCkKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQwCisgICAgbWxhbUR1
bXAgdDAKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDIKKyAgICBtbGFtRHVtcCB0MgorICAg
IG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVxIEJFRk9SRSBsb2FkaW5nIHQxXG4iKTsKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJp
Y3RFcSBBRlRFUiBsb2FkaW5nIHQxXG4iKTsKKyAgICBtbGFtRHVtcCB0MQorICAgIG1sYW1EbyAv
LyBwcmludGYoInN0cmljdEVxIEJFRk9SRSBsb2FkaW5nIHQwXG4iKTsKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MCkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSBBRlRF
UiBsb2FkaW5nIHQwXG4iKTsKKyAgICBtbGFtRHVtcCB0MAogICAgIG1vdmUgdDAsIHQyCiAgICAg
b3JwIHQxLCB0MgorICAgIG1sYW1EdW1wIHQyCiAgICAgYnRweiB0MiwgdGFnTWFzaywgLnNsb3cK
KyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSAuUzEgdDIgJiB0YWdNYXNrICE9IDBcbiIp
OwogICAgIGJwYWVxIHQwLCB0YWdUeXBlTnVtYmVyLCAubGVmdE9LCisgICAgbWxhbURvIC8vIHBy
aW50Zigic3RyaWN0RXEgLlMyIHQwIDwgdGFnVHlwZU51bWJlclxuIik7CiAgICAgYnRwbnogdDAs
IHRhZ1R5cGVOdW1iZXIsIC5zbG93CisgICAgbWxhbURvIC8vIHByaW50Zigic3RyaWN0RXEgLlMz
IHQwICYgdGFnVHlwZU51bWJlciA9PSAwXG4iKTsKIC5sZWZ0T0s6CisgICAgbWxhbURvIC8vIHBy
aW50Zigic3RyaWN0RXEgLmxlZnRPS1xuIik7CiAgICAgYnBhZXEgdDEsIHRhZ1R5cGVOdW1iZXIs
IC5yaWdodE9LCiAgICAgYnRwbnogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAucmlnaHRPSzoK
KyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSAucmlnaHRPS1xuIik7CisgICAgbWxhbUR1
bXAgcjAKKyAgICBtbGFtRHVtcCByMQogICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDAp
CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAgICBtbGFtRHVtcCB0MQogICAgIG9ycCBW
YWx1ZUZhbHNlLCB0MAorICAgIG1sYW1EdW1wIHQwCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwg
OF0KICAgICBkaXNwYXRjaCg0KQogCiAuc2xvdzoKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJp
Y3RFcSAuc2xvd1xuIik7CiAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGRpc3BhdGNo
KDQpCiBlbmQKQEAgLTQ4Niw1NSArNTk3LDc1IEBAIF9sbGludF9vcF9uZWdhdGU6CiAKIAogbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9w
ZXJhdGlvbiwgc2xvd1BhdGgpCi0gICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQwCi0gICAgbG9h
ZGlzIDE2W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgYnBiIHQwLCB0YWdUeXBl
TnVtYmVyLCAub3AxTm90SW50Ci0gICAgYnBiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AyTm90SW50
Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKLSAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3Rv
cmUodDEsIHQwLCAuc2xvdywgdDIpCi0gICAgZGlzcGF0Y2goNSkKKyAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgKioqIG1sYW0gYmluYXJ5T3BDdXN0b21TdG9yZVxuIik7CisgICAgbG9hZGlzIDI0W1BC
LCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0MD4gPSBv
cGVyYW5kc1tzcmMyUmVnSWRdOworICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDI+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSkgICAgICAgICAgICAgICAgICAgICAg
Ly8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDA+ID09PiBzcmMyPHQxPik7CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApICAgICAgICAgICAgICAgICAgICAgIC8vIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc3JjMUlkPHQyPiA9PT4gc3JjMTx0MD4pOworICAgIG1sYW1E
byAvLyBwcmludGYoIiBtbGFtIDo6IHNyYzE8dDA+ICVwIHNyYzI8dDE+ICVwXG4iLCByMC51LnZw
LCByMS51LnZwKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxhbSA6OiBiaW5hcnlPcEN1c3Rv
bVN0b3JlIDEgfCB0YWdUeXBlTnVtYmVyICVwXG4iLCB0YWdUeXBlTnVtYmVyLnUudnApOworICAg
IGJwYiB0MCwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludCAgICAgICAgICAgICAgICAgICAvLyBp
ZiAoc3JjMTx0MD4gaXMgTk9UIEludCkgZ290byAub3AxTm90SW50OworICAgIGJwYiB0MSwgdGFn
VHlwZU51bWJlciwgLm9wMk5vdEludCAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4g
aXMgTk9UIEludCkgZ290byAub3AyTm90SW50OworCisgICAgLy8gb3AxIGFuZCBvcDIgYXJlIGlu
dDMyOiBkbyBmYXN0IGludDMyIG9wZXJhdGlvbiwgYW5kIGVuZC4KKyAgICBsb2FkaXMgOFtQQiwg
UEMsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3Bl
cmFuZHNbZHN0UmVnSWRdOworICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MSwgdDAsIC5z
bG93LCB0MikgICAgICAgICAvLyB0MiA9IHQxIG9wZXJhdG9yIHQwOworICAgIG1sYW1EbyAvLyBw
cmludGYoIiAqKiogaW50IG9wIHIxID0gJWxkICglcCkgKyByMCAgJWxkICglcCkgPT0+IHIyICVs
ZCAoJXApXG4iLCByMS51LmksIHIxLnUudnAsIHIwLnUuaSwgcjAudS52cCwgcjIudS5pLCByMi51
LnZwKTsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3AxTm90SW50OgogICAgICMgRmlyc3Qg
b3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3Vs
ZCBiZSBhbnl0aGluZy4KLSAgICBidHB6IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwotICAgIGJw
YWVxIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AxTm90SW50T3AySW50Ci0gICAgYnRweiB0MSwgdGFn
VHlwZU51bWJlciwgLnNsb3cKLSAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0
MSwgZnQxCisgICAgLy8gb3AxIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgb3AyIGNvdWxkIGJl
IGFueXRoaW5nLgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLm9wMU5vdEludDpcbiIpOwor
ICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogYnRweiByMCA9ICVsZCAoJXApLCB0YWdUeXBlTnVt
YmVyICVsZCAoJXApOlxuIiwgcjAudS5pLCByMC51LnZwLCB0YWdUeXBlTnVtYmVyLnUuaSwgdGFn
VHlwZU51bWJlci51LnZwKTsKKyAgICBidHB6IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzE8dDA+IGlzIGNvbXBsZXggdHlwZSkgZ290byAu
c2xvdzsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGJwYWVxIHIxID0gJWxkICglcCksIHRh
Z1R5cGVOdW1iZXIgJWxkICglcCk6XG4iLCByMS51LmksIHIxLnUudnAsIHRhZ1R5cGVOdW1iZXIu
dS5pLCB0YWdUeXBlTnVtYmVyLnUudnApOworICAgIGJwYWVxIHQxLCB0YWdUeXBlTnVtYmVyLCAu
b3AxTm90SW50T3AySW50ICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4gPj0gdGFnVHlwZU51bWJl
cikgZ290byAub3AxTm90SW50T3AySW50OworICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5z
bG93ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4gaXMgY29tcGxleCB0eXBl
KSBnb3RvIC5zbG93OworICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHNyYzE8dDA+IGlzIGEg
ZG91YmxlLCBhbmQgc3JjMjx0MT4gaXMgYSBkb3VibGU6CisgICAgYWRkcCB0YWdUeXBlTnVtYmVy
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHQxICs9IHRhZ1R5cGVOdW1iZXI7
CisgICAgZnAyZCB0MSwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENvbnZlcnQgc3JjPHQxPiB0byBhIGRvdWJsZTxmdDE+OwogICAgIGptcCAub3AxTm90SW50
UmVhZHkKIC5vcDFOb3RJbnRPcDJJbnQ6Ci0gICAgY2kyZCB0MSwgZnQxCisgICAgbWxhbURvIC8v
IHByaW50ZigiICoqKiAub3AxTm90SW50T3AySW50OlxuIik7CisgICAgLy8gSWYgd2UgZ2V0IGhl
cmUsIHRoZW4gc3JjMTx0MD4gbXVzdCBiZSBhIGRvdWJsZSAob3AxIG5vdCBpbnQsIGFuZCBub3Qg
Y29tcGxleCB0eXBlKToKKyAgICBjaTJkIHQxLCBmdDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29udmVydCBzcmMyPHQxPiB0byBhIGRvdWJsZTxmdDE+OwogLm9w
MU5vdEludFJlYWR5OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLm9wMU5vdEludFJlYWR5
OlxuIik7CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKICAgICBhZGRwIHRhZ1R5cGVOdW1i
ZXIsIHQwCi0gICAgZnAyZCB0MCwgZnQwCisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiByMCA9
ICVsZCAoJXApOlxuIiwgcjAudS5pLCByMC51LnZwKTsKKyAgICBmcDJkIHQwLCBmdDAgIyBtbGFt
IEZJWE1FCisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBkMCA9ICVlLCBkMSA9ICVlXG4iLCBy
MC51LmksIHIxLnUudnApOwogICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBmZDJw
IGZ0MCwgdDAKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGQwID0gJWUsIGQxID0gJWVcbiIs
IHIwLnUuaSwgcjEudS52cCk7CisgICAgZmQycCBmdDAsIHQwICMgbWxhbSBGSVhNRQogICAgIHN1
YnAgdGFnVHlwZU51bWJlciwgdDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRp
c3BhdGNoKDUpCiAKIC5vcDJOb3RJbnQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAub3Ay
Tm90SW50OlxuIik7CiAgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0
aGUgc2Vjb25kIGlzIGRlZmluaXRlbHkgbm90LgogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQy
CiAgICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKICAgICBjaTJkIHQwLCBmdDAKICAg
ICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0MSwgZnQxCisgICAgZnAyZCB0MSwg
ZnQxICMgbWxhbSBGSVhNRQogICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBmZDJw
IGZ0MCwgdDAKKyAgICBmZDJwIGZ0MCwgdDAgIyBtbGFtIEZJWE1FCiAgICAgc3VicCB0YWdUeXBl
TnVtYmVyLCB0MAogICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goNSkK
IAogLnNsb3c6CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAuc2xvdzpcbiIpOwogICAgIGNh
bGxTbG93UGF0aChzbG93UGF0aCkKICAgICBkaXNwYXRjaCg1KQogZW5kCiAKIG1hY3JvIGJpbmFy
eU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAgbWxh
bURvIC8vIHByaW50ZigiIG1sYW0gYmluYXJ5T3BcbiIpOwogICAgIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCiAgICAgICAgICAg
ICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQpAQCAtNTQ2LDYgKzY3Nyw3IEBA
IGVuZAogCiBfbGxpbnRfb3BfYWRkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBtbGFtRG8g
Ly8gcHJpbnRmKCIgbWxhbSBvcF9hZGRcbiIpOwogICAgIGJpbmFyeU9wKAogICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCiAgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCkBAIC01ODQsMTUg
KzcxNiwzMCBAQCBfbGxpbnRfb3BfZGl2OgogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQogICAgICAgICAgICAgIyBBc3N1bWUgdDMgaXMgc2NyYXRjaGFibGUuCiAgICAg
ICAgICAgICBidGl6IGxlZnQsIHNsb3cKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAq
KiogbGVmdCBpcyBOT1QgMFxuIik7CiAgICAgICAgICAgICBiaW5lcSBsZWZ0LCAtMSwgLm5vdE5l
ZzJUd29UaGUzMURpdkJ5TmVnMQorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBs
ZWZ0IGlzIC0xXG4iKTsKICAgICAgICAgICAgIGJpZXEgcmlnaHQsIC0yMTQ3NDgzNjQ4LCAuc2xv
dworICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiByaWdodCBpcyBOT1QgLTIxNDc0
ODM2NDggWyVwXVxuIiwgKHZvaWQqKS0yMTQ3NDgzNjQ4KTsKKyAgICAgICAgICAgIG1sYW1EdW1w
IHJpZ2h0CiAgICAgICAgIC5ub3ROZWcyVHdvVGhlMzFEaXZCeU5lZzE6CisgICAgICAgICAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgKioqIC5ub3ROZWcyVHdvVGhlMzFEaXZCeU5lZzE6XG4iKTsKICAg
ICAgICAgICAgIGJ0aW56IHJpZ2h0LCAuaW50T0sKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogcmlnaHQgaXMgMFxuIik7CiAgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cK
KyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogbGVmdCA+PSAwXG4iKTsKICAgICAg
ICAgLmludE9LOgorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAuaW50T0s6XG4i
KTsKICAgICAgICAgICAgIG1vdmUgbGVmdCwgdDMKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogbGVmdCBpczpcbiIpOworICAgICAgICAgICAgbWxhbUR1bXAgdDMKICAgICAgICAg
ICAgIG1vdmUgcmlnaHQsIHQwCisgICAgICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIHJp
Z2h0IGlzOlxuIik7CisgICAgICAgICAgICBtbGFtRHVtcCB0MAogICAgICAgICAgICAgY2RxaQor
ICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAuY2RxaTpcbiIpOworICAgICAgICAg
ICAgbWxhbUR1bXAgdDAKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogZG9pbmcg
ZGl2OlxuIik7CiAgICAgICAgICAgICBpZGl2aSB0MwogICAgICAgICAgICAgYnRpbnogdDEsIHNs
b3cKICAgICAgICAgICAgIG9ycCB0YWdUeXBlTnVtYmVyLCB0MApAQCAtODA2LDYgKzk1Myw4IEBA
IG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICAjIG1sYW1EbyAvLyBtbGFtQnJl
YWsoInJlc29sdmVHbG9iYWwiLDAsMCk7CisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgICBtbGFt
IDo6IHJlc29sdmVHbG9iYWwoKXwgZ28tPnN0cnVjdHVyZTx0MT4gJXAsIHBjIGNhY2hlIHN0cnVj
dHVyZSA8JXA+ICVwXG4iLCByMS51LnZwLCByQmFzZVBDLnUuaThwICsgclBDLnUuaSAqIDggKyAy
NCwgKih2b2lkKiopKHJCYXNlUEMudS5pOHAgKyByUEMudS5pICogOCArIDI0KSk7CiAgICAgYnBu
ZXEgdDEsIDI0W1BCLCBQQywgOF0sIHNsb3cKICAgICBsb2FkaXMgMzJbUEIsIFBDLCA4XSwgdDEK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCkBAIC05NjMsMTMg
KzExMTIsMTggQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgIyB0byB0
YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0
aCwgd2hpY2ggaXMgd2hhdAogICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4K
ICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDAKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsb2Fk
aXMgMTZbUEIsIFBDLCA4XSwgdDAgPT0+IHQwICVsZCBbJXBdXG4iLCByMC51LmksIHIwLnUudnAp
OwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCisgICAgbWxhbURvIC8vIHByaW50ZigibG9h
ZGlzIDMyW1BCLCBQQywgOF0sIHQxID09PiB0MSAlbGQgWyVwXVxuIiwgcjEudS5pLCByMS51LnZw
KTsKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93
KQorICAgIG1sYW1EbyAvLyBwcmludGYoImxvYWRWYXIgdDAgPT0+IHQzICVsZCBbJXBdXG4iLCBy
NC51LmksIHI0LnUudnApOwogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MgorICAgIG1sYW1E
byAvLyBwcmludGYoIiAqKiogYWJvdXQgdG8gY2FsbCBnZXRQcm9wZXJ0eVN0b3JhZ2U6XG4iKTsK
ICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAg
ICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIG1sYW1EbyAv
LyBwcmludGYoIiAqKiogY29udGludWF0aW9uOiB0MyAlcCB0MSAlcFxuIiwgcjQudS52cCwgcjEu
dS52cCk7CiAgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93CiAgICAgICAgICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQogICAgICAg
ICAgICAgbG9hZHAgW3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCkBAIC05ODUsNiArMTEz
OSw3IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogZW5kCiAKIF9sbGludF9v
cF9nZXRfYnlfaWQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBsbGludF9vcF9nZXRfYnlf
aWRcbiIpOwogICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIApAQCAtMTI5MywxMCAr
MTQ0OCwxMCBAQCBtYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAub3Ax
Tm90SW50T3AyTm90SW50OgogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAgICAg
YWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorICAgIGZwMmQgdDEsIGZ0
MSAjIG1sYW0gRklYTUUKIC5vcDFOb3RJbnRSZWFkeToKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIs
IHQwCi0gICAgZnAyZCB0MCwgZnQwCisgICAgZnAyZCB0MCwgZnQwICMgbWxhbSBGSVhNRQogICAg
IGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQogICAgIGRpc3BhdGNoKDQpCiAK
QEAgLTEzMDQsNyArMTQ1OSw3IEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJs
ZUNvbXAKICAgICBjaTJkIHQwLCBmdDAKICAgICBidHB6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xv
dwogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBmcDJkIHQxLCBmdDEKKyAgICBmcDJk
IHQxLCBmdDEgIyBtbGFtIEZJWE1FCiAgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBU
YXJnZXQpCiAgICAgZGlzcGF0Y2goNCkKIApAQCAtMTMyMiwxMyArMTQ3NywxNiBAQCBfbGxpbnRf
b3Bfc3dpdGNoX2ltbToKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBsb2FkaXMg
OFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQorICAg
IG1sYW1EdW1wIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFi
bGUsIHQzICAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKICAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYnBiIHQxLCB0
YWdUeXBlTnVtYmVyLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICAjIG1sYW0gbWxhbUJyZWFrCiAg
ICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQxCisgICAgbWxhbUR1bXAgdDEKICAg
ICBiaWFlcSB0MSwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9m
ZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZHAgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKICAgICBsb2Fk
aXMgW3QzLCB0MSwgNF0sIHQxCkBAIC0xMzk0LDI2ICsxNTUyLDQ1IEBAIF9sbGludF9vcF9uZXdf
ZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxs
TGlua0luZm8pCisgICAgaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxKU0Z1bmN0aW9uIExMSW50
Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtjYWxsTGlua0luZm9dICAgICAvLyBjYWxs
IGNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICBlbHNlCisgICAgICAgIGNhbGwg
TExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10gICAgIC8v
IGNhbGwgY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0OworICAgICAgICAvLyBSZWxvYWQg
dGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKKyAg
ICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKKyAgICAgICAg
ZGlzcGF0Y2hBZnRlckNhbGwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGlzcGF0Y2hBZnRlckNhbGwoKTsKKyAgICBlbmQKK2VuZAorCisKIG1hY3JvIGRvQ2Fs
bChzbG93UGF0aCkKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIGxvYWRwIDMyW1BC
LCBQQywgOF0sIHQxCi0gICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQy
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDMpCi0gICAgYnBuZXEgdDMsIHQyLCAu
b3BDYWxsU2xvdworICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGZ1bmNJZDx0MD4gPSBwY1sxXTsKKyAgICBsb2FkcCAzMltQ
QiwgUEMsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
TGlua0luZm88dDE+ID0gcGNbNF07CisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZVt0MV0sIHQyICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVlPHQyPiA9IGNhbGxMaW5rSW5m
bzx0MT4uY2FsbGVlOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWQoZnVuY0lkPHQwPiA9PT4gZnVuYzx0Mz4sIC4u
Lik7CisgICAgYnBuZXEgdDMsIHQyLCAub3BDYWxsU2xvdyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKGZ1bmM8dDM+ICE9IGNhbGxlZTx0Mj4gaS5lLiBpc0J5dGVjb2Rl
KCk/KSBnb3RvIC5zbG93OwogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MwotICAgIGFkZGkg
NiwgUEMKLSAgICBsc2hpZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIsIHQzCi0gICAgbG9hZHAgSlNG
dW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKLSAgICBzdG9yZXAgdDIsIENhbGxlZVt0M10K
LSAgICBzdG9yZXAgdDAsIFNjb3BlQ2hhaW5bdDNdCi0gICAgbG9hZGlzIDE2IC0gNDhbUEIsIFBD
LCA4XSwgdDIKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQot
ICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQotICAgIHN0b3JlaSB0MiwgQXJndW1lbnRD
b3VudCArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgbW92ZSB0MywgY2ZyCi0gICAgY2FsbCBMTElu
dENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCi0gICAgZGlzcGF0Y2hBZnRlckNh
bGwoKQorICAgIGFkZGkgNiwgUEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFBvaW50IFBDIHRvIHRoZSByZXR1cm4gYWRkcmVzcy4KKworICAgIC8v
IG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9IHNpemVv
ZiBjdXJyZW50IGZyYW1lOworICAgIGxzaGlmdGkgMywgdDMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBvZmZzZXQ8dDM+IDw8IDM7
CisgICAgYWRkcCBjZnIsIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbmV3RnJhbWU8dDM+ID0gb2Zmc2V0TXQzPiArIGNmcjsKKworICAgIC8vIElu
aXRpYWxpemUgdGhlIG5ld0ZyYW1lOgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFp
blt0Ml0sIHQwICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNhbGxlZTx0Mj4u
c2NvcGVDaGFpbjsKKyAgICBzdG9yZXAgdDIsIENhbGxlZVt0M10gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVlID0gY2FsbGVlPHQyPjsK
KyAgICBzdG9yZXAgdDAsIFNjb3BlQ2hhaW5bdDNdICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBuZXdGcmFtZTx0MD4uU2NvcGVDaGFpbiA9IHNjb3BlPHQwPjsKKyAgICBsb2Fk
aXMgMTYgLSA0OFtQQiwgUEMsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBudW1BcmdzPHQyPiA9IC4uLjsKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXSAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBw
YzsgLy8gU3Rhc2ggdGhlIHJldHVybiBQQy4KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0
M10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVy
RnJhbWUgPSBjZnI7CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNl
dFt0M10gICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkFyZ3VtZW50Q291bnQuUGF5bG9h
ZCA9IG51bUFyZ3M8dDI+OworICAgIG1vdmUgdDMsIGNmciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKKworICAgIC8v
IENhbGwgdGhlIHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0aG9kOgorICAgICMgbWxh
bSBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0gICAgICAgIC8v
IGNhbGwgY2FsbExpbmtJbmZvPHQxPi5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICAjIG1sYW0gZGlz
cGF0Y2hBZnRlckNhbGwoKQorICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0MSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2FsbFRhcmdldEZ1bmN0aW9uKGNhbGxMaW5rSW5mbzx0MT4p
OwogCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwoNiwgc2xvd1BhdGgpCkBAIC0x
NDU0LDYgKzE2MzEsNyBAQCBfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgogICAgIGxvYWRpcyA4
W1BCLCBQQywgOF0sIHQyCiAgICAgbG9hZHAgMTZbUEIsIFBDLCA4XSwgdDMKICAgICBzdG9yZXAg
dDAsIFtjZnIsIHQyLCA4XQorICAgIG1sYW1EdW1wIHQwCiAgICAgdmFsdWVQcm9maWxlKHQwLCB0
MykKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1ODQsMjMgKzE3
NjIsNTkgQEAgX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CiAKIG1hY3JvIG5h
dGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgIHN0b3Jl
cCAwLCBDb2RlQmxvY2tbY2ZyXQotICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEg
KyA4W3NwXSwgdDAKLSAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFtZVt0
MF0KLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MAotICAgIGxvYWRwIFNjb3BlQ2hhaW5b
dDBdLCB0MQotICAgIHN0b3JlcCB0MSwgU2NvcGVDaGFpbltjZnJdCi0gICAgcGVlayAwLCB0MQot
ICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXQotICAgIG1vdmUgY2ZyLCB0NSAgIyB0NSA9IHJk
aQotICAgIHN1YnAgMTYgLSA4LCBzcAotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0NCAjIHQ0ID0g
cnNpCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Q0XSwgdDEKLSAgICBtb3Zl
IHQwLCBjZnIgIyBSZXN0b3JlIGNmciB0byBhdm9pZCBsb2FkaW5nIGZyb20gc3RhY2sKLSAgICBj
YWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQotICAgIGFkZHAgMTYgLSA4LCBzcAot
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA4W3NwXSwgdDMKKworICAgIGlm
IFg4Nl82NCAjIG1sYW0KKyAgICAgICAgLy8gU2V0IGdsb2JhbERhdGEudG9wQ2FsbEZyYW1lID0g
Y3VycmVudEZyYW1lOworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhICsg
OFtzcF0sIHQwICAgICAvLyBnbG9iYWxEYXRhPHQwPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2Jh
bERhdGE7CisgICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3Qw
XSAgICAgIC8vIGdsb2JhbERhdGE8dDA+LnRvcENhbGxGcmFtZSA9IGNmcjsKKworICAgICAgICBs
b2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsZXJG
cmFtZTx0MD4gPSBjZnIuQ2FsbGVyRnJhbWU7CisgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bdDBd
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQxPiA9IGNhbGxlckZyYW1lPHQw
Pi5TY29wZUNoYWluOworICAgICAgICBzdG9yZXAgdDEsIFNjb3BlQ2hhaW5bY2ZyXSAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIuU2NvcGVDaGFpbiA9IHNjb3BlPHQxPjsKKworICAgICAgICBw
ZWVrIDAsIHQxCisgICAgICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0MT47CisgICAgICAgIG1vdmUgY2ZyLCB0NSAg
IyB0NSA9IHJkaQorICAgICAgICBzdWJwIDE2IC0gOCwgc3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBSZXNlcnZlIHN0YWNrIHNwYWNlLgorICAgICAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdDQgIyB0NCA9IHJzaSAgICAgICAgICAgICAgICAvLyBjYWxsZWU8dDQ+ID0gY2ZyLkNh
bGxlZTsKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Q0XSwgdDEgICAg
ICAgICAgLy8gZXhlY3V0YWJsZTx0MT4gPSBjYWxlZTx0ND4uZXhlY3V0YWJsZTsKKyAgICAgICAg
bW92ZSB0MCwgY2ZyICMgUmVzdG9yZSBjZnIgdG8gYXZvaWQgbG9hZGluZyBmcm9tIHN0YWNrICAv
LyBjZnIgPSBjYWxsZXJGcmFtZTx0MD47CisgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRv
RnVuY3Rpb25bdDFdICAgICAgICAgICAgIC8vIENhbGwgdGhlIGV4ZWN1dGFibGU7CisgICAgICAg
IGFkZHAgMTYgLSA4LCBzcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbGVh
c2Ugc3RhY2sgc3BhY2UuCisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEg
KyA4W3NwXSwgdDMgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xv
YmFsRGF0YTsKKworICAgIGVsc2lmIEFSTXY3CisgICAgICAgIGVycm9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisKKyAg
ICBlbHNpZiBDX0xPT1AKKyAgICAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2FsbGVyRnJhbWU8dDA+ID0gY2ZyLkNhbGxlckZyYW1lOworICAg
ICAgICBsb2FkcCBTY29wZUNoYWluW3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
Y29wZTx0MT4gPSBjYWxsZXJGcmFtZTx0MD4uU2NvcGVDaGFpbjsKKyAgICAgICAgc3RvcmVwIHQx
LCBTY29wZUNoYWluW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4g
PSBzY29wZTx0MT47CisKKyAgICAgICAgLy8gU2V0IGdsb2JhbERhdGEudG9wQ2FsbEZyYW1lID0g
Y3VycmVudEZyYW1lOworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDMgICAgICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2Jh
bERhdGE7CisgICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3Qz
XSAgICAgIC8vIGdsb2JhbERhdGE8dDM+LnRvcENhbGxGcmFtZSA9IGNmcjsKKworICAgICAgICBt
b3ZlIHQwLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZlZENh
bGxlckZyYW1lPHQyPiA9IGNhbGxlckZyYW1lPHQwPjsKKyAgICAgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKHQzKSAgICAgICAgICAgICAgLy8gc2F2ZWRSZXR1cm5QQzx0Mz4gPSBy
ZXR1cm5QQzsKKyAgICAgICAgc3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQzPjsKKyAgICAgICAgLy8gUGFzcyBjdXJyZW50
RnJhbWUgYXMgYW4gYXJnIHRvIHRoZSB0YXJnZXQ6CisgICAgICAgIG1vdmUgY2ZyLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzA6IGFyZzA8dDA+ID0gY2ZyOwor
ICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHIwID0gY3VycmVudEZyYW1lLCBjZnIg
PSBvbGRGcmFtZTogV2h5Pz8/CisgICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGpzZnVuYzx0MT4gPSBjZnIuQ2FsbGVlOworICAgICAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MSAgICAgICAgICAvLyBhcmcxOiBl
eGVjdXRhYmxlPHQxPiA9IGpzZnVuYzx0MT4uZXhlY3V0YWJsZTsKKyAgICAgICAgbW92ZSB0Miwg
Y2ZyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gc2F2ZWRDYWxs
ZXJGcmFtZTx0Mj47CisgICAgICAgIGN4eENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVu
Y3Rpb25bdDFdICAgIC8vIGNhbGwgZXhlY3V0YWJsZTx0MT4uQ2FsbE9yQ29uc3RydWN0OworCisg
ICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQzKSAgICAgICAgICAgIC8v
IHJldHVyblBDID0gc2F2ZWRSZXR1cm5QQzx0Mz47CisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJh
bWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3Rh
Y2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5k
CisKICAgICBidHBueiBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvblt0M10sIC5leGNlcHRpb24KICAg
ICByZXQKKyAgICAKIC5leGNlcHRpb246CiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKHQxKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTEwLDIxICsxMTAs
MzYgQEAgZW5kCiAKICMgU29tZSBjb21tb24gdXRpbGl0aWVzLgogbWFjcm8gY3Jhc2goKQotICAg
IHN0b3JlaSB0MCwgMHhiYmFkYmVlZltdCi0gICAgbW92ZSAwLCB0MAotICAgIGNhbGwgdDAKKyAg
ICAvLyBtYWNybyBjcmFzaCgpIHsKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgY3h4Q3Jhc2gKKyAg
ICBlbHNlCisgICAgICAgIHN0b3JlaSB0MCwgMHhiYmFkYmVlZltdCisgICAgICAgIG1vdmUgMCwg
dDAKKyAgICAgICAgY2FsbCB0MAorICAgIGVuZAorICAgIC8vIH0gRU5EIGNyYXNoLgogZW5kCiAK
IG1hY3JvIGFzc2VydChhc3NlcnRpb24pCiAgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAvLyBt
YWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICAgICAgIGFzc2VydGlvbigub2spCiAgICAgICAg
IGNyYXNoKCkKICAgICAub2s6CisgICAgLy8gfSBFTkQgYXNzZXJ0LgogICAgIGVuZAogZW5kCiAK
KwogbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0
ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4KKyAgICBpZiBDX0xPT1AKKyAgICAg
ICAgIyBJbiBvdXIgY2FzZSwgd2UncmUgb25seSBwcmVzZXJ2aW5nIHRoZSBieXRlY29kZSB2UEMu
IAorICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgICAgIG1sYW1EbyAv
LyBwcmludGYoIiAgICoqKiBtbGFtIDo6IEdldHRpbmcgUmV0dXJuUEMgJXAgKioqXG4iLCByUmV0
VlBDLnUudnApOworICAgICAgICBtbGFtRG8gLy8gQVNTRVJUKHJSZXRWUEMudS52cCAhPSAwKTsK
KyAgICBlbHNpZiBBUk12NwogICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCiAg
ICAgZWxzaWYgWDg2IG9yIFg4Nl82NAogICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgpA
QCAtMTM0LDcgKzE0OSwxMyBAQCBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
ZGVzCiBlbmQKIAogbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNl
UmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4gICAgCisgICAgaWYgQ19M
T09QCisgICAgICAgICMgSW4gb3VyIGNhc2UsIHdlJ3JlIG9ubHkgcmVzdG9yaW5nIHRoZSBieXRl
Y29kZSB2UEMuIAorICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgICAgICBtbGFt
RG8gLy8gcHJpbnRmKCIgICAqKiogbWxhbSA6OiBTZXR0aW5nIFJldHVyblBDICVwICoqKlxuIiwg
clJldFZQQy51LnZwKTsKKyAgICAgICAgbWxhbURvIC8vIEFTU0VSVChyUmV0VlBDLnUudnAgIT0g
MCk7CisgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKICAg
ICBlbHNpZiBYODYgb3IgWDg2XzY0CiAgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKQEAgLTE1
NCw3ICsxNzUsMTMgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNsb3dQYXRoKQog
ICAgICAgICBhZHZhbmNlLAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgbWFjcm8gKGNhbGxl
ZSkKLSAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBpZiBDX0xPT1AKKyAgICAg
ICAgICAgICAgICBjeHhDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAv
LyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0
aGVyZToKKyAgICAgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAgZ290byAq
cGM7CiAgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAgICAgIGVuZCkKIGVuZApA
QCAtMTc3LDEzICsyMDQsMTQgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
IGVuZAogCiBtYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKLSAgICBhc3NlcnQobWFjcm8g
KG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorICAg
IGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCBvayBlbmQpIC8vIGFzc2VydChpbmRleDxhMD4gPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCk7CiBlbmQKIAogbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJl
Z2lzdGVyKQotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIG1sYW1CcmVhaworICAgIGxvYWRwIENhbGxl
ZVtjZnJdLCB0YXJnZXRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVlPHJl
Zz4gPSBjZnIuQ2FsbGVlOworICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyIC8vZXhlY3V0YWJsZTxyZWc+ID0gSlNGdW5jdGlv
bjxyZWc+LmV4ZWN1dGFibGU7CisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlciAvLyBjb2RlQmxvY2s8
cmVnPiA9IEZ1bmN0aW9uRXhlY3V0YWJsZTxyZWc+LmNvZGVCbG9ja0ZvckNhbGw7IAogZW5kCiAK
IG1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVy
KQpAQCAtMjA0LDMyICsyMzIsNDkgQEAgbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIo
c291cmNlUgogICAgICMgTm90aGluZyB0byBkbyEKIGVuZAogCisKICMgRG8gdGhlIGJhcmUgbWlu
aW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUg
Q29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1Iu
CiBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xv
d1BhdGgsIHRyYWNlU2xvd1BhdGgpCi0gICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHQyKQorICAgIG1sYW1EbyAvLyBwcmludGYoIlxuXG4gICA9PT09PT09PT09PT09PT09PT09PT09
PT09PSBcbiAgICoqKiBtbGFtIDo6IEluIHByb2xvZ3VlICoqKlxuIik7CisgICAgcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKSAgICAgICAgICAgICAgICAgIC8vIGdldCByZXR1cm5Q
Qzx0Mj47CiAgICAgCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdl
IHNob3VsZCBPU1IuCi0gICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgc3RvcmVwIHQy
LCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5Q
QyA9IDx0Mj47CiAgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKICAgICAgICAgY2FsbFNsb3dQYXRo
KHRyYWNlU2xvd1BhdGgpCiAgICAgZW5kCi0gICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGNv
ZGVCbG9ja0dldHRlcih0MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQg
Y29kZUJsb2NrPHQxPjsKICAgICBpZiBKSVRfRU5BQkxFRAogICAgICAgICBiYWRkaXMgNSwgQ29k
ZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBFeGVjdXRpb25Db3VudGVyOjptX2NvdW50
ZXJbdDFdLCAuY29udGludWUKICAgICAgICAgY0NhbGwyKG9zclNsb3dQYXRoLCBjZnIsIFBDKQor
CisgICAgICAgIG1sYW1EbyAvLyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAq
KiogcHJvbG9ndWUgKHVwZGF0ZSBmcmFtZSkiKTsKKyAgICAgICAgIyBVcGRhdGUgdGhlIGN1cnJl
bnRGcmFtZVBvaW50ZXI6CiAgICAgICAgIG1vdmUgdDEsIGNmcgorCisgICAgICAgICMgdDAgbXVz
dCBlaXRoZXIgYmUgMCBvciBwb2ludHMgdG8gZXhlY3V0YWJsZSBjb2RlIGUuZy4gSklUdGVkIGNv
ZGUuCisgICAgICAgICMgSWYgaXQgaXMgMCwgdGhlbiB3ZSBkb24ndCBoYXZlIGEgbmF0aXZlIGNv
ZGUgdGFyZ2V0IHRvIGV4ZWN1dGUuCisgICAgICAgICMgR28gcmVjb3ZlciBvdXIgc3RhdGUgYW5k
IHN0YXJ0IGludGVycHJldGluZyB0aGlzIGZ1bmN0aW9uLgogICAgICAgICBidHB6IHQwLCAucmVj
b3ZlcgorCisgICAgICAgICMgSWYgaXQgaXMgbm90IDAsIHRoZW4sIHdlIGhhdmUgYSBuYXRpdmUg
ZnVuY3Rpb24gdG8gY2FsbCAoSklUdGVkIG9yCisgICAgICAgICMgb3RoZXJ3aXNlKS4gRG8gYSB0
YWlsY2FsbCB0byB0aGUgdGFyZ2V0IGNvZGUuCiAgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0s
IHQyCiAgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQogICAgICAg
ICBqbXAgdDAKKworICAgICAgICAjIElmIHdlIGdldCBoZXJlLCB0aGVuIHRoZSBvc3IgbG9naWMg
aGFzIGRldGVybWluZWQgdGhhdCB0aGVyZSBpc24ndCBhbnkKKyAgICAgICAgIyBKSVR0ZWQgY29k
ZSB0byBpbnZva2UgYXQgdGhpcyB0aW1lLiAgUmVmZXRjaCB0aGUgY3VycmVudCBjb2RlYmxvY2sg
KGFzCisgICAgICAgICMgaXQgbWF5IGhhdmUgY2hhbmdlZCksIGFuZCBmYWxsIHRocnUgdG8gLmNv
bnRpbnVlIHRvIGdvIGludGVycHJldCB0aGUKKyAgICAgICAgIyBmdW5jdGlvbi4KICAgICAucmVj
b3ZlcjoKICAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKICAgICBl
bmQKICAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCiAgICAgCi0gICAgIyBTZXQgdXAgdGhlIFBDLgor
ICAgICMgU2V0IHVwIHRoZSBQQy4gIFRoZSBjYWxsZXIgd2lsbCBkaXNwYXRjaC9qdW1wIHRvIHRo
aXMgYnl0ZWNvZGUgUEMgYWRkci4KICAgICBpZiBKU1ZBTFVFNjQKICAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIFBCCiAgICAgICAgIG1vdmUgMCwgUEMKQEAgLTI4
MCw2ICszMjUsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2Fu
IGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKICAgICBsc2hp
ZnRpIDMsIHQwCiAgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIG1sYW1EbyAvLyBWTUluc3BlY3Rv
cjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAqKiogc3RhY2sgY2hlY2siKTsKICAgICBicGFlcSBJ
bnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAs
IC5zdGFja0hlaWdodE9LCiAKICAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVk
IHRvIGNhbGwgYSBzbG93X3BhdGguCkBAIC0yODksNyArMzM1LDcgQEAgZW5kCiAKIG1hY3JvIGFs
bG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1
Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKICAgICBpZiBBTFdB
WVNfQUxMT0NBVEVfU0xPVwotICAgICAgICBqbXAgc2xvd0Nhc2UKKyAgICAgICAgam1wIHNsb3dD
YXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAuc2xv
d0Nhc2U7CiAgICAgZWxzZQogICAgICAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0KICAg
ICAgICAgICAgIEpTR2xvYmFsRGF0YTo6aGVhcCArCkBAIC0zMDMsMzAgKzM0OSwzNyBAQCBtYWNy
byBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgICAgICBNYXJrZWRC
bG9jazo6RnJlZUxpc3Q6OmhlYWQKIAogICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBn
bG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KLSAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxE
YXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNj
cmF0Y2gxICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGE0PiA9IGNmci5Db2Rl
QmxvY2s7CisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwg
c2NyYXRjaDEgICAvLyAgIGdsb2JhbERhdGE8YTQ+ID0gY29kZUJsb2NrPGE0Pi5nbG9iYWxEYXRh
OwogICAgICAgICAKLSAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
ICAgCi0gICAgICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJl
ZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKLSAgICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisg
ICAgICAgIC8vIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAKKyAgICAgICAg
bG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFtzY3JhdGNo
MV0sIHJlc3VsdCAvLyAgIHJlc3VsdDxhMz4gPSBnbG9iYWxEYXRhPGE0Pi5NeVNpemVDbGFzcy5G
aXJzdEZyZWVDZWxsOworICAgICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBpZiAoIXJlc3VsdDxhMz4gaS5lLiBubyBmcmVlIGNlbGwp
IGdvdG8gLnNsb3dDYXNlOwogICAgICAgICAKLSAgICAgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBm
cm9tIHRoZSBmcmVlIGxpc3QuCi0gICAgICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgotICAg
ICAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0
RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgICAgIC8vIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhl
IGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgbmV4dDxhNT4gPSByZXN1bHQ8YTM+LnB0cjsKKyAgICAgICAg
c3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXSAvLyAgIGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNl
bGwgPSBuZXh0PGE1PjsKICAgICAKLSAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCi0g
ICAgICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCi0gICAgICAg
IHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KLSAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlND
ZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCi0gICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9v
dXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0
LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMiAgICAg
ICAgICAgLy8gICBjbGFzc0luZm88YTU+ID0gZ2xvYmFsRGF0YTxhND4uY2xhc3NJbmZvT2Zmc2V0
OworICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICByZXN1bHQ8YTM+LnB0ciA9IGNsYXNzSW5mbzxhNT47CisgICAgICAgIHN0b3Jl
cCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XSAgICAgICAvLyAgIHJlc3Vs
dDxhMz4uc3RydWN0dXJlID0gc3RydWN0dXJlPGEyPjsKKyAgICAgICAgc3RvcmVwIDAsIEpTT2Jq
ZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XSAgICAgIC8vICAgcmVzdWx0PGEzPi5vdXRP
ZkxpbmVTdG9yYWdlID0gMDsKICAgICBlbmQKIGVuZAogCiBtYWNybyBkb1JldHVybigpCi0gICAg
bG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIK
KyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IFBSSU5U
IGRvUmV0dXJuKCkgfCByZXR1cm5QQzx0Mj4gPSBjZnIuUmV0dXJuUEM7XG5cbiIpOworICAgIG1s
YW1EbyAvLyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkQuMSIp
OworICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcmV0dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDOworICAgIG1sYW1EbyAvLyBWTUlu
c3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkQuMiIpOworICAgIG1sYW1E
byAvLyByNC51LnZwID0gZnAudS52cDsgCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2Zy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSBjZnIuQ2FsbGVyRnJhbWU7Cisg
ICAgbWxhbURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUocjQudS5leGVjU3RhdGUsICJtbGFt
IEYuQS5ELjMiKTsKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKLSAg
ICByZXQKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShyNC51LmV4ZWNTdGF0
ZSwgIm1sYW0gRi5BLkQuNCIpOworICAgIG1sYW1EbyAvLyBwcmludGYoIm1sYW0gTExJTlQgZG9S
ZXR1cm5cbiIpOworICAgIHJldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZG8gcmV0dXJuOwogZW5kCiAKIApAQCAtMzM2LDE2ICszODksMjAg
QEAgX2xsaW50X2JlZ2luOgogCiAKIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIG1sYW1E
byAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiog
bWxhbSBfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZVxuXG4iKTsKICAgICBwcm9sb2d1ZShub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9l
bnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogCiAKIF9s
bGludF9ldmFsX3Byb2xvZ3VlOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50
ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfZXZhbF9wcm9sb2d1ZVxu
XG4iKTsKICAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQogCiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZToKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJcblxuID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09IFxuICAgKioqIG1sYW0gOjogSW4gbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUgKioqXG4iKTsKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRG
KSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENv
ZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2Fs
bCkKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDAp
CkBAIC0zNTMsNiArNDEwLDcgQEAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgog
ICAgIAogCiBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBtbGFt
RG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioq
IG1sYW0gX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWVcblxuIik7CiAgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQogLmZ1bmN0aW9uRm9y
Q29uc3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQpAQCAtMzYwLDEx
ICs0MTgsMTQgQEAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CiAgICAg
CiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBtbGFtRG8gLy8g
cHJpbnRmKCJcblxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09IFxuICAgKioqIG1sYW0gOjogSW4gbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2sgKioqXG4iKTsKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoq
KioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRl
ciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X3Nsb3dfcGF0
aF9jYWxsX2FyaXR5Q2hlY2spCiAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2s6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioq
KioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zv
cl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVj
dEJlZ2luLCBfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogCkBAIC00ODcs
NiArNTQ4LDcgQEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgogCiAKIG1hY3JvIHdpdGhJ
bmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24pCisgICAg
bWxhbURvIC8vIHByaW50ZigiICoqKiB3aXRoSW5saW5lU3RvcmFnZVxuIik7CiAgICAgIyBJbmRp
Y2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5IHN0b3JhZ2UsIGFuZCB0aGF0IHRo
ZQogICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBpcyB1bnVzZWQuCiAgICAgY29udGlu
dWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQpAQCAtNTM1LDYgKzU5Nyw3IEBAIF9sbGlu
dF9vcF9sb29wX2lmX3RydWU6CiAgICAgbm9wCiBfbGxpbnRfb3BfanRydWU6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFxuXG4i
KTsKICAgICBqdW1wVHJ1ZU9yRmFsc2UoCiAgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBi
dGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qdHJ1ZSkK
QEAgLTU0NCw2ICs2MDcsNyBAQCBfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKICAgICBub3AKIF9s
bGludF9vcF9qZmFsc2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIG1sYW1EbyAvLyBpZiAo
bWxhbV9QUklOVEYpIHByaW50ZigiXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09IFxuXG4iKTsKICAgICBqdW1wVHJ1ZU9yRmFsc2UoCiAgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAogICAgICAg
ICBfbGxpbnRfc2xvd19wYXRoX2pmYWxzZSkKQEAgLTU1OSw2ICs2MjMsMTMgQEAgX2xsaW50X29w
X2psZXNzOgogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2psZXNzKQogCiAKKy8vIGJ5dGVjb2Rl
OiBqbmxlc3Mgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCisvLworLy8gICBDaGVja3Mg
d2hldGhlciByZWdpc3RlciBzcmMxIGlzIGxlc3MgdGhhbiByZWdpc3RlciBzcmMyLCBhcworLy8g
ICB3aXRoIHRoZSBFQ01BU2NyaXB0ICc8JyBvcGVyYXRvciwgYW5kIHRoZW4ganVtcHMgdG8gb2Zm
c2V0CisvLyAgIHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLCBpZiBhbmQgb25s
eSBpZiB0aGUgCisvLyAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KKwogX2xs
aW50X29wX2pubGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY29tcGFyZSgKQEAgLTYz
OSw2ICs3MTAsMTUgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBkaXNwYXRjaCgzKQog
CiAKKy8vIGJ5dGVjb2RlOiBjYWxsIGZ1bmMocikgYXJnQ291bnQobikgcmVnaXN0ZXJPZmZzZXQo
bikKKy8vCisvLyAgIFBlcmZvcm0gYSBmdW5jdGlvbiBjYWxsLgorLy8gICAgICAgICAgIAorLy8g
ICByZWdpc3Rlck9mZnNldCBpcyB0aGUgZGlzdGFuY2UgdGhlIGNhbGxGcmFtZSBwb2ludGVyIHNo
b3VsZCBtb3ZlCisvLyAgIGJlZm9yZSB0aGUgVk0gaW5pdGlhbGl6ZXMgdGhlIG5ldyBjYWxsIGZy
YW1lJ3MgaGVhZGVyLgorLy8gICAgICAgICAgIAorLy8gICBkc3QgaXMgd2hlcmUgb3BfcmV0IHNo
b3VsZCBzdG9yZSBpdHMgcmVzdWx0LgorCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY2FsbCkKQEAgLTc2NCwxMCArODQ0
LDEyIEBAIF9sbGludF9vcF9kZWJ1ZzoKIAogCiBfbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZToKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioq
KioqKioqKioqKioqIG1sYW0gX2xsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmVcblxuIik7CiAg
ICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZlRXhlY3V0YWJsZTo6bV9mdW5jdGlvbikKIAog
CiBfbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lOgorICAgIG1sYW1EbyAvLyBpZiAo
bWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxp
bnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lXG5cbiIpOwogICAgIG5hdGl2ZUNhbGxUcmFt
cG9saW5lKE5hdGl2ZUV4ZWN1dGFibGU6Om1fY29uc3RydWN0b3IpCiAKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw1MDQgQEAKICNpbmNs
dWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+
CiAKKy8vIG1sYW0gQkVHSU4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTExpbnRTbG93
UGF0aHMuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworI2RlZmluZSBtbGFtX1BSSU5URjAgbWxhbV9QUklOVEYKKyNkZWZp
bmUgbWxhbV9QUklOVEYwX0RGIDAgLy8gbWxhbV9QUklOVEYKKwordXNpbmcgbmFtZXNwYWNlIEpT
Qzo6TExJbnQ7CisKKy8vIFRoZSBzaGFwZSBvZiBvcGNvZGVzCisvLyA9PT09PT09PT09PT09PT09
PT09PQorLy8gSW4gdGhlIExMSW50IHN5c3RlbSwgb3Bjb2RlcyBtYW5pZmVzdCBpbiB2YXJpb3Vz
IGZvcm1zIHRoYXQgd29yayB0b2dldGhlci4KKy8vIFRoZXNlIGZvcm1zIGFyZToKKy8vICAgMS4g
VGhlIGVudW1lcmF0aW9uCisvLyAgICAgID09PT09PT09PT09PT09PQorLy8gICAgICBCeXRlY29k
ZSBvcGNvZGVzIGFyZSBlbnVtZXJhdGVkIGFzIE9wY29kZUlEJ3MgaW4gYnl0ZWNvZGUvT3Bjb2Rl
LmgKKy8vCisvLyAgICAgIFRoZSBMTGludCB1c2VzIHNvbWUgaGVscGVyIGdsdWUgY29kZS4gIFdp
dGggdGhlIEMgbG9vcCBpbnRlcnByZXRlciwKKy8vICAgICAgd2UgbmVlZCB0byByZXByZXNlbnQg
dGhlc2UgaGVscGVyIGdsdWUgY29kZSBhcyBwc2V1ZG8gb3Bjb2RlIGhhbmRsZXJzCisvLyAgICAg
IGFzIHdlbGwgdG8gYWxsb3cgdXMgdG8gZW1wbG95IGEgdW5pZmllZCBkaXNwYXRjaCBtZWNoYW5p
c20gdG8gaW52b2tlCisvLyAgICAgIHRoZXNlIGhlbHBlcnMgYXMgd2UgZG8gd2l0aCBvcGNvZGUg
aGFuZGxlcnMuICBIZW5jZSwgd2l0aCB0aGUgQyBsb29wLAorLy8gICAgICB3ZSBhY2Nlc3MgbmVl
ZCB0byBwcmVzZW50IHRoZSBnbHVlIGNvZGUgYXMgcHNldWRvIG9wY29kZXMgYXMgd2VsbC4KKy8v
ICAgICAgVGhlc2UgYXJlIGVudW1lcmF0ZWQgYXMgTExpbnRPcGNvZGVJRCdzIGluIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaC4KKy8vCisvLyAgICAgIE5PVEU6IFRoZSBPcGNvZGVJRHMgYXJl
IHVzZWQgaW4gQ29kZUJsb2NrcyBnZW5lcmF0ZWQgYnkgdGhlCisvLyAgICAgIEJ5dGVjb2RlQ29t
cGlsZXIsIGJ1dCB0aGUgTExJbnRPcGNvZGVJRHMgbmV2ZXIgd2lsbC4gIExMSW50T3Bjb2RlSURz
CisvLyAgICAgIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGludGVybmFsIHBsdW1iaW5nIG9mIHRoZSBp
bnRlcnByZXRlci4KKy8vCisvLyAgIDIuIFRoZSBoYW5kbGVyCisvLyAgICAgID09PT09PT09PT09
CisvLyAgICAgIFVsdGltYXRlbHksIHRoZSBpbnRlcnByZXRlciBuZWVkcyB0byBkaXNwYXRjaCB0
byBzb21lIGhhbmRsZXIgY29kZSB0bworLy8gICAgICBleGVjdXRlIHRoZSBhY3Rpb25zIG9mIHRo
ZSBvcGNvZGUgKG9yIHBzZXVkbyBvcGNvZGUpLiAgVGhlIGhhbmRsZXJzCisvLyAgICAgIGFyZSBw
cmVzZW50ZWQgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6CisvLworLy8gICAgICBhLiBn
bG9iYWwgbGFiZWxzIHdoZW4gd2UgY2FuIHVzZSBjb21wdXRlZCBnb3Rvcy4KKy8vICAgICAgYi4g
Y2FzZSBzdGF0ZW1lbnRzIGluIGEgQyBzd2l0Y2ggd2hlbiB3ZSBjYW5ub3QgdXNlIGNvbXB1dGVk
IGdvdG9zLgorLy8KKy8vICAgICAgV2hlbiB1c2luZyB0aGUgQVNNIGxvb3AsIHdlIHdpbGwgdXNl
IGNvbXB1dGVkIGdvdG9zLiAgVGhlcmUgaXMgbm8KKy8vICAgICAgcmVhc29uIHRvIHVzZSBhIEMg
c3dpdGNoIHN0YXRlbWVudCBpbiB0aGF0IGNhc2UuCisvLworLy8gICAgICBXaGVuIHVzaW5nIHRo
ZSBDIGxvb3AsIHdlIHdpbGwgdXNlIG9uZSBvZiB0aGUgYWJvdmUgMiBmb3Jtcy4gIEluCisvLyAg
ICAgIGFkZGl0aW9uLCBMTEludCBoZWxwZXIgZ2x1ZSBjb2RlIGFyZSBhbHNvIHJlcHJlc2VudGVk
IGFzIGJ5dGVjb2RlCisvLyAgICAgIGhhbmRsZXJzIChjb3JyZXNwb25kaW5nIHRvIHRoZWlyIHJl
c3BlY3RpdmUgTExJbnRPcGNvZGVJRHMpLCBhbmQKKy8vICAgICAgaGVuY2UsIHdpbGwgYmUgcHJl
c2VudGVkIGluIG9uZSBvZiB0aGUgYWJvdmUgMiBmb3JtcyBhcyB3ZWxsLgorLy8KKy8vIEhvdyBh
cmUgdGhlIG9wY29kZSBmb3JtcyBuYW1lZD8KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorLy8gSGVyZSBpcyBhIHRhYmxlIHRvIHNob3cgZXhhbXBsZXMgb2YgaG93IGVhY2ggb2Yg
dGhlIG1hbmlmZXN0YXRpb24gb2YgdGhlCisvLyBvcGNvZGVzIGFyZSBuYW1lZDoKKy8vCisvLyAg
IFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2RlICAgICAgICAgICAgSGVscGVyCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09ICAgICAgICAgICAgPT09PT09
CisvLyAgIExMaW50IGxhYmVsczogICAgICAgICAgICAgICAgbGxpbnRfb3BfZW50ZXIgICAgbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZQorLy8gICBPcGNvZGUgZW51bWVyYXRpb246ICAgICAgICAgIG9w
X2VudGVyICAgICAgICAgIG9wX2xsaW50X3Byb2dyYW0gKGZvciBDIGxvb3Agb25seSkKKy8vCisv
LyAgIFVzaW5nIGEgc3dpdGNoIHN0YXRlbWVudCBkaXNwYXRjaDoKKy8vICAgICBPcGNvZGUgZGlz
cGF0Y2ggaGFuZGxlcnM6ICBjYXNlIG9wX2VudGVyOiAgICBjYXNlIG9wX2xsaW50X3Byb2dyYW1f
cHJvbG9ndWU6IChmb3IgQyBsb29wIG9ubHkpCisvLyAgIFVzaW5nIGNvbXB1dGVkIGdvdG8nczoK
Ky8vICAgICBPcGNvZGUgZGlzcGF0Y2ggaGFuZGxlcnM6ICBoYW5kbGVfb3BfZW50ZXI6ICBoYW5k
bGVfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZTogKGZvciBDIGxvb3Agb25seSkKKy8vCisvLyAgIExM
SW50IGdsdWUgaGVscGVyIGVudHJ5cG9pbnRzOgorLy8gICAgIEFTTSBsb29wIGdsdWUgZW50cnk6
ICAgICAgIE4vQSAgICAgICAgICAgICAgIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOwor
Ly8gICAgIEMgbG9vcCBnbHVlIGVudHJ5OiAgICAgICAgIE4vQSAgICAgICAgICAgICAgIE9wY29k
ZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlWzFdOworLy8KKworLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisvLyBEZWZpbmUgdGhlIG9wY29kZSBkaXNwYXRjaCBtZWNoYW5pc20gd2hlbiB1c2luZyB0aGUg
QyBsb29wOgorLy8KKworLy8gVGhlc2UgYXJlIGZvciBidWlsZGluZyBhIEMgTG9vcCBpbnRlcnBy
ZXRlcjoKKyNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4KKyNkZWZpbmUgT0ZGTElORV9BU01fRU5E
CisKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bjb2RlKSBERUZJTkVfT1BD
T0RFKG9wY29kZSkKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorICAgICNkZWZp
bmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChsYWJlbCkgIGxhYmVsOgorI2Vsc2UKKyAgICAjZGVm
aW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBjYXNlIGxhYmVsOiBsYWJlbDoKKyNl
bmRpZgorCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKGxhYmVsKSAgIGxhYmVsOgor
CisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCitzdGF0aWMgZG91YmxlIEludHMyRG91YmxlKHVpbnQzMl90IGxvLCB1aW50MzJfdCBo
aSkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkdmFsOworICAgICAgICB1aW50NjRf
dCBpdmFsNjQ7CisgICAgfSB1OworICAgIHUuaXZhbDY0ID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihoaSkgPDwgMzIpIHwgbG87CisgICAgcmV0dXJuIHUuZHZhbDsKK30KKyNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTMyXzY0KQorCit9IC8vIG5hbWVzcGFjZSBMTGludAorCisvLyBtbGFtIEJFR0lOIERF
QlVHIHV0aWxpdGllcy4gIERvIHdlIHdhbnQgdG8ga2VlcCB0aGVzZSBhcm91bmQgaW4gc29tZSBm
b3JtPworZXh0ZXJuIGNvbnN0IGNoYXIqIGdldEdsdWVMYWJlbE5hbWUoTExJbnRPcGNvZGVJRCBv
cGNvZGUpOworCisvLyBnZXRHbHVlTGFiZWxOYW1lKCkgaXMgVU5VU0VELiAgV2Ugb25seSBrZXB0
IGl0IG1vbWVudGFyaWx5IHNvIHRoYXQgSSBjYW4gY2FsbCBpdCBmcm9tIGdkYi4KK2NvbnN0IGNo
YXIqIGdldEdsdWVMYWJlbE5hbWUoTExJbnRPcGNvZGVJRCBvcGNvZGUpCit7CisjZGVmaW5lIENI
RUNLX0xMSU5UX05BVElWRV9IRUxQRVIoX19uYW1lKSAgICAgXAorICAgIGlmIChvcGNvZGUgPT0g
X19uYW1lKSByZXR1cm4gI19fbmFtZTsKKyAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVS
KENIRUNLX0xMSU5UX05BVElWRV9IRUxQRVIpCisjdW5kZWYgQ0hFQ0tfTExJTlRfTkFUSVZFX0hF
TFBFUgorCisgICAgLy8gbWxhbSBCRUdJTiBERUJVRyBvbmx5CisjZGVmaW5lIE9QQ09ERV9JRF9F
TlVNKF9fb3Bjb2RlLCBsZW5ndGgpIFwKKyAgICBpZiAob3Bjb2RlID09IF9fb3Bjb2RlKSByZXR1
cm4gI19fb3Bjb2RlOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkKKyN1
bmRlZiBPUENPREVfSURfRU5VTQorICAgIC8vIG1sYW0gRU5EIERFQlVHIG9ubHkKKworI2lmIDAK
KyAgICA7CisjZW5kaWYKKyAgICByZXR1cm4gIjxub3QgYSBnbHVlIGZ1bmN0aW9uPiI7CisKK30K
KworCit2b2lkIG1sYW1UcmFwKCkgeworICAgIHByaW50ZigibWxhbVRyYXBcbiIpOworfQorCit2
b2lkIG1sYW1CcmVhayhjb25zdCBjaGFyKiBjb21tZW50LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSkgeworICAgIGlmIChsaW5lIDwgMCkgeworICAgICAgICBtbGFtVHJhcCgpOworICAgIH0K
KyAgICBpZiAobWxhbV9QUklOVEYwKSBwcmludGYoIkF0IG1sYW0gYnJlYWtwb2ludDogJXMgQCAl
czolZFxuIiwgY29tbWVudCwgZmlsZSwgbGluZSk7Cit9CisvLyBtbGFtIEVORCBERUJVRworCitl
eHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludEJhZE5hdGl2ZVJldHVy
bigpOwordm9pZCBsbGludEJhZE5hdGl2ZVJldHVybigpCit7CisgICAgLy8gVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIHBvcHVsYXRlIHRoZSByZXR1cm4gUEMgb2YgdGhlIHNpbXVsYXRlZCBuYXRp
dmUKKyAgICAvLyBjYWxsIGZyYW1lLiAgV2Ugc2hvdWxkIG5ldmVyIHJldHVybiB0byBoZXJlIHdo
ZW4gdXNpbmcgdGhlIEMgTG9vcC4KKyAgICAvLyBIZW5jZSwgd2UnbGwgbWFrZSBzb21lIG5vaXNl
IHdpdGggYSBjcmFzaCBpZiBzb21lb25lIG1ha2VzIHRoYXQgbWlzdGFrZS4KKyAgICBDUkFTSCgp
OworfQorCitKU1ZhbHVlIEludGVycHJldGVyOjpsbGludENMb29wRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnRmlsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTEludE9wY29kZUlEIGJvb3Rz
dHJhcE9wY29kZUlkLCBMTEludDo6RGF0YSogbGxpbnREYXRhKSB7CisKKyAgICAjZGVmaW5lIENB
U1QgcmVpbnRlcnByZXRfY2FzdAorICAgICNkZWZpbmUgU0lHTl9CSVQzMih4KSAoeCAmIDB4ODAw
MDAwMDApCisKKyAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBvdXIgYWRkcmVzcyB0
YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQorICAgIC8vIGhlcmUgYmVjYXVzZSBvdXIg
bGFiZWxzIGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIChV
TkxJS0VMWShmbGFnID09IEluaXRpYWxpemVBbmRSZXR1cm4pKSB7CisgICAgICAgIGlmICghbGxp
bnREYXRhLT5pc0luaXRlZCgpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gbGxpbnREYXRhLT5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPQorICAgICAg
ICAgICAgICAgICAgICBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihsbGludF90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lKTsKKworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMp
CisgICAgICAgICAgICBPcGNvZGUqIG9wY29kZU1hcCA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7
CisgICAgICAgICAgICAjZGVmaW5lIE9QQ09ERV9FTlRSWShfX29wY29kZSwgbGVuZ3RoKSBcCisg
ICAgICAgICAgICAgICAgb3Bjb2RlTWFwW19fb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JiZfX29wY29kZSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZ
KQorICAgICAgICAgICAgI3VuZGVmIE9QQ09ERV9FTlRSWQorCisgICAgICAgICAgICAjZGVmaW5l
IExMSU5UX09QQ09ERV9FTlRSWShfX29wY29kZSkgXAorICAgICAgICAgICAgICAgIG9wY29kZU1h
cFtfX29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCYmX19vcGNvZGUpOworCisgICAgICAg
ICAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVSKExMSU5UX09QQ09ERV9FTlRSWSkKKyAg
ICAgICAgICAgICN1bmRlZiBMTElOVF9PUENPREVfRU5UUlkKKyNlbHNlCisgICAgICAgICAgICBV
TlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyNlbmRpZgorICAgICAgICAgICAgbGxpbnREYXRhLT5z
ZXRJc0luaXRlZCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
fQorCisgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmds
b2JhbERhdGEoKS50b3BDYWxsRnJhbWUgPT0gY2FsbEZyYW1lKTsKKworICAgIC8vIERlZmluZSB0
aGUgcHNldWRvIHJlZ2lzdGVycyB1c2VkIGJ5IHRoZSBMTElOVCBDIExvb3AgYmFja2VuZDoKKyAg
ICBzdHJ1Y3QgQ0xvb3BSZWdpc3RlciB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGlu
dHB0cl90IGk7CisgICAgICAgICAgICB1aW50cHRyX3QgdTsKKyAgICAgICAgICAgIGludDMyX3Qg
aTMyOworICAgICAgICAgICAgdWludDMyX3QgdTMyOworICAgICAgICAgICAgaW50OF90IGk4Owor
ICAgICAgICAgICAgdWludDhfdCB1ODsKKyAgICAgICAgICAgIGludDhfdCogaThwOworICAgICAg
ICAgICAgdm9pZCogdnA7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWNTdGF0ZTsKKyAgICAg
ICAgICAgIHZvaWQqIGluc3RydWN0aW9uOworICAgICAgICAgICAgTmF0aXZlRnVuY3Rpb24gbmF0
aXZlRnVuYzsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlkOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgICAgICBpbnQ2NF90IGk2NDsKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRKU1ZhbHVlOworICAgICAgICAgICAgZG91YmxlIGNhc3RUb0RvdWJsZTsKKyNlbmRp
ZgorICAgICAgICB9IHU7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ0xvb3BEb3VibGVSZWdpc3RlciB7
CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGRvdWJsZSBkOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgICAgICB2b2lkKiBjYXN0VG9Wb2lkUHRyOworI2VuZGlmCisgICAgICAgIH0g
dTsKKyAgICB9OworCisgICAgQ0xvb3BSZWdpc3RlciByMCwgcjEsIHIyLCByNDsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIENMb29wUmVnaXN0ZXIgckJhc2VQQywgdGFnVHlwZU51bWJlciwgdGFn
TWFzazsKKyNlbmRpZgorICAgIENMb29wUmVnaXN0ZXIgclJldFZQQzsKKyAgICBDTG9vcERvdWJs
ZVJlZ2lzdGVyIGQwLCBkMTsKKworICAgIC8vIEluc3RhbnRpYXRlIHRoZSBwc2V1ZG8gSklUIHN0
YWNrIGZyYW1lIHVzZWQgYnkgdGhlIExMSU5UIEMgTG9vcCBiYWNrZW5kOgorICAgIEpJVFN0YWNr
RnJhbWUgaml0U3RhY2tGcmFtZTsKKworICAgIEpJVFN0YWNrRnJhbWUqIGNvbnN0IHNwID0gJmpp
dFN0YWNrRnJhbWU7CisgICAgc3AtPmdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCk7CisKKyAgICAvLyBBbGlhcyBmb3IgZ2xvYmFsRGF0YSBwdHIgaW4gdGhlIEpJVFN0YWNrRnJh
bWU6CisgICAgSlNHbG9iYWxEYXRhKiAmZ2xvYmFsRGF0YSA9IHNwLT5nbG9iYWxEYXRhOworCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIElu
c3RydWN0aW9uKiB2UEM7CisKKyAgICAvLyByUEMgaXMgYW4gYWxpYXMgZm9yIHZQQy4gIFNldCB1
cCB0aGUgYWxpYXM6CisgICAgQ0xvb3BSZWdpc3RlciYgclBDID0gKkNBU1Q8Q0xvb3BSZWdpc3Rl
cio+KCZ2UEMpOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB2UEMgPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQorICAgIHZQ
QyA9IDA7CisgICAgckJhc2VQQy51LnZwID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOworCisgICAgLy8gRm9yIHRoZSBBU00gbGxpbnQsIEpJVFN0dWJzIHRha2VzIGNhcmUgb2Yg
dGhpcyBpbml0aWFsaXphdGlvbi4gIFdlIGRvCisgICAgLy8gaXQgaGVyZSBmb3IgdGhlIEMgbG9v
cDoKKyAgICB0YWdUeXBlTnVtYmVyLnUuaSA9IDB4RkZGRjAwMDAwMDAwMDAwMDsKKyAgICB0YWdN
YXNrLnUuaSA9IDB4RkZGRjAwMDAwMDAwMDAwMjsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQor
CisgICAgLy8gckZQIGlzIGFuIGFsaWFzIGZvciBjYWxsRnJhbWUuICBTZXQgdXAgdGhpcyBhbGlh
czoKKyAgICBDTG9vcFJlZ2lzdGVyJiBmcCA9ICpDQVNUPENMb29wUmVnaXN0ZXIqPigmY2FsbEZy
YW1lKTsKKworICAgIC8vIFNpbXVsYXRlIGEgbmF0aXZlIHJldHVybiBQQyB3aGljaCBzaG91bGQg
bmV2ZXIgYmUgdXNlZDoKKyAgICByUmV0VlBDLnUudnAgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludEJhZE5hdGl2ZVJldHVybik7CisKKyAgICAvLyBJbnRlcnByZXRlciB2YXJpYWJsZXMgZm9y
IHZhbHVlIHBhc3NpbmcgYmV0d2VlbiBvcGNvZGVzIGFuZC9vciBoZWxwZXJzOgorICAgIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMgPSAwOworICAgIEpTVmFsdWUgZnVuY3Rpb25SZXR1cm5WYWx1
ZTsKKyAgICBMTEludE9wY29kZSBvcGNvZGU7CisKKyAgICBib29sIG1sYW1QcmludCA9IGZhbHNl
OyAvLyBGb3IgREVCVUcgb25seS4gIENsZWFuIHVwIHBsZWFzZS4KKyAgICBVTlVTRURfUEFSQU0o
bWxhbVByaW50KTsKKworICAgIFVOVVNFRF9QQVJBTShyZWdGaWxlKTsgLy8gbWxhbSBGSVhNRSBS
RU1PVkUgdGhpcyBsYXRlci4KKworICAgIGlmIChib290c3RyYXBPcGNvZGVJZCAhPSBsbGludF91
bnVzZWQpIHsKKyAgICAgICAgb3Bjb2RlID0gTExJbnQ6OkRhdGE6OmdldE9wY29kZShib290c3Ry
YXBPcGNvZGVJZCk7CisgICAgfQorCisgICAgI2RlZmluZSBVUERBVEVfQllURUNPREVfT0ZGU0VU
KCkKKworICAgICNpZiBFTkFCTEUoT1BDT0RFX1NUQVRTKQorICAgICAgICAjZGVmaW5lIFJFQ09S
RF9PUENPREVfU1RBVFMoX19vcGNvZGUpIFwKKyAgICAgICAgICAgIE9wY29kZVN0YXRzOjpyZWNv
cmRJbnN0cnVjdGlvbihfX29wY29kZSkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIFJFQ09S
RF9PUENPREVfU1RBVFMoX19vcGNvZGUpCisgICAgI2VuZGlmCisKKyAgICAvLyogbWxhbSBPQlNP
TEVURQorICAgICNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAjZGVmaW5lIEZFVENIX09Q
Q09ERSgpIGJpdHdpc2VfY2FzdDxMTEludE9wY29kZT4odlBDLT51Lm9wY29kZSkKKyAgICAjZWxz
ZSAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAjZGVmaW5lIEZFVENIX09QQ09ERSgpICpiaXR3
aXNlX2Nhc3Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLnUuaThwICsgclBDLnUuaSAqIDgpCisgICAg
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgLy8qLworCisgICAgLy8qIG1sYW0gT0JTT0xF
VEUKKyAgICAjZGVmaW5lIE5FWFRfSU5TVFJVQ1RJT04oKSBcCisgICAgICAgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgb3Bjb2RlID0gRkVUQ0hfT1BDT0RFKCk7
IFwKKyAgICAgICAgICAgIERJU1BBVENIX09QQ09ERSgpOyAgICAgICBcCisgICAgICAgIH0gd2hp
bGUgKGZhbHNlKQorICAgIC8vICovCisKKyAgICAvLyBtbGFtIEJFR0lOIFRFU1QgY29kZSB1c2Vk
IGluIERFRklORV9PUENPREUKKyAgICAjaWYgbWxhbV9QUklOVEYwCisgICAgI2RlZmluZSBtbGFt
RHVtcE9wY29kZShfX29wY29kZSkgXAorICAgICAgICAgICAgLyogbWxhbSAqLyBwcmludGYoIiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOyAgIFwKKyAgICAgICAgICAgIC8qIG1s
YW0gKi8gcHJpbnRmKCIgPT09ICVzXG4iLCAjX19vcGNvZGUpOyAgIFwKKyAgICAgICAgICAgIC8q
IG1sYW0gKi8gcHJpbnRmKCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAg
ICAjZWxzZQorICAgICNkZWZpbmUgbWxhbUR1bXBPcGNvZGUoX19vcGNvZGUpCisgICAgI2VuZGlm
CisgICAgLy8gbWxhbSBFTkQgVEVTVAorCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTG9vcCBkaXNwYXRjaCBtZWNoYW5p
c20gdXNpbmcgY29tcHV0ZWQgZ290byBzdGF0ZW1lbnRzOgorCisgICAgI2RlZmluZSBESVNQQVRD
SF9PUENPREUoKSBnb3RvICpvcGNvZGUKKworICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShfX29w
Y29kZSkgXAorICAgICAgICBfX29wY29kZTogXAorICAgICAgICAgICAgbWxhbUR1bXBPcGNvZGUo
X19vcGNvZGUpIFwKKyAgICAgICAgICAgIFJFQ09SRF9PUENPREVfU1RBVFMoX19vcGNvZGUpOyBc
CisgICAgICAgICAgICBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CisKKyAgICAvLyBEaXNwYXRj
aCB0byB0aGUgY3VycmVudCBQQydzIGJ5dGVjb2RlOgorICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
KworI2Vsc2UgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgLy89PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyAgICAvLyBMb29wIGRpc3BhdGNoIG1lY2hhbmlzbSB1c2luZyBhIEMgc3dpdGNo
IHN0YXRlbWVudDoKKworICAgICNkZWZpbmUgRElTUEFUQ0hfT1BDT0RFKCkgZ290byBkaXNwYXRj
aE9wY29kZQorCisgICAgI2RlZmluZSBERUZJTkVfT1BDT0RFKF9fb3Bjb2RlKSBcCisgICAgICAg
IGNhc2UgX19vcGNvZGU6IFwKKyAgICAgICAgICAgIG1sYW1EdW1wT3Bjb2RlKF9fb3Bjb2RlKSBc
CisgICAgICAgICAgICBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKTsgXAorICAgICAgICAg
ICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOworCisgICAgLy8gRGlzcGF0Y2ggdG8gdGhlIGN1
cnJlbnQgUEMncyBieXRlY29kZToKKyAgICBkaXNwYXRjaE9wY29kZTo7CisgICAgc3dpdGNoIChv
cGNvZGUpCisKKyNlbmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKworICAg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNvZGUgaGFuZGxlcnM6CisgICAgeworICAg
ICAgICAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29u
dGFpbnMgYWxsIG9mIHRoZQorICAgICAgICAvLyBieXRlY29kZSBoYW5kbGVycyBmb3IgdGhlIGlu
dGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tCisgICAgICAgIC8vIExvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtLgorICAgICAgICAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKKyAgICAgICAg
Ly8gSW4gdGhlIEFTTSBsbGludCwgZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpIGlzIGEgcGllY2Ug
b2YgZ2x1ZQorICAgICAgICAvLyBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGUgSklUIChzZWUgZGZn
L0RGR09wZXJhdGlvbnMuY3BwKS4KKyAgICAgICAgLy8gV2Ugc2ltdWxhdGUgaXQgaGVyZSB3aXRo
IGEgcHNlZHVvLW9wY29kZSBoYW5kbGVyLgorICAgICAgICBPRkZMSU5FX0FTTV9HTFVFX0xBQkVM
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBB
U00gcGFydCBwb3BzIHRoZSBmcmFtZToKKyAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKKworICAgICAgICAgICAgLy8gVGhlIHBhcnQgaW4gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoKToKKyAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0
ID0gZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgICAgICAgICAgcjEudS5pID0gcmVzdWx0LnRhZygpOworICAgICAgICAgICAgcjAudS5p
ID0gcmVzdWx0LnBheWxvYWQoKTsKKyNlbHNlCisgICAgICAgICAgICByMC51LmVuY29kZWRKU1Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisjZW5kaWYKKyAgICAgICAgICAgIGdvdG8g
ZG9SZXR1cm5IZWxwZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBtbGFtIE9CU09MRVRFIE9G
RkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfY3RpT3BUaHJvd05vdENhdWdodCkKKyAgICAgICAg
T0ZGTElORV9BU01fR0xVRV9MQUJFTChjdGlPcFRocm93Tm90Q2F1Z2h0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobWxhbV9QUklOVEYwKSBwcmludGYoIlxuICAgKioqKioqKioqKiBtbGFt
IDo6IGN0aU9wVGhyb3dOb3RDYXVnaHRcblxuIik7CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uOworICAgICAgICB9CisKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKKyAgICBkZWZhdWx0OgorICAgICAgICBwcmludGYoIiBtbGFtIDo6IElsbGVnYWwg
b3Bjb2RlICVwXG4iLCAodm9pZCopb3Bjb2RlKTsKKyAgICAgICAgbWxhbUJyZWFrKCJJbGxlZ2Fs
IG9wY29kZSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIEFTU0VSVChmYWxzZSk7Cisj
ZW5kaWYKKworICAgIH0gLy8gRU5EIGJ5dGVjb2RlIGhhbmRsZXIgY2FzZXMuCisKKyAgICAvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgIC8vIEJ5dGVjb2RlIGhlbHBlcnM6CisKKyAgICBkb0NhbGxIZWxw
ZXI6IHsgICAgICAgIAorICAgICAgICBBU1NFUlQoISFyUmV0VlBDLnUudnApOyAvLyBtbGFtIFRF
U1QgcmV0dXJuUEMKKyAgICAgICAgRElTUEFUQ0hfT1BDT0RFKCk7CisKKyAgICB9IC8vIEVORCBk
b0NhbGxIZWxwZXIuCisKKyAgICBkb1JldHVybkhlbHBlcjogeworICAgICAgICBpZiAobWxhbV9Q
UklOVEYwX0RGKSBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAgPDw8IFBPUFBF
RCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQorCisgICAgICAgIEFTU0VSVCghIWNhbGxGcmFtZSk7
CisgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIHsKKyNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUocjEudS5pLCByMC51
LmkpOyAgLy8gcmV0dXJuaW5nIEpTVmFsdWUodGFnLCBwYXlsb2FkKTsKKyNlbHNlCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHIwLnUuZW5jb2RlZEpTVmFsdWUpOworI2VuZGlm
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgbm9ybWFsIEFTTSBsbGludCBjYWxsIGltcGxl
bWVudGF0aW9uIHJldHVybnMgdG8gdGhlIGNhbGxlciBhcworICAgICAgICAvLyByZWNvcmRlZCBp
biBsciwgYW5kIGNhbGxlciAgd291bGQgZmV0Y2ggdGhlIHJldHVybiBhZGRyZXNzIGZyb20KKyAg
ICAgICAgLy8gQXJndW1lbnRDb3VudC50YWcoKSAoc2VlIHRoZSBkaXNwYXRjaEFmdGVyQ2FsbCgp
IG1hY3JvIHVzZWQgaW4KKyAgICAgICAgLy8gdGhlIGNhbGxUYXJnZXRGdW5jdGlvbigpIG1hY3Jv
KS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRm9yIHRoZSBDIGxvb3AsIHdlIGRvbid0IGhhdmUg
dGhlIEpJVCBzdHViIHRvIHRoaXMgd29yayBmb3IgdXMuICBTbywKKyAgICAgICAgLy8gd2UgbmVl
ZCB0byBpbXBsZW1lbnQgdGhlIGVxdWl2YWxlbnQgb2YgZGlzcGF0Y2hBZnRlckNhbGwoKSBoZXJl
CisgICAgICAgIC8vIGJlZm9yZSBkaXNwYXRjaGluZyB0byB0aGUgUEMuCisKKyAgICAgICAgdlBD
ID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAvLyBCYXNlZCBvbiBMb3dMZXZlbEludGVycHJldGVyNjQuYXNtJ3MgZGlzcGF0Y2hBZnRlckNh
bGwoKToKKworICAgICAgICAvLyBXaGVuIHJldHVybmluZyBmcm9tIGEgbmF0aXZlIHRyYW1wb2xp
bmUgY2FsbCwgdW5saWtlIHRoZSBhc3NlbWJseQorICAgICAgICAvLyBMTEludCwgd2UgY2FuJ3Qg
c2ltcGx5IHJldHVybiB0byB0aGUgY2FsbGVyLiAgSW4gb3VyIGNhc2UsIHdlIGdyYWIKKyAgICAg
ICAgLy8gdGhlIGNhbGxlcidzIFZQQyBhbmQgcmVzdW1lIGV4ZWN1dGlvbiB0aGVyZS4gIEhvd2V2
ZXIsIHRoZSBjYWxsZXIncworICAgICAgICAvLyBWUEMgcmV0dXJuZWQgYnkgY2FsbEZyYW1lLT5j
dXJyZW50VlBDKCkgaXMgaW4gdGhlIGZvcm0gb2YgdGhlIHJlYWwKKyAgICAgICAgLy8gYWRkcmVz
cyBvZiB0aGUgdGFyZ2V0IGJ5dGVjb2RlLCBidXQgdGhlIDY0LWJpdCBMTEludCBpbnRlcnByZXRl
cgorICAgICAgICAvLyBleHBlY3RzIHRoZSBWUEMgdG8gYmUgYSBieXRlY29kZSBvZmZzZXQuICBI
ZW5jZSwgd2UgbmVlZCB0byBtYXAKKyAgICAgICAgLy8gaXQgYmFjayB0byBhIGJ5dGVjb2RlIG9m
ZnNldCBiZWZvcmUgd2UgZGlzcGF0Y2ggdmlhIHRoZSB1c3VhbAorICAgICAgICAvLyBkaXNwYXRj
aCBtZWNoYW5pc20gKE5FWFRfSU5TVFJVQ1RJT04oKSk6CisKKyAgICAgICAgY29kZUJsb2NrID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAg
ICAgIHJQQy51LnZwID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7CisgICAgICAgIHJQQy51Lmkg
PSByUEMudS5pOHAgLSByZWludGVycHJldF9jYXN0PGludDhfdCo+KGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgICAgIHJQQy51LmkgPj49IDM7CisKKyAgICAgICAgckJh
c2VQQy51LnZwID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCisKKyAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworCisgICAgfSAv
LyBFTkQgZG9SZXR1cm5IZWxwZXIuCisKKworICAgIC8vIEtlZXAgdGhlIGNvbXBpbGVyIGhhcHB5
IHNvIHRoYXQgaXQgZG9lc24ndCBjb21wbGFpbiBhYm91dCB1bnVzZWQKKyAgICAvLyBsYWJlbHMg
Zm9yIHRoZSBMTEludCBoZWxwZXJzOgorICAgICNkZWZpbmUgTExJTlRfT1BDT0RFX0VOVFJZKF9f
b3Bjb2RlKSBcCisgICAgICAgIFVOVVNFRF9QQVJBTSgmJl9fb3Bjb2RlKTsKKyAgICAgICAgRk9S
X0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihMTElOVF9PUENPREVfRU5UUlkpCisgICAgI3VuZGVm
IExMSU5UX09QQ09ERV9FTlRSWQorCisKKyAgICAjdW5kZWYgTkVYVF9JTlNUUlVDVElPTgorICAg
ICN1bmRlZiBERUZJTkVfT1BDT0RFCisgICAgI3VuZGVmIENIRUNLX0ZPUl9USU1FT1VUCisgICAg
I3VuZGVmIENBU1QKKyAgICAjdW5kZWYgU0lHTl9CSVQzMgorCit9IC8vIEludGVycHJldGVyOjps
bGludENMb29wRXhlY3V0ZSgpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZWxzZSAvLyAhRU5B
QkxFKExMSU5UX0NfTE9PUCkKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEZWZpbmUgdGhl
IG9wY29kZSBkaXNwYXRjaCBtZWNoYW5pc20gd2hlbiB1c2luZyBhbiBBU00gbG9vcDoKKy8vCisK
Ky8vIFRoZXNlIGFyZSBmb3IgYnVpbGRpbmcgYW4gaW50ZXJwcmV0ZXIgZnJvbSBnZW5lcmF0ZWQg
YXNzZW1ibHkgY29kZToKKyNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4gICBhc20gKAorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9FTkQgICAgICk7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKF9fb3Bjb2RlKSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGxpbnRfIyNfX29wY29kZSkK
KyNkZWZpbmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChfX29wY29kZSkgICBPRkZMSU5FX0FTTV9H
TE9CQUxfTEFCRUwoX19vcGNvZGUpCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZG
TElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKGxhYmVs
KSAiXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19Q
QVJBTShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgXAorICAg
ICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAorICAgIEhJREVf
U1lNQk9MKGxhYmVsKSAiXG4iICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZTUJPTF9TVFJJ
TkcobGFiZWwpICI6XG4iCisjZW5kaWYKKworI2RlZmluZSBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChsYWJlbCkgICBMT0NBTF9MQUJFTF9TVFJJTkcobGFiZWwpICI6XG4iCisKIC8vIFRoaXMgaXMg
YSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhl
IGFzc2VtYmx5IGNvZGUKIC8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20g
TG93TGV2ZWxJbnRlcnByZXRlci5hc20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisj
ZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDI3ICszMCwyOCBA
QAogCiAjaWYgRU5BQkxFKExMSU5UKQogCi0jaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAi
TExJbnRPcGNvZGUuaCIKKworCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAKICNkZWZpbmUg
TExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxs
aW50XyMjb3Bjb2RlKCk7CiAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wpOwogI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKIAotZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2JlZ2luKCk7Ci1leHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7Ci1leHRlcm4gIkMi
IHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2
YWxfcHJvbG9ndWUoKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUoKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaygpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2soKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2lu
dCgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xp
bmUoKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
KCk7Ci0KLS8vIE5hdGl2ZSBjYWxsIHRyYW1wb2xpbmVzCi1leHRlcm4gIkMiIHZvaWQgbGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X25hdGl2ZV9j
b25zdHJ1Y3RfdHJhbXBvbGluZSgpOworI2RlZmluZSBERUNMQVJFX0xMSU5UX05BVElWRV9IRUxQ
RVIobmFtZSkgZXh0ZXJuICJDIiB2b2lkIG5hbWUoKTsKKyAgICBGT1JfRUFDSF9MTElOVF9OQVRJ
VkVfSEVMUEVSKERFQ0xBUkVfTExJTlRfTkFUSVZFX0hFTFBFUikKKyN1bmRlZiBERUNMQVJFX0xM
SU5UX05BVElWRV9IRUxQRVIKKworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisK
Ky8vIG1sYW0gQkVHSU4gZGVidWcKK25hbWVzcGFjZSBKU0MgeworSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBtbGFtVHJhcCgpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBtbGFtQnJlYWsoY29uc3Qg
Y2hhciogY29tbWVudCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisvLyBtbGFtIEVORCBkZWJ1ZwogCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHdv
cmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksOCBAQCBkZWYgYXJtVjdMb3dlclJlZ2lzdGVyUmV1
c2UobGlzdCkKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4g
ImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0Iiwg
ImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCiAgICAgICAgICAgICAgICAgImNwZXEiLCAiY3Bu
ZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJj
cGx0IiwgImNwbHRlcSIsCi0gICAgICAgICAgICAgICAgInRpbyIsICJ0aXMiLCAidGl6IiwgInRp
bnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAidHBzIiwgInRweiIsICJ0
cG56IiwKKyAgICAgICAgICAgICAgICAjIG1sYW0gVU5VU0VEICJ0aW8iLCAidGlzIiwgInRpeiIs
ICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiLCAidHBvIiwgInRwcyIsICJ0cHoi
LCAidHBueiIsCisgICAgICAgICAgICAgICAgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0YnMiLCAi
dGJ6IiwgInRibnoiLCAidHBzIiwgInRweiIsICJ0cG56IiwKICAgICAgICAgICAgICAgICAiY2Jl
cSIsICJjYm5lcSIsICJjYmEiLCAiY2JhZXEiLCAiY2JiIiwgImNiYmVxIiwgImNiZ3QiLCAiY2Jn
dGVxIiwgImNibHQiLCAiY2JsdGVxIgogICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAyCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9k
ZS5vcGVyYW5kc1sxXQpAQCAtOTQwLDkgKzk0MSw5IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAg
ICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgogICAgICAgICAgICAgZW1pdEFybVY3
VGVzdChvcGVyYW5kcykKICAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbLTFd
LmFzbUxhYmVsfSIKLSAgICAgICAgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCi0gICAgICAg
ICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQotICAgICAgICAgICAgJGFzbS5wdXRzICJidnMg
I3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gImJ0
aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRBcm1WN1Rl
c3Qob3BlcmFuZHMpCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgJGFzbS5wdXRzICJidnMgI3tv
cGVyYW5kc1stMV0uYXNtTGFiZWx9IgogICAgICAgICB3aGVuICJidGlzIiwgImJ0cHMiLCAiYnRi
cyIKICAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCiAgICAgICAgICAgICAkYXNt
LnB1dHMgImJtaSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCkBAIC05ODIsOCArOTgzLDggQEAg
Y2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJsdCIpCiAgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiLCAiY2JsdGVxIgogICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKLSAgICAgICAgd2hlbiAidGlv
IiwgInRibyIsICJ0cG8iCi0gICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAi
dnMiKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRpbyIsICJ0Ym8iLCAidHBvIgorICAg
ICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCiAg
ICAgICAgIHdoZW4gInRpcyIsICJ0YnMiLCAidHBzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVz
dFNldChvcGVyYW5kcywgIm1pIikKICAgICAgICAgd2hlbiAidGl6IiwgInRieiIsICJ0cHoiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHdvcmtpbmcg
Y29weSkKQEAgLTkzLDkgKzkzLDE2IEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICBAYW5ub3Rh
dGlvbiA9IG5pbAogICAgICAgICBAY29kZU9yaWdpbiA9IG5pbAogICAgICAgICBAaW50ZXJuYWxD
b21tZW50ID0gbmlsCisgICAgICAgIEBzb3VyY2VJbnN0cnVjdGlvbiA9IG5pbAogICAgICAgICBy
ZXN1bHQKICAgICBlbmQKICAgICAKKyAgICAjIFB1dHMgYSBDIFN0YXRlbWVudCBpbiB0aGUgb3V0
cHV0IHN0cmVhbS4KKyAgICBkZWYgcHV0YygqbGluZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBz
dGF0ZSA9PSA6YXNtCisgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiICAgICIgKyBsaW5l
LmpvaW4oJycpLCBsYXN0Q29tbWVudCkpCisgICAgZW5kCisgICAgCiAgICAgZGVmIGZvcm1hdER1
bXAoZHVtcFN0ciwgY29tbWVudCwgY29tbWVudENvbHVtbnM9JHByZWZlcnJlZENvbW1lbnRTdGFy
dENvbHVtbikKICAgICAgICAgaWYgY29tbWVudC5sZW5ndGggPiAwCiAgICAgICAgICAgICAiJS0j
e2NvbW1lbnRDb2x1bW5zfXMgJXMiICUgW2R1bXBTdHIsIGNvbW1lbnRdCkBAIC0xNTEsNyArMTU4
LDExIEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICBAbnVtR2xvYmFsTGFiZWxzICs9IDEKICAg
ICAgICAgcHV0c05ld2xpbmVTcGFjZXJJZkFwcHJvcHJpYXRlKDpnbG9iYWwpCiAgICAgICAgIEBp
bnRlcm5hbENvbW1lbnQgPSAkZW5hYmxlTGFiZWxDb3VudENvbW1lbnRzID8gIkdsb2JhbCBMYWJl
bCAje0BudW1HbG9iYWxMYWJlbHN9IiA6IG5pbAotICAgICAgICBAb3V0cC5wdXRzKGZvcm1hdER1
bXAoIk9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTCgje2xhYmVsTmFtZX0pIiwgbGFzdENvbW1lbnQp
KQorICAgICAgICBpZiAvXEFsbGludF9vcF8vLm1hdGNoKGxhYmVsTmFtZSkKKyAgICAgICAgICAg
IEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wXyN7JH4u
cG9zdF9tYXRjaH0pIiwgbGFzdENvbW1lbnQpKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBA
b3V0cC5wdXRzKGZvcm1hdER1bXAoIk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwoI3tsYWJlbE5hbWV9
KSIsIGxhc3RDb21tZW50KSkKKyAgICAgICAgZW5kCiAgICAgICAgIEBuZXdsaW5lU3BhY2VyU3Rh
dGUgPSA6bm9uZSAjIEFmdGVyIGEgZ2xvYmFsIGxhYmVsLCB3ZSBjYW4gdXNlIGFub3RoZXIgc3Bh
Y2VyLgogICAgIGVuZAogICAgIApAQCAtMTcxLDYgKzE4MiwxNCBAQCBjbGFzcyBBc3NlbWJsZXIK
ICAgICAgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgogICAgIGVu
ZAogICAgIAorICAgIGRlZiBzZWxmLmNMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAg
ICIje2xhYmVsTmFtZX0iCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYuY0xvY2FsTGFiZWxS
ZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICAgICAiI3tsYWJlbE5hbWV9IgorICAgIGVuZAorICAg
IAogICAgIGRlZiBjb2RlT3JpZ2luKHRleHQpCiAgICAgICAgIGNhc2UgQGNvbW1lbnRTdGF0ZQog
ICAgICAgICB3aGVuIDpub25lCkBAIC0xOTYsNiArMjE1LDkgQEAgY2xhc3MgQXNzZW1ibGVyCiAg
ICAgZGVmIGFubm90YXRpb24odGV4dCkKICAgICAgICAgQGFubm90YXRpb24gPSB0ZXh0CiAgICAg
ZW5kCisgICAgZGVmIHNvdXJjZUluc3RydWN0aW9uKHRleHQpCisgICAgICAgIEBzb3VyY2VJbnN0
cnVjdGlvbiA9IHRleHQKKyAgICBlbmQKIGVuZAogCiBhc21GaWxlID0gQVJHVi5zaGlmdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlz
aW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRz
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTQgQEAgcmVxdWlyZSAiY29uZmlnIgog
cmVxdWlyZSAiYXJtdjciCiByZXF1aXJlICJhc3QiCiByZXF1aXJlICJ4ODYiCityZXF1aXJlICJj
bG9vcCIKIAogQkFDS0VORFMgPQogICAgIFsKICAgICAgIlg4NiIsCiAgICAgICJYODZfNjQiLAot
ICAgICAiQVJNdjciCisgICAgICJBUk12NyIsCisgICAgICJDX0xPT1AiCiAgICAgXQogCiAjIEtl
ZXAgdGhlIHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBi
YWNrZW5kcyB0aGF0IG1pZ2h0IGJlCkBAIC00Miw3ICs0NCw4IEBAIFdPUktJTkdfQkFDS0VORFMg
PQogICAgIFsKICAgICAgIlg4NiIsCiAgICAgICJYODZfNjQiLAotICAgICAiQVJNdjciCisgICAg
ICJBUk12NyIsCisgICAgICJDX0xPT1AiCiAgICAgXQogCiBCQUNLRU5EX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQpAQCAtNzYsMTIg
Kzc5LDE4IEBAIGNsYXNzIExhYmVsUmVmZXJlbmNlCiAgICAgZGVmIGFzbUxhYmVsCiAgICAgICAg
IEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKICAgICBlbmQKKyAgICBkZWYg
Y0xhYmVsCisgICAgICAgIEFzc2VtYmxlci5jTGFiZWxSZWZlcmVuY2UobmFtZVsxLi4tMV0pCisg
ICAgZW5kCiBlbmQKIAogY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQogICAgIGRlZiBhc21MYWJl
bAogICAgICAgICBBc3NlbWJsZXIubG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIitu
YW1lWzEuLi0xXSkKICAgICBlbmQKKyAgICBkZWYgY0xhYmVsCisgICAgICAgIEFzc2VtYmxlci5j
TG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgICBlbmQK
IGVuZAogCiBjbGFzcyBTa2lwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2Nsb29wLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwODUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImNvbmZpZyIKK3JlcXVpcmUgImFz
dCIKK3JlcXVpcmUgIm9wdCIKKworZGVmIGNsb29wTWFwVHlwZSh0eXBlKQorICAgIGNhc2UgdHlw
ZQorICAgIHdoZW4gOmludDsgICAgICAgICAgICAiLnUuaSIKKyAgICB3aGVuIDp1aW50OyAgICAg
ICAgICAgIi51LnUiCisgICAgd2hlbiA6aW50MzI7ICAgICAgICAgICIudS5pMzIiCisgICAgd2hl
biA6dWludDMyOyAgICAgICAgICIudS51MzIiCisgICAgd2hlbiA6aW50ODsgICAgICAgICAgICIu
dS5pOCIKKyAgICB3aGVuIDp1aW50ODsgICAgICAgICAgIi51LnU4IgorICAgIHdoZW4gOmludDhQ
dHI7ICAgICAgICAiLnUuaThwIgorICAgIHdoZW4gOnZvaWRQdHI7ICAgICAgICAiLnUudnAiCisg
ICAgIyBtbGFtIHdoZW4gOmluc3RydWN0aW9uOyAgICAiLnUuaW5zdHJ1Y3Rpb24iCisgICAgd2hl
biA6bmF0aXZlRnVuYzsgICAgICIudS5uYXRpdmVGdW5jIgorICAgIHdoZW4gOmRvdWJsZTsgICAg
ICAgICAiLnUuZCIKKyAgICB3aGVuIDpjYXN0VG9Eb3VibGU7ICAgIi51LmNhc3RUb0RvdWJsZSIK
KyAgICB3aGVuIDpjYXN0VG9Wb2lkUHRyOyAgIi51LmNhc3RUb1ZvaWRQdHIiCisgICAgZWxzZTsK
KyAgICAgICAgcmFpc2UgIlVuc3VwcG9ydGVkIHR5cGUiCisgICAgZW5kCitlbmQKKworCitjbGFz
cyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgICAgZGVmIGR1bXAKKyAgICAgICAgQG5h
bWUKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTppbnQpCisgICAgICAgIEBuYW1lICsg
Y2xvb3BNYXBUeXBlKHR5cGUpCisgICAgZW5kCitlbmQKKworQ19MT09QX1NDUkFUQ0hfRlBSID0g
U3BlY2lhbFJlZ2lzdGVyLm5ldygiZDgiKQorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIGR1
bXAKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAg
ICAgICAgICAgInIwIgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAg
ICJyMSIKKyAgICAgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAicjIiCisgICAgICAg
IHdoZW4gInQzIgorICAgICAgICAgICAgInI0IgorICAgICAgICB3aGVuICJ0NCIKKyAgICAgICAg
ICAgICJyUEMiCisgICAgICAgIHdoZW4gInQ2IgorICAgICAgICAgICAgInJCYXNlUEMiCisgICAg
ICAgIHdoZW4gImNzcjEiCisgICAgICAgICAgICAidGFnVHlwZU51bWJlciIKKyAgICAgICAgd2hl
biAiY3NyMiIKKyAgICAgICAgICAgICJ0YWdNYXNrIgorICAgICAgICB3aGVuICJjZnIiCisgICAg
ICAgICAgICAiZnAiCisgICAgICAgIHdoZW4gImxyIgorICAgICAgICAgICAgInJSZXRWUEMiCisg
ICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAgICAgICBlbHNlCisgICAgICAg
ICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIENfTE9PUCBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTpp
bnQpCisgICAgICAgIGR1bXAgKyBjbG9vcE1hcFR5cGUodHlwZSkKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBGUFJlZ2lzdGVySUQKKyAgICBkZWYgZHVtcAorICAgICAgICBjYXNlIG5hbWUKKyAgICAg
ICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgICAgICAgImQwIgorICAgICAgICB3aGVuICJmdDEi
CisgICAgICAgICAgICAiZDEiCisgICAgICAgIHdoZW4gImZ0MiIKKyAgICAgICAgICAgICJkMiIK
KyAgICAgICAgd2hlbiAiZnQzIgorICAgICAgICAgICAgImQzIgorICAgICAgICB3aGVuICJmdDQi
CisgICAgICAgICAgICAiZDQiCisgICAgICAgIHdoZW4gImZ0NSIKKyAgICAgICAgICAgICJkNSIK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZv
ciBDX0xPT1AgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisg
ICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBkdW1wICsgY2xvb3BNYXBUeXBlKHR5
cGUpCisgICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIiN7dmFsdWV9IgorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAgICAg
ICAgIyBUaGVyZSBpcyBhIGNhc2Ugb2YgYSB2ZXJ5IGxhcmdlIHVuc2lnbmVkIG51bWJlciAoMHg4
MDAwMDAwMDAwMDAwMDAwKQorICAgICAgICAjIHdoaWNoIHdlIHdpc2ggdG8gZW5jb2RlLiAgVW5m
b3J0dW5hdGVseSwgdGhlIEMvQysrIGNvbXBpbGVyCisgICAgICAgICMgY29tcGxhaW50cyBpZiB3
ZSBleHByZXNzIHRoYXQgbnVtYmVyIGFzIGEgcG9zaXRpdmUgZGVjaW1hbCBpbnRlZ2VyLgorICAg
ICAgICAjIEhlbmNlLCBmb3IgcG9zaXRpdmUgdmFsdWVzLCB3ZSBqdXN0IGNvbnZlcnQgdGhlIG51
bWJlciBpbnRvIGhleCBmb3JtCisgICAgICAgICMgdG8ga2VlcCB0aGUgY29tcGlsZXIgaGFwcHku
CisgICAgICAgICMKKyAgICAgICAgIyBIb3dldmVyLCBmb3IgbmVnYXRpdmUgdmFsdWVzLCB0aGUg
dG9fcygxNikgaGV4IGNvbnZlcnNpb24gbWV0aG9kIGRvZXMKKyAgICAgICAgIyBub3Qgc3RyaXAg
dGhlICItIiBzaWduIHJlc3VsdGluZyBpbiBhIG1lYW5pbmdsZXNzICIweC0uLi4iIHZhbHVlU3Ry
LgorICAgICAgICAjIFRvIHdvcmthcm91bmQgdGhpcywgd2Ugc2ltcGx5IGRvbid0IGVuY29kZSBu
ZWdhdGl2ZSBudW1iZXJzIGFzIGhleC4KKyAgICAgICAgdmFsdWVTdHIgPSAodmFsdWUgPCAwKSA/
ICIje3ZhbHVlfSIgOiAiMHgje3ZhbHVlLnRvX3MoMTYpfSIKKworICAgICAgICBjYXNlIHR5cGUK
KyAgICAgICAgd2hlbiA6aW50ODsgICAgInN0YXRpY19jYXN0PGludDhfdD4oI3t2YWx1ZVN0cn0p
IgorICAgICAgICB3aGVuIDppbnQzMjsgICAic3RhdGljX2Nhc3Q8aW50MzJfdD4oI3t2YWx1ZVN0
cn0pIgorICAgICAgICB3aGVuIDppbnQ7ICAgICAic3RhdGljX2Nhc3Q8aW50cHRyX3Q+KCN7dmFs
dWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6dWludDg7ICAgInN0YXRpY19jYXN0PHVpbnQ4X3Q+KCN7
dmFsdWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6dWludDMyOyAgInN0YXRpY19jYXN0PHVpbnQzMl90
Pigje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOnVpbnQ7ICAgICJzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KCN7dmFsdWVTdHJ9KSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIk5v
dCBpbXBsZW1lbnRlZCBpbW1lZGlhdGUgb2YgdHlwZTogI3t0eXBlfSIgCisgICAgICAgIGVuZAor
ICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgZHVtcAorICAgICAgICAiWyN7
YmFzZS5kdW1wfSwgI3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0
eXBlPTppbnQpCisgICAgICAgIGNhc2UgdHlwZQorICAgICAgICB3aGVuIDppbnQ4OyAgICAgICAg
IGludDhNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50MzI7ICAgICAgICBpbnQzMk1lbVJlZgorICAg
ICAgICB3aGVuIDppbnQ7ICAgICAgICAgIGludE1lbVJlZgorICAgICAgICB3aGVuIDp1aW50ODsg
ICAgICAgIHVpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4gOnVpbnQzMjsgICAgICAgdWludDMyTWVt
UmVmCisgICAgICAgIHdoZW4gOnVpbnQ7ICAgICAgICAgdWludE1lbVJlZgorICAgICAgICAjIG1s
YW0gd2hlbiA6aW5zdHJ1Y3Rpb247IGludE1lbVJlZgorICAgICAgICB3aGVuIDpvcGNvZGU7ICAg
ICAgIG9wY29kZU1lbVJlZgorICAgICAgICB3aGVuIDpuYXRpdmVGdW5jOyAgIG5hdGl2ZUZ1bmNN
ZW1SZWYKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgQWRkcmVz
cyB0eXBlOiAje3R5cGV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgcG9pbnRlckV4
cHIKKyAgICAgICAgaWYgYmFzZS5pc19hPyBSZWdpc3RlcklEIGFuZCBiYXNlLm5hbWUgPT0gInNw
IiAKKyAgICAgICAgICAgIG9mZnNldFZhbHVlID0gIiN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAg
ICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFsdWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGds
b2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSIKKyAgICAgICAgZWxzaWYgb2Zmc2V0LnZhbHVl
ID09IDAKKyAgICAgICAgICAgICIje2Jhc2UuY2xWYWx1ZSg6aW50OFB0cil9IgorICAgICAgICBl
bHNpZiBvZmZzZXQudmFsdWUgPiAwCisgICAgICAgICAgICAiI3tiYXNlLmNsVmFsdWUoOmludDhQ
dHIpfSArICN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFz
ZS5jbFZhbHVlKDppbnQ4UHRyKX0gLSAjey1vZmZzZXQudmFsdWV9IgorICAgICAgICBlbmQKKyAg
ICBlbmQKKyAgICBkZWYgaW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90Kj4oI3twb2lu
dGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiBpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8
aW50MTZfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MzJNZW1SZWYK
KyAgICAgICAgIipDQVNUPGludDMyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAg
ZGVmIGludE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50cHRyX3QqPigje3BvaW50ZXJFeHByfSki
CisgICAgZW5kCisgICAgZGVmIHVpbnQ4TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50OF90Kj4o
I3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50MTZNZW1SZWYKKyAgICAgICAg
IipDQVNUPHVpbnQxNl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50
MzJNZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQzMl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAg
IGVuZAorICAgIGRlZiB1aW50TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50cHRyX3QqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIG5hdGl2ZUZ1bmNNZW1SZWYKKyAgICAgICAg
IipDQVNUPE5hdGl2ZUZ1bmN0aW9uKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRl
ZiBvcGNvZGVNZW1SZWYKKyAgICAgICAgIipDQVNUPExMSW50T3Bjb2RlKj4oI3twb2ludGVyRXhw
cn0pIgorICAgIGVuZAorICAgIGRlZiBkYmxNZW1SZWYKKyAgICAgICAgIipDQVNUPGRvdWJsZSo+
KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBk
ZWYgZHVtcAorICAgICAgICAiWyN7YmFzZS5kdW1wfSwgI3tvZmZzZXQuZHVtcH0sICN7aW5kZXgu
ZHVtcH0gPDwgI3tzY2FsZVNoaWZ0fV0iCisgICAgZW5kCisgICAgZGVmIGNsVmFsdWUodHlwZT06
aW50KQorICAgICAgICBjYXNlIHR5cGUKKyAgICAgICAgd2hlbiA6aW50ODsgICAgaW50OE1lbVJl
ZgorICAgICAgICB3aGVuIDppbnQzMjsgICBpbnQzMk1lbVJlZgorICAgICAgICB3aGVuIDppbnQ7
ICAgICBpbnRNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDg7ICAgdWludDhNZW1SZWYKKyAgICAg
ICAgd2hlbiA6dWludDMyOyAgdWludDMyTWVtUmVmCisgICAgICAgIHdoZW4gOnVpbnQ7ICAgIHVp
bnRNZW1SZWYKKyAgICAgICAgd2hlbiA6b3Bjb2RlOyAgb3Bjb2RlTWVtUmVmCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIEJhc2VJbmRleCB0eXBlOiAje3R5cGV9
IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgcG9pbnRlckV4cHIKKyAgICAgICAgaWYg
YmFzZS5pc19hPyBSZWdpc3RlcklEIGFuZCBiYXNlLm5hbWUgPT0gInNwIgorICAgICAgICAgICAg
b2Zmc2V0VmFsdWUgPSAiKCN7aW5kZXguY2xWYWx1ZSg6aW50MzIpfSA8PCAje3NjYWxlU2hpZnR9
KSArICN7b2Zmc2V0LmNsVmFsdWV9KSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFs
dWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxE
YXRhKSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFzZS5jbFZhbHVlKDppbnQ4UHRy
KX0gKyAoI3tpbmRleC5jbFZhbHVlKDppbnQzMil9IDw8ICN7c2NhbGVTaGlmdH0pICsgI3tvZmZz
ZXQuY2xWYWx1ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBpbnQ4TWVtUmVmCisg
ICAgICAgICIqQ0FTVDxpbnQ4X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVm
IGludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnQxNl90Kj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorICAgIGRlZiBpbnQzMk1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50MzJfdCo+KCN7
cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50TWVtUmVmCisgICAgICAgICIqQ0FT
VDxpbnRwdHJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDhNZW1S
ZWYKKyAgICAgICAgIipDQVNUPHVpbnQ4X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisg
ICAgZGVmIHVpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDE2X3QqPigje3BvaW50ZXJF
eHByfSkiCisgICAgZW5kCisgICAgZGVmIHVpbnQzMk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWlu
dDMyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIHVpbnRNZW1SZWYKKyAg
ICAgICAgIipDQVNUPHVpbnRwdHJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBk
ZWYgb3Bjb2RlTWVtUmVmCisgICAgICAgICIqQ0FTVDxMTEludE9wY29kZSo+KCN7cG9pbnRlckV4
cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUq
Pigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNz
CisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisg
ICAgZGVmIGNsVmFsdWUKKyAgICAgICAgZHVtcAorICAgIGVuZAorZW5kCisKKworIworIyBMZWEg
c3VwcG9ydC4KKyMKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBjbG9vcEVtaXRMZWEoZGVzdGlu
YXRpb24sIHR5cGUpCisgICAgICAgIGlmIGRlc3RpbmF0aW9uID09IGJhc2UKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tkZXN0aW5hdGlvbi5jbFZhbHVlKDppbnQ4UHRyKX0gKz0gI3tvZmZzZXQu
Y2xWYWx1ZSh0eXBlKX07IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7
ZGVzdGluYXRpb24uY2xWYWx1ZSg6aW50OFB0cil9ID0gI3tiYXNlLmNsVmFsdWUoOmludDhQdHIp
fSArICN7b2Zmc2V0LmNsVmFsdWUodHlwZSl9OyIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQK
KworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGNsb29wRW1pdExlYShkZXN0aW5hdGlvbiwgdHlw
ZSkKKyAgICAgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUg
emVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAg
ICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmNsVmFsdWUoOmludDhQdHIpfSA9ICN7YmFz
ZS5jbFZhbHVlKDppbnQ4UHRyKX0gKyAoI3tpbmRleC5jbFZhbHVlfSA8PCAje3NjYWxlU2hpZnR9
KTsiCisgICAgZW5kCitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFk
ZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2Rl
IGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisgICAgZGVmIGdldE1vZGlmaWVkTGlzdENf
TE9PUAorICAgICAgICBteUxpc3QgPSBAbGlzdAorICAgICAgICAKKyAgICAgICAgIyBWZXJpZnkg
dGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGluc3RydWN0aW9ucyBhbmQgbGFiZWxzLgorICAgICAgICBt
eUxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgdW5sZXNzIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24gb3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBM
YWJlbCBvcgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBTa2lwCisgICAgICAgICAgICAgICAgcmFpc2Ug
IlVuZXhwZWN0ZWQgI3tub2RlLmluc3BlY3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG15TGlzdAor
ICAgIGVuZAorZW5kCisKK2RlZiBjbE9wZXJhbmRzKG9wZXJhbmRzKQorICAgIG9wZXJhbmRzLm1h
cHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCitlbmQKKworIyBtbGFtIEJFR0lOCitkZWYgbWxhbUR1
bXBPcGVyYXRpb24yQXJncyhvcGVyYW5kcywgdHlwZSwgb3BlcmF0b3IpCisgICAgY2FzZSB0eXBl
CisgICAgd2hlbiA6aW50MzI7ICB2ZiA9ICIlZCIKKyAgICB3aGVuIDppbnQ7ICAgIHZmID0gIiVs
ZCIKKyAgICB3aGVuIDp1aW50MzI7IHZmID0gIiV1IgorICAgIHdoZW4gOnVpbnQ7ICAgdmYgPSAi
JWx1IgorICAgIHdoZW4gOmRvdWJsZTsgdmYgPSAiJWUiCisgICAgZWxzZQorICAgICAgICByYWlz
ZSAiT29wcz8gdHlwZTogI3t0eXBlfSIKKyAgICBlbmQgICAgCisKKyAgICAkYXNtLnB1dGMgIiAg
ICAgICAgI2lmIG1sYW1fUFJJTlRGMCIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwi
XFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTsi
CisgICAgaWYgdHlwZSA9PSA6ZG91YmxlCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMwor
ICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIiAgICAgICN7b3BlcmF0b3J9
IHR5cGUgI3t0eXBlfSB8ICN7dmZ9ICN7b3BlcmF0b3J9ICN7dmZ9ID0+ICN7dmZ9IFxcblwiLCAj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9
LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBd
LmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSB1bmxl
c3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJp
bnRmKFwiICAgICAgI3tvcGVyYXRvcn0gdHlwZSAje3R5cGV9IHwgKCN7dmZ9ICN7b3BlcmF0b3J9
PSAje3ZmfSkgPT4gI3t2Zn0gXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICgje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9
ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGVyYXRvcn0gdHlwZSAje3R5cGV9
IHwgPCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9IFslcF0gI3tvcGVyYXRvcn0gPCN7b3BlcmFu
ZHNbMF0uZHVtcH0+ICN7dmZ9IFslcF0gPT4gPCN7b3BlcmFuZHNbMl0uZHVtcH0+ICN7dmZ9IFsl
cF1cXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNb
MV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikj
e29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9KSwgKHZvaWQqKSgje29w
ZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSh0eXBlKX0pKTsiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kcy5zaXplID09IDIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIg
ICAgICAje29wZXJhdG9yfSB0eXBlICN7dHlwZX0gfCA8I3tvcGVyYW5kc1sxXS5kdW1wfT4gI3t2
Zn0gWyVwXSAje29wZXJhdG9yfSA8I3tvcGVyYW5kc1swXS5kdW1wfT4gI3t2Zn0gWyVwXSkgPT4g
PCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9IFslcF1cXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9
LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBd
LmNsVmFsdWUodHlwZSl9KSwgKHZvaWQqKSgje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7
b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgIGVuZAor
ICAgIGVuZAorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAg
ICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGIgorZW5kCisjIG1sYW0gRU5ECisKK2RlZiBjbG9v
cEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQorICAgIG1sYW1EdW1wT3Bl
cmF0aW9uMkFyZ3Mob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQorICAgIGlmIG9wZXJhbmRzLnNp
emUgPT0gMworICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY2xWYWx1ZSh0eXBlKX0g
PSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0u
Y2xWYWx1ZSh0eXBlKX07IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRz
LnNpemUgPT0gMgorICAgICAgICByYWlzZSB1bmxlc3Mgbm90IG9wZXJhbmRzWzFdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0g
PSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0u
Y2xWYWx1ZSh0eXBlKX07IgorICAgIGVuZAorZW5kCisKK2RlZiBjbG9vcEVtaXRDb21wYXJlRG91
YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5w
dXRjICJpZiAoaXNuYW4oI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfSkgfHwgaXNuYW4o
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSkiCisgICAgJGFzbS5wdXRjICIgICAgfHwg
KCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6ZG91YmxlKX0gI3tjb25kaXRpb259ICN7b3BlcmFuZHNb
MV0uY2xWYWx1ZSg6ZG91YmxlKX0pKSIKKyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFu
ZHNbMl0uY0xhYmVsfTsiCitlbmQKKworCitkZWYgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVy
YW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAjIFRoZSByZXN1bHQgaXMgYSBib29sZWFuLiAg
SGVuY2UsIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBiYXNlZCBvbiB0aGUgdHlwZQorICAgICMgb2Yg
dGhlIGFyZ3VtZW50cyBiZWluZyBjb21wYXJlZC4KKyAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNb
Ml0uY2xWYWx1ZX0gPSAoI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9
ICN7b3AyID0gb3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0pOyIKK2VuZAorCisjIG1sYW0gQkVH
SU4gREVCVUcgb25seQorZGVmIG1sYW1EdW1wQ29tcGFyZUFuZEJyYW5jaEFyZ3Mob3BlcmFuZHMs
IHR5cGUsIGNvbXBhcmF0b3IpCisgICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50LCA6aW50MzIs
IDppbnQ4CisgICAgICAgICRhc20ucHV0YyAiI2lmIG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNt
LnB1dGMgInByaW50ZihcIlxcbiBtbGFtIENPTVBBUkUgbGhzICVsZCAlcCAje2NvbXBhcmF0b3J9
IHJocyAlbGQgJXAgPT0+IHJlc3VsdCAlZFxcblxcblwiLCAoaW50cHRyX3QpI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sIChp
bnRwdHJfdCkje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKHR5cGUpfSwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJh
dG9yfSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICAkYXNtLnB1dGMg
IiNlbmRpZiAvLyBtbGFtX1BSSU5URiIKKyAgICB3aGVuIDp1aW50LCA6dWludDMyLCA6dWludDgK
KyAgICAgICAgJGFzbS5wdXRjICIjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICRhc20ucHV0YyAi
cHJpbnRmKFwiXFxuIG1sYW0gQ09NUEFSRSBsaHMgJWx1ICVwICN7Y29tcGFyYXRvcn0gcmhzICVs
dSAlcCA9PT4gcmVzdWx0ICVkXFxuXFxuXCIsICh1aW50cHRyX3QpI3tvcGVyYW5kc1swXS5jbFZh
bHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh1aW50cHRy
X3QpI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMV0uY2xW
YWx1ZSh0eXBlKX0sICgje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0g
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSkpOyIKKyAgICAgICAgJGFzbS5wdXRjICIjZW5k
aWYgLy8gbWxhbV9QUklOVEYiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAgICRhc20ucHV0YyAi
I2lmIG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNtLnB1dGMgInByaW50ZihcIlxcbiBtbGFtIENP
TVBBUkUgbGhzICVlICN7Y29tcGFyYXRvcn0gcmhzICVlID09PiByZXN1bHQgJWRcXG5cXG5cIiwg
I3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29wZXJhbmRz
WzFdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICAkYXNtLnB1dGMgIiNlbmRpZiAvLyBtbGFt
X1BSSU5URiIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJPb3BzOiB0eXBlID0gI3t0eXBlfSIK
KyAgICBlbmQKK2VuZAorIyBtbGFtIEVORCBERUJVRyBvbmx5CisKK2RlZiBjbG9vcEVtaXRDb21w
YXJlQW5kQnJhbmNoKG9wZXJhbmRzLCB0eXBlLCBjb21wYXJhdG9yKQorICAgICMgbWxhbUR1bXBD
b21wYXJlQW5kQnJhbmNoQXJncyhvcGVyYW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAkYXNt
LnB1dGMgImlmICgje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tv
cGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSkiCisgICAgJGFzbS5wdXRjICIgICAgZ290byAje29w
ZXJhbmRzWzJdLmNMYWJlbH07IgorZW5kCisKKworIyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250
YWluIGEgc3RyaW5nIHRoYXQgcHJvdmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1
ZSBlLmcuICI8IDAiLgorZGVmIGNsb29wR2VuZXJhdGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJh
bmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFsdWUo
dHlwZSkKKworICAgICMgVGhlIG9wZXJhbmRzIG11c3QgY29uc2lzdCBvZiAyIG9yIDMgdmFsdWVz
LgorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMiAjIEp1c3QgdGVzdCBvcDEgYWdh
aW5zdCB0aGUgY29uZGl0aW9uVGVzdC4KKyAgICAgICAgbGhzID0gb3AxCisgICAgd2hlbiAzICMg
TWFzayBvcDEgd2l0aCBvcDIgYmVmb3JlIHRlc3RpbmcgYWdhaW5zdCB0aGUgY29uZGl0aW9uVGVz
dC4KKyAgICAgICAgbGhzID0gIigje29wMX0gJiAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9
KSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0
IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisg
ICAgCisgICAgIiN7bGhzfSAje2NvbmRpdGlvblRlc3R9IgorZW5kCisKKyMgY29uZGl0aW9uVGVz
dCBzaG91bGQgY29udGFpbiBhIHN0cmluZyB0aGF0IHByb3ZpZGVzIGEgY29tcGFyYXRvciBhbmQg
YSBSSFMKKyMgdmFsdWUgZS5nLiAiPCAwIi4KK2RlZiBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYo
b3BlcmFuZHMsIHR5cGUsIGNvbmRpdGlvblRlc3QsIGJyYW5jaFRhcmdldCkKKyAgICBjb25kaXRp
b25FeHByID0gY2xvb3BHZW5lcmF0ZUNvbmRpdGlvbkV4cHJlc3Npb24ob3BlcmFuZHMsIHR5cGUs
IGNvbmRpdGlvblRlc3QpCisgICAgJGFzbS5wdXRjICJpZiAoI3tjb25kaXRpb25FeHByfSkiCisg
ICAgJGFzbS5wdXRjICIgICAgZ290byAje2JyYW5jaFRhcmdldH07IgorZW5kCisKK2RlZiBjbG9v
cEVtaXRUZXN0U2V0KG9wZXJhbmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgICMgVGhlIHJl
c3VsdCBpcyBhIGJvb2xlYW4gY29uZGl0aW9uLiAgSGVuY2UsIHRoZSByZXN1bHQgdHlwZSBpcyBh
bHdheXMgYW4KKyAgICAjIGludC4gIFRoZSBwYXNzZWQgaW4gdHlwZSBpcyBvbmx5IHVzZWQgZm9y
IHRoZSB2YWx1ZXMgYmVpbmcgdGVzdGVkIGluCisgICAgIyB0aGUgY29uZGl0aW9uIHRlc3QuCisg
ICAgY29uZGl0aW9uRXhwciA9IGNsb29wR2VuZXJhdGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJh
bmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1stMV0u
Y2xWYWx1ZX0gPSAoI3tjb25kaXRpb25FeHByfSk7IgorZW5kCisKK2RlZiBjbG9vcEVtaXRPcEFu
ZEJyYW5jaChvcGVyYW5kcywgb3BlcmF0b3IsIHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgY2Fz
ZSB0eXBlCisgICAgd2hlbiA6aW50OyAgIHRlbXBUeXBlID0gImludHB0cl90IgorICAgIHdoZW4g
OmludDMyOyB0ZW1wVHlwZSA9ICJpbnQzMl90IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVu
aW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKworICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFs
dWUodHlwZSkKKyAgICBvcDIgPSBvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpCisKKyAgICAkYXNt
LnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gdGVtcCA9ICN7b3AyfSAj
e29wZXJhdG9yfSAje29wMX07IgorICAgICRhc20ucHV0YyAiICAgIGlmICh0ZW1wICN7Y29uZGl0
aW9uVGVzdH0pIgorICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNM
YWJlbH07IgorICAgICRhc20ucHV0YyAiICAgICN7b3AyfSA9IHRlbXA7IgorICAgICRhc20ucHV0
YyAifSIKK2VuZAorCitkZWYgY2xvb3BBZGRPdmVyZmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUpCisg
ICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50MzIKKyAgICAgICAgdGVtcFR5cGUgPSAiaW50MzJf
dCIKKyAgICAgICAgc2lnbkJpdCA9ICJTSUdOX0JJVDMyIgorICAgIGVsc2UKKyAgICAgICAgcmFp
c2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKworICAgICRhc20ucHV0YyAiICAgICN7
dGVtcFR5cGV9IGEgPSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1
dGMgIiAgICAje3RlbXBUeXBlfSBiID0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfTsiCisg
ICAgJGFzbS5wdXRjICIgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOiIKKyAg
ICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAgICAgICAgfCBzaWduKGIrYSkgPSAxIChwb3Mg
KyBwb3MgIT0gbmVnKSIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDEgICAgICAgfCBu
ZXZlciIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDAgICAgICAgfCBuZXZlciIKKyAg
ICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDEgICAgICAgfCBzaWduKGIrYSkgPSAwIChuZWcg
KyBuZWcgIT0gcG9zKSIKKyAgICAiKCgje3NpZ25CaXR9KGIpID09ICN7c2lnbkJpdH0oYSkpICYm
ICgje3NpZ25CaXR9KGIrYSkgIT0gI3tzaWduQml0fShhKSkpIgorZW5kCisKK2RlZiBjbG9vcFN1
Yk92ZXJmbG93VGVzdChvcGVyYW5kcywgdHlwZSkKKyAgICBjYXNlIHR5cGUKKyAgICB3aGVuIDpp
bnQzMgorICAgICAgICB0ZW1wVHlwZSA9ICJpbnQzMl90IgorICAgICAgICBzaWduQml0ID0gIlNJ
R05fQklUMzIiCisgICAgZWxzZQorICAgICAgICByYWlzZSAiVW5pbXBsZW1lbnRlZCB0eXBlIgor
ICAgIGVuZAorCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYSA9ICN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSh0eXBlKX07IgorICAgICRhc20ucHV0YyAiICAgICN7dGVtcFR5cGV9IGIgPSAj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWdu
KGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6IgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAg
ICAgMCAgICAgICB8IG5ldmVyIgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAgMSAgICAg
ICB8IHNpZ24oYi1hKSA9IDEgKHBvcyAtIG5lZyAhPSBwb3MpIgorICAgICRhc20ucHV0YyAiICAg
IC8vIDEgICAgICAgMCAgICAgICB8IHNpZ24oYi1hKSA9IDAgKG5lZyAtIHBvcyAhPSBwb3MpIgor
ICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAgMSAgICAgICB8IG5ldmVyIgorICAgICIoKCN7
c2lnbkJpdH0oYikgIT0gI3tzaWduQml0fShhKSkgJiYgKCN7c2lnbkJpdH0oYi1hKSA9PSAje3Np
Z25CaXR9KGEpKSkiCitlbmQKKworZGVmIGNsb29wTXVsT3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0
eXBlKQorICAgIGNhc2UgdHlwZQorICAgIHdoZW4gOmludDMyCisgICAgICAgIHRlbXBUeXBlID0g
InVpbnQzMl90IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIK
KyAgICBlbmQKKyAgICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSBhID0gI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYiA9ICN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX07IgorICAgICIoKGIgfCBhKSA+PiAxNSkiCitlbmQK
KworZGVmIGNsb29wRW1pdE9wQW5kQnJhbmNoSWZPdmVyZmxvdyhvcGVyYW5kcywgb3BlcmF0b3Is
IHR5cGUpCisgICAgJGFzbS5wdXRjICJ7IgorCisgICAgIyBFbWl0IHRoZSBvdmVyZmxvdyB0ZXN0
IGJhc2VkIG9uIHRoZSBvcGVyYW5kcyBhbmQgdGhlIHR5cGU6CisgICAgY2FzZSBvcGVyYXRvcgor
ICAgIHdoZW4gIisiOyBvdmVyZmxvd1Rlc3QgPSBjbG9vcEFkZE92ZXJmbG93VGVzdChvcGVyYW5k
cywgdHlwZSkKKyAgICB3aGVuICItIjsgb3ZlcmZsb3dUZXN0ID0gY2xvb3BTdWJPdmVyZmxvd1Rl
c3Qob3BlcmFuZHMsIHR5cGUpCisgICAgd2hlbiAiKiI7IG92ZXJmbG93VGVzdCA9IGNsb29wTXVs
T3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0eXBlKQorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVu
aW1wbGVtZW50ZWQgb3BlYXJ0b3IiCisgICAgZW5kCisKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAj
e292ZXJmbG93VGVzdH0geyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRG
IgorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAg
ICAgcHJpbnRmKFwiICAgICAgUG90ZW50aWFsICN7b3BlcmF0b3J9IG92ZXJmbG93ISEhISEgXFxu
XCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgJGFzbS5wdXRjICIgICAg
ICAgICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICN7
b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgJGFzbS5wdXRjICIgICAgfSIKKyAgICAkYXNtLnB1
dGMgIiAgICAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9OyIKKyAg
ICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAg
ICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tv
cGVyYXRvcn0gcmVzdWx0ID0gJWQgXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0p
OyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgJGFzbS5wdXRjICIgICAgICAg
ICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAifSIKK2VuZAorCisjIG9wZXJh
bmRzOiBjYWxsVGFyZ2V0LCBjdXJyZW50RnJhbWUsIGN1cnJlbnRQQworZGVmIGNsb29wRW1pdENh
bGxTbG93UGF0aChvcGVyYW5kcykKKyAgICAkYXNtLnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPigje29wZXJhbmRzWzFdLmNsVmFs
dWUoOnZvaWRQdHIpfSk7IgorICAgICRhc20ucHV0YyAiICAgIEluc3RydWN0aW9uKiBwYyA9IENB
U1Q8SW5zdHJ1Y3Rpb24qPigje29wZXJhbmRzWzJdLmNsVmFsdWUoOnZvaWRQdHIpfSk7IgorICAg
ICRhc20ucHV0YyAiICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSAje29wZXJhbmRzWzBd
LmNMYWJlbH0oZXhlYywgcGMpOyIKKyAgICAkYXNtLnB1dGMgIiAgICBMTEludDo6ZGVjb2RlUmVz
dWx0KHJlc3VsdCwgcjAudS5pbnN0cnVjdGlvbiwgcjEudS5leGVjU3RhdGUpOyIKKyAgICAkYXNt
LnB1dGMgIiAgICBBU1NFUlQoY2FsbEZyYW1lICE9IDApOyAvLyBtbGFtIERFQlVHIFRFU1Qgb25s
eSIKKyAgICAkYXNtLnB1dGMgIiAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgJGFzbS5wdXRjICIg
ICAgcHJpbnRmKFwibWxhbSBBRlRFUiBleGVjICVwIHBjICVwXFxuXCIsIHIxLnUuZXhlY1N0YXRl
LCByMC51Lmluc3RydWN0aW9uKTsiCisgICAgJGFzbS5wdXRjICIgICAgI2VuZGlmIC8vbWxhbV9Q
UklOVEYiCisgICAgJGFzbS5wdXRjICJ9IgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgICAg
ZGVmIGxvd2VyQ19MT09QCisgICAgICAgIEBtbGFtX1BSSU5URiA9IGZhbHNlCisgICAgICAgICRh
c20uY29kZU9yaWdpbiBjb2RlT3JpZ2luU3RyaW5nIGlmICRlbmFibGVDb2RlT3JpZ2luQ29tbWVu
dHMKKyAgICAgICAgJGFzbS5zb3VyY2VJbnN0cnVjdGlvbiAiI3tvcGNvZGV9ICN7Y2xPcGVyYW5k
cyhvcGVyYW5kcyl9OyIgaWYgJGVuYWJsZVNvdXJjZUluc3RydWN0aW9uRHVtcAorICAgICAgICAk
YXNtLmFubm90YXRpb24gYW5ub3RhdGlvbiBpZiAkZW5hYmxlSW5zdHJBbm5vdGF0aW9ucworCisg
ICAgICAgICMgbWxhbSBCRUdJTgorICAgICAgICBpZiBAbWxhbV9QUklOVEYgYW5kIChvcGNvZGUg
IT0gIm1sYW1EbyIpIGFuZCAob3Bjb2RlICE9ICJtbGFtRHVtcCIpIGFuZCAob3Bjb2RlICE9ICJs
b2NhbEFubm90YXRpb24iKQorICAgICAgICAgICAgbWxhbUNvbW1lbnQgPSBhbm5vdGF0aW9uID8g
IlxcdFxcdC8vICN7YW5ub3RhdGlvbi5nc3ViKCJcIiIsICJcXFwiIil9IiA6ICIiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiNpZiBVU0UoSlNWQUxVRTMyXzY0KSIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiICAgIHByaW50ZihcIiAgICBbcGMgJXAgZnAgJXAgbHIgJXBdIEFTTSAje29wY29kZX0g
I3tjbE9wZXJhbmRzKG9wZXJhbmRzKX0lc1xcblwiLCB2UEMsIGNhbGxGcmFtZSwgclJldFZQQy51
LnZwLCBcIiN7bWxhbUNvbW1lbnR9XCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBwcmludGYoXCIg
ICAgW3BjICVwIHBiICVwIGZwICVwIGNscmZwICVwIGxyICVwXSBBU00gI3tvcGNvZGV9ICN7Y2xP
cGVyYW5kcyhvcGVyYW5kcyl9JXNcXG5cIiwgdlBDLCByQmFzZVBDLnUudnAsIGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpPzA6Y2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZSgpLCByUmV0VlBDLnUudnAsIFwiI3ttbGFtQ29tbWVudH1cIik7IgorICAgICAgICAgICAgJGFz
bS5wdXRjICIjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgIHByaW50ZihcIiAgICBbcGMgJXAgcGIgJXAgY3MgJXAgZnAgJXAgY2xyZnAgJXAgbHIg
JXBdIEFTTSAje29wY29kZX0gI3tjbE9wZXJhbmRzKG9wZXJhbmRzKX1cXG5cIiwgdlBDLCByQmFz
ZVBDLnUudnAsICghY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpICYmIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpP2NhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCk6MCwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCk/MDpj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCksIHJSZXRWUEMudS52cCk7IgorICAgICAgICBlbmQKKyAg
ICAgICAgIyBtbGFtIEVORAorCisgICAgICAgIGNhc2Ugb3Bjb2RlCisgICAgICAgIHdoZW4gImFk
ZGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIisi
KQorICAgICAgICB3aGVuICJhZGRwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9w
ZXJhbmRzLCA6aW50LCAiKyIpCisKKyAgICAgICAgd2hlbiAiYW5kaSIKKyAgICAgICAgICAgIGNs
b29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiJiIpCisgICAgICAgIHdoZW4gImFu
ZHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICImIikK
KworICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3Bl
cmFuZHMsIDppbnQzMiwgInwiKQorICAgICAgICB3aGVuICJvcnAiCisgICAgICAgICAgICBjbG9v
cEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICJ8IikKKworICAgICAgICB3aGVuICJ4b3Jp
IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICJeIikK
KyAgICAgICAgd2hlbiAieG9ycCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVy
YW5kcywgOmludCwgIl4iKQorCisgICAgICAgIHdoZW4gImxzaGlmdGkiCisgICAgICAgICAgICBj
bG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIjw8IikKKyAgICAgICAgd2hlbiAi
bHNoaWZ0cCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludCwg
Ijw8IikKKworICAgICAgICB3aGVuICJyc2hpZnRpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInJzaGlmdHAiCisg
ICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICI+PiIpCisKKyAg
ICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3Bl
cmFuZHMsIDp1aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInVyc2hpZnRwIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6dWludCwgIj4+IikKKworICAgICAgICB3
aGVuICJtdWxpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50
MzIsICIqIikKKyAgICAgICAgd2hlbiAibXVscCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJh
dGlvbihvcGVyYW5kcywgOmludCwgIioiKQorCisgICAgICAgIHdoZW4gInN1YmkiCisgICAgICAg
ICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIi0iKQorICAgICAgICB3
aGVuICJzdWJwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50
LCAiLSIpCisKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9ID0gLSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
MzIpfTsiCisgICAgICAgIHdoZW4gIm5lZ3AiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMF0uY2xWYWx1ZSg6aW50KX0gPSAtI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsi
CisKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1swXS5jbFZhbHVlKDppbnQzMil9ID0gISN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsi
CisKKyAgICAgICAgd2hlbiAibG9hZGkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFu
ZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQzMk1lbVJlZn07IgorICAg
ICAgICAgICAgIyAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50MzIpfSA9ICN7
b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIKKyAgICAgICAgICAgIGlmIEBtbGFtX1BSSU5URgor
ICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwibWxhbSA6OiBsb2FkaSAje29wZXJh
bmRzWzFdLmNsVmFsdWUoOmludCl9ID0gJXAgZnJvbSBhZGRyICN7b3BlcmFuZHNbMF0udWludDMy
TWVtUmVmfSAlcFxcblwiLCAodm9pZCopI3tvcGVyYW5kc1sxXS5jbFZhbHVlfSwgJiN7b3BlcmFu
ZHNbMF0udWludDMyTWVtUmVmfSk7IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImxv
YWRpcyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQp
fSA9ICN7b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZHAiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29w
ZXJhbmRzWzBdLmludE1lbVJlZn07IgorICAgICAgICB3aGVuICJzdG9yZWkiCisgICAgICAgICAg
ICAjIG1sYW0gJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6aW50KX07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRz
WzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisgICAg
ICAgIHdoZW4gInN0b3JlcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5p
bnRNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAgIHdoZW4g
ImxvYWRiIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQ4TWVtUmVmfTsiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVp
bnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQpfSA9ICN7b3BlcmFuZHNbMF0uaW50OE1lbVJl
Zn07IgorICAgICAgICB3aGVuICJzdG9yZWIiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRj
ICIje29wZXJhbmRzWzFdLnVpbnQ4TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
KX0iCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0udWludDhNZW1SZWZ9ID0g
I3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQ4KX0iCisgICAgICAgIHdoZW4gImxvYWRoIgorICAg
ICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0g
PSAje29wZXJhbmRzWzBdLnVpbnQxNk1lbVJlZn07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIj
e29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS51aW50MTZNZW1SZWZ9
OyIKKyAgICAgICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJh
bmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5pbnQxNk1lbVJlZn07IgorICAg
ICAgICB3aGVuICJzdG9yZWgiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIqI3tvcGVy
YW5kc1sxXS51aW50MTZNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIioje29wZXJhbmRzWzFdLnVpbnQxNk1lbVJlZn0gPSAje29w
ZXJhbmRzWzBdLmNsVmFsdWUoOmludDE2KX07IgorICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSA9ICN7b3Bl
cmFuZHNbMF0uZGJsTWVtUmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlZCIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5kYmxNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZh
bHVlKDpkb3VibGUpfTsiCisKKyAgICAgICAgd2hlbiAiYWRkZCIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRvdWJsZSwgIisiKQorICAgICAgICB3aGVuICJkaXZk
IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6ZG91YmxlLCAiLyIp
CisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3Bl
cmFuZHMsIDpkb3VibGUsICItIikKKyAgICAgICAgd2hlbiAibXVsZCIKKyAgICAgICAgICAgIGNs
b29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRvdWJsZSwgIioiKQorCisgICAgICAgIHdoZW4g
InNxcnRkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRv
dWJsZSl9ID0gc3FydCgje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9KTsiCisgICAgICAg
IHdoZW4gImNpMmQiICAjIENvbnZlcnQgYW4gaW50IHZhbHVlIHRvIGl0cyBkb3VibGUgZXF1aXZh
bGVudC4KKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3Vi
bGUpfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisgICAgICAgICAgICAjICRh
c20ucHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgIHBy
aW50ZihcIiAgICAgICN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9ICVl
ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlfSAlZCAoMHgleClcXG5cIiwgI3tvcGVyYW5kc1sxXS5j
bFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9LCAje29wZXJh
bmRzWzBdLmNsVmFsdWUoOmludDMyKX0pOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAg
ICAgIHByaW50ZihcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c
XG5cXG5cIik7IgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8vIG1s
YW1fUFJJTlRGIgorICAgICAgICAgICAgCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPT0iKQorICAg
ICAgICB3aGVuICJiZG5lcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDpkb3VibGUsICIhPSIpCisgICAgICAgIHdoZW4gImJkZ3QiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPiIpOworICAg
ICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCA6ZG91YmxlLCAiPj0iKTsKKyAgICAgICAgd2hlbiAiYmRsdCIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI8Iik7Cisg
ICAgICAgIHdoZW4gImJkbHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDpkb3VibGUsICI8PSIpOworCisgICAgICAgIHdoZW4gImJkZXF1biIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3Bl
cmFuZHMsICI9PSIpCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAgICAgICAgICBjbG9vcEVt
aXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiIT0iKQorICAg
ICAgICB3aGVuICJiZGd0dW4iCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlRG91YmxlV2l0
aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiPiIpCisgICAgICAgIHdoZW4gImJkZ3RlcXVu
IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5j
aChvcGVyYW5kcywgIj49IikKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5jaChvcGVyYW5kcywgIjwiKQor
ICAgICAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3Vi
bGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsICI8PSIpCisKKyAgICAgICAgd2hlbiAi
YnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8ganVzdCBn
ZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgorICAgICAg
ICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAgICAgcmFpc2UgIkNf
TE9PUCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKwor
ICAgICAgICB3aGVuICJ0ZDJpIgorICAgICAgICAgICAgIyBtbGFtMzJiaXQgJGFzbS5wdXRjICIj
e29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3Vi
bGUpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50
KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9OyIKKworICAgICAgICB3aGVuICJi
Y2QyaSIgICMgb3BlcmFuZHM6IHNyY0RibCBkc3RJbnQgc2xvd1BhdGgKKyAgICAgICAgICAgICMg
bWxhbSBJZiB0aGluZ3MgZG9uJ3Qgd29yayBvdXQsIHN1c3BlY3QgdGhpczoKKyAgICAgICAgICAg
ICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGRvdWJsZSBkID0gI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICBjb25zdCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkKTsiCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIiAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAmJiBz
aWduYml0KGQpKSkgLy8gdHJ1ZSBmb3IgLTAuMCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAg
ICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgI3tvcGVyYW5kc1sxXS5jbFZhbHVlfSA9IGFzSW50MzI7IiAgICAgICAgICAgIAorICAg
ICAgICAgICAgJGFzbS5wdXRjICJ9IgorCisgICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBd
LmNsVmFsdWUoOmludCl9OyIKKyAgICAgICAgd2hlbiAic3hpMnAiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmludDMyKX07IgorICAgICAgICB3aGVuICJ6eGkycCIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUo
OnVpbnQzMil9OyIKKyAgICAgICAgd2hlbiAibm9wIgorICAgICAgICAgICAgJGFzbS5wdXRjICIv
LyBub3AiCisgICAgICAgIHdoZW4gImJiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJl
QW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIj09IikKKyAgICAgICAgd2hlbiAiYmllcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj09
IikKKyAgICAgICAgd2hlbiAiYnBlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRC
cmFuY2gob3BlcmFuZHMsIDppbnQsICI9PSIpCisKKyAgICAgICAgd2hlbiAiYmJuZXEiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIiE9IikK
KyAgICAgICAgd2hlbiAiYmluZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJh
bmNoKG9wZXJhbmRzLCA6aW50MzIsICIhPSIpCisgICAgICAgIHdoZW4gImJwbmVxIgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIiE9IikKKwor
ICAgICAgICB3aGVuICJiYmEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCA6dWludDgsICI+IikKKyAgICAgICAgd2hlbiAiYmlhIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQzMiwgIj4iKQorICAgICAg
ICB3aGVuICJicGEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJh
bmRzLCA6dWludCwgIj4iKQorCisgICAgICAgIHdoZW4gImJiYWVxIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQ4LCAiPj0iKQorICAgICAgICB3
aGVuICJiaWFlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFu
ZHMsIDp1aW50MzIsICI+PSIpCisgICAgICAgIHdoZW4gImJwYWVxIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQsICI+PSIpCisKKyAgICAgICAg
d2hlbiAiYmJiIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5k
cywgOnVpbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImJpYiIKKyAgICAgICAgICAgIGNsb29wRW1p
dENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50MzIsICI8IikKKyAgICAgICAgd2hlbiAi
YnBiIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVp
bnQsICI8IikKKworICAgICAgICB3aGVuICJiYmJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENv
bXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAiYmli
ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWlu
dDMyLCAiPD0iKQorICAgICAgICB3aGVuICJicGJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENv
bXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50LCAiPD0iKQorCisgICAgICAgIHdoZW4gImJi
Z3QiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50
OCwgIj4iKQorICAgICAgICB3aGVuICJiaWd0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDMyLCAiPiIpCisgICAgICAgIHdoZW4gImJwZ3QiCisg
ICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50LCAiPiIp
CisKKyAgICAgICAgd2hlbiAiYmJndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI+PSIpCisgICAgICAgIHdoZW4gImJpZ3RlcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj49
IikKKyAgICAgICAgd2hlbiAiYnBndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOmludCwgIj49IikKKworICAgICAgICB3aGVuICJiYmx0IgorICAg
ICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI8IikK
KyAgICAgICAgd2hlbiAiYmlsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDppbnQzMiwgIjwiKQorICAgICAgICB3aGVuICJicGx0IgorICAgICAgICAg
ICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIjwiKQorCisgICAg
ICAgIHdoZW4gImJibHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDppbnQ4LCAiPD0iKQorICAgICAgICB3aGVuICJiaWx0ZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50MzIsICI8PSIpCisgICAg
ICAgIHdoZW4gImJwbHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDppbnQsICI8PSIpCisKKyAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAgICAg
IGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDgsICI9PSAwIiwgb3BlcmFu
ZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpeiIKKyAgICAgICAgICAgIGNsb29wRW1p
dFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPT0gMCIsIG9wZXJhbmRzWy0xXS5j
TGFiZWwpCisgICAgICAgIHdoZW4gImJ0cHoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5k
QnJhbmNoSWYob3BlcmFuZHMsIDppbnQsICI9PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKwor
ICAgICAgICB3aGVuICJidGJueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJ
ZihvcGVyYW5kcywgOmludDgsICIhPSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAg
d2hlbiAiYnRpbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFu
ZHMsIDppbnQzMiwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorICAgICAgICB3aGVuICJi
dHBueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmlu
dCwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorCisgICAgICAgICMgbWxhbSBVTlVTRUQg
d2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgICMg
bWxhbSBlbWl0Q1hYVGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgIyBt
bGFtICRhc20ucHV0YyAiYnZzICN7b3BlcmFuZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICMgbWxh
bSBVTlVTRUQgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgInZzIikgIyBC
cmFuY2ggaWYgb3ZlcmZsb3cuCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBjbG9v
cEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQ4LCAiPCAwIiwgb3BlcmFuZHNbLTFd
LmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RB
bmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkK
KyAgICAgICAgd2hlbiAiYnRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJ
ZihvcGVyYW5kcywgOmludCwgIjwgMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisKKyAgICAgICAg
d2hlbiAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gTG9jYWxMYWJlbFJl
ZmVyZW5jZSBvciBvcGVyYW5kc1swXS5pc19hPyBMYWJlbFJlZmVyZW5jZQorICAgICAgICAgICAg
ICAgICMgSGFuZGxlcyBqdW1wcyBsb2NhbCBvciBnbG9iYWwgbGFiZWxzLgorICAgICAgICAgICAg
ICAgICRhc20ucHV0YyAiZ290byAje29wZXJhbmRzWzBdLmNMYWJlbH07IgorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICMgSGFuZGxlcyBqdW1wcyB0byBzb21lIGEgY29tcHV0ZWQg
dGFyZ2V0LgorICAgICAgICAgICAgICAgICMgTk9URTogbXVzdCBiZSBhbiBvcGNvZGUgaGFuZGxl
ciBvciBhIGxsaW50IGdsdWUgaGVscGVyLgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAib3Bj
b2RlID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpvcGNvZGUpfTsiCisgICAgICAgICAgICAgICAg
JGFzbS5wdXRjICJESVNQQVRDSF9PUENPREUoKTsiCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
d2hlbiAiY2FsbCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQ1JBU0goKTsgLy8gZ2VuZXJpYyBj
YWxsIG5vdCBzdXBwb3J0ZWQhIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/Cisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgIHZvaWQgKCpmKSgpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KCN7b3BlcmFuZHNb
MF0uY0xhYmVsfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB2b2lkICgq
ZikoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPigje29wZXJhbmRzWzBdLmNsVmFsdWUo
OnZvaWRQdHIpfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4g
ImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRjICJwcmludGYoXCJcXG4gQlJFQUsgaW5zdHJ1
Y3Rpb246IE5lZWQgdG8gaW1wbGVtZW50LiAgXFxuXCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiQ1JBU0goKTsgLy8gTm90IGhhbmRsZWQgeWV0LiIKKyAgICAgICAgd2hlbiAicmV0IgorICAg
ICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRvUmV0dXJuSGVscGVyOyIKKworICAgICAgICB3aGVu
ICJjYmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVp
bnQ4LCAiPT0iKQorICAgICAgICB3aGVuICJjaWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29t
cGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIj09IikKKyAgICAgICAgd2hlbiAiY3BlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAiPT0i
KQorCisgICAgICAgIHdoZW4gImNibmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiIT0iKQorICAgICAgICB3aGVuICJjaW5lcSIKKyAgICAg
ICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50MzIsICIhPSIpCisg
ICAgICAgIHdoZW4gImNwbmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChv
cGVyYW5kcywgOnVpbnQsICIhPSIpCisKKyAgICAgICAgd2hlbiAiY2JhIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiPiIpCisgICAgICAgIHdo
ZW4gImNpYSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1
aW50MzIsICI+IikKKyAgICAgICAgd2hlbiAiY3BhIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29t
cGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQsICI+IikKKworICAgICAgICB3aGVuICJjYmFlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50OCwgIj49
IikKKyAgICAgICAgd2hlbiAiY2lhZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
U2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPj0iKQorICAgICAgICB3aGVuICJjcGFlcSIKKyAgICAg
ICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAiPj0iKQorCisg
ICAgICAgIHdoZW4gImNiYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3Bl
cmFuZHMsIDp1aW50OCwgIjwiKQorICAgICAgICB3aGVuICJjaWIiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPCIpCisgICAgICAgIHdoZW4g
ImNwYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50
LCAiPCIpCisKKyAgICAgICAgd2hlbiAiY2JiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDgsICI8PSIpCisgICAgICAgIHdoZW4gImNpYmVxIgor
ICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIjw9
IikKKyAgICAgICAgd2hlbiAiY3BiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
U2V0KG9wZXJhbmRzLCA6dWludCwgIjw9IikKKworICAgICAgICB3aGVuICJjYmd0IgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludDgsICI+IikKKyAgICAg
ICAgd2hlbiAiY2lndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFu
ZHMsIDppbnQzMiwgIj4iKQorICAgICAgICB3aGVuICJjcGd0IgorICAgICAgICAgICAgY2xvb3BF
bWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludCwgIj4iKQorCisgICAgICAgIHdoZW4gImNi
Z3RlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQ4
LCAiPj0iKQorICAgICAgICB3aGVuICJjaWd0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI+PSIpCisgICAgICAgIHdoZW4gImNwZ3RlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQsICI+PSIp
CisKKyAgICAgICAgd2hlbiAiY2JsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRT
ZXQob3BlcmFuZHMsIDppbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImNpbHQiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI8IikKKyAgICAgICAg
d2hlbiAiY3BsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMs
IDppbnQsICI8IikKKworICAgICAgICB3aGVuICJjYmx0ZXEiCisgICAgICAgICAgICBjbG9vcEVt
aXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAiY2ls
dGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludDMy
LCAiPD0iKQorICAgICAgICB3aGVuICJjcGx0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAiPD0iKQorCisgICAgICAgICMgbWxhbSBVTlVTRUQg
d2hlbiAidGlvIiwgInRibyIsICJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGNsb29w
RW1pdFRlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisKKyAgICAgICAgd2hlbiAidGJzIgorICAgICAg
ICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDgsICI8IDAiKQorICAgICAgICB3
aGVuICJ0aXMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50MzIs
ICI8IDAiKQorICAgICAgICB3aGVuICJ0cHMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0
KG9wZXJhbmRzLCA6aW50LCAiPCAwIikKKworICAgICAgICB3aGVuICJ0YnoiCisgICAgICAgICAg
ICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIj09IDAiKQorICAgICAgICB3aGVu
ICJ0aXoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50MzIsICI9
PSAwIikKKyAgICAgICAgd2hlbiAidHB6IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChv
cGVyYW5kcywgOmludCwgIj09IDAiKQorCisgICAgICAgIHdoZW4gInRibnoiCisgICAgICAgICAg
ICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIiE9IDAiKQorICAgICAgICB3aGVu
ICJ0aW56IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDMyLCAi
IT0gMCIpCisgICAgICAgIHdoZW4gInRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0
KG9wZXJhbmRzLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiY2RxaSIKKyAgICAgICAg
ICAgICMgU2lnbiBleHRlbmQgdGhlIDMyIGJpdCBpbnQgdG8gYSBmdWxsIHdvcmQ6CisgICAgICAg
ICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpbnQ2NF90IHRl
bXAgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihyMC51LmkpOyAvLyBzaWduIGV4dGVuZCB0aGUgbG93
IDMyYml0IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgcjAudS5pMzIgPSB0ZW1wOyAvLyBs
b3cgd29yZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIHIxLnUuaTMyID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHRlbXApID4+IDMyOyAvLyBoaWdoIHdvcmQiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIn0iCisgICAgICAgIHdoZW4gImlkaXZpIgorICAgICAgICAgICAgIyBEaXZpZGUgcjEs
cjAgKEVEWCxFQVgpIGJ5IHRoZSBzcGVjaWZpZWQgYXJnLCBhbmQgc3RvcmUgdGhlIHJlbWFpbmRl
ciBpbiByMSwKKyAgICAgICAgICAgICMgYW5kIHF1b3RpZW50IGluIHIwOgorICAgICAgICAgICAg
JGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgaW50NjRfdCBkaXZpZGVu
ZCA9IChzdGF0aWNfY2FzdDxpbnQ2NF90PihyMS51LnUzMikgPDwgMzIpIHwgcjAudS51MzI7Igor
ICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgaW50NjRfdCBkaXZpc29yID0gI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICByMS51LmkzMiA9
IGRpdmlkZW5kICUgZGl2aXNvcjsgLy8gcmVtYWluZGVyIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgcjAudS5pMzIgPSBkaXZpZGVuZCAvIGRpdmlzb3I7IC8vIHF1b3RpZW50IgorICAgICAg
ICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1syXS5jbFZhbHVlKDpkb3VibGUpfSA9IEludHMyRG91YmxlKCN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludDMyKX0sICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dWlu
dDMyKX0pOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgICNpZiBtbGFtX1BSSU5U
RiIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIlxcblxcbiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cIik7IgorICAgICAgICAg
ICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMl0uY2xWYWx1ZSg6ZG91YmxlKX0gJWUgPSBJbnRzMkRvdWJsZSgje29wZXJhbmRzWzBdLmNs
VmFsdWUoOnVpbnQzMil9IDB4JWx4LCAje29wZXJhbmRzWzFdLmNsVmFsdWUoOnVpbnQzMil9IDB4
JWx4fSlcXG5cIiwgI3tvcGVyYW5kc1syXS5jbFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDp1aW50MzIpfSwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50MzIpfSk7Igor
ICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgICAgICAgICAjICRh
c20ucHV0YyAiICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgICAgIHdoZW4gImZk
MmlpIgorICAgICAgICAgICAgJGFzbS5wdXRjICJEb3VibGUySW50cygje29wZXJhbmRzWzBdLmNs
VmFsdWUoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLmNsVmFsdWV9LCAje29wZXJhbmRzWzJdLmNs
VmFsdWV9KTsiCisgICAgICAgIHdoZW4gImZwMmQiICAjIENvcHkgYSBiaXQtZW5jb2RlZC1kb3Vi
bGUgaW4gYW4gaW50cHRyIHRvIGEgZG91YmxlIHN0b3JhZ2UuCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmNhc3RUb0RvdWJsZSl9OyIKKyAgICAgICAgICAgICMgaWYgQG1sYW1fUFJJTlRGCisgICAg
ICAgICAgICAjICAgICAkYXNtLnB1dGMgInByaW50ZihcIiAgICN7b3BlcmFuZHNbMV0uY2xWYWx1
ZSg6ZG91YmxlKX0gPSAlZVxcblwiLCAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9KTsi
CisgICAgICAgICAgICAjIGVuZAorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgI2lm
IG1sYW1fUFJJTlRGIgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwi
XFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTsi
CisgICAgICAgICAgICAjICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICAje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSAlZSA9ICN7b3BlcmFuZHNbMF0uY2xW
YWx1ZSg6dWludCl9IDB4JWx4XFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludCl9KTsiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgICNlbmRp
ZiAvLyBtbGFtX1BSSU5URiIKKworICAgICAgICB3aGVuICJmZDJwIiAgIyBDb3B5IGEgZG91Ymxl
IGFzIGEgYml0LWVuY29kZWQtZG91YmxlIGludG8gYW4gaW50cHRyIHN0b3JhZ2UuCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dm9pZFB0cil9ID0gI3tvcGVy
YW5kc1swXS5jbFZhbHVlKDpjYXN0VG9Wb2lkUHRyKX07IgorICAgICAgICB3aGVuICJsZWFpIgor
ICAgICAgICAgICAgb3BlcmFuZHNbMF0uY2xvb3BFbWl0TGVhKG9wZXJhbmRzWzFdLCA6aW50MzIp
CisgICAgICAgIHdoZW4gImxlYXAiCisgICAgICAgICAgICBvcGVyYW5kc1swXS5jbG9vcEVtaXRM
ZWEob3BlcmFuZHNbMV0sIDppbnQpCisKKyAgICAgICAgd2hlbiAiYmFkZGlvIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKyIsIDppbnQzMikK
KyAgICAgICAgd2hlbiAiYnN1YmlvIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJ
Zk92ZXJmbG93KG9wZXJhbmRzLCAiLSIsIDppbnQzMikKKyAgICAgICAgd2hlbiAiYm11bGlvIgor
ICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKiIs
IDppbnQzMikKKworICAgICAgICB3aGVuICJiYWRkaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRP
cEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJi
YWRkaXoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6
aW50MzIsICI9PSAwIikKKyAgICAgICAgd2hlbiAiYmFkZGlueiIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAg
IHdoZW4gImJhZGRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRz
LCAiKyIsIDppbnQsICI8IDAiKQorICAgICAgICB3aGVuICJiYWRkcHoiCisgICAgICAgICAgICBj
bG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50LCAiPT0gMCIpCisgICAgICAg
IHdoZW4gImJhZGRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5k
cywgIisiLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiYnN1YmlzIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMsICItIiwgOmludDMyLCAiPCAwIikKKyAg
ICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3Bl
cmFuZHMsICItIiwgOmludDMyLCAiPT0gMCIpCisgICAgICAgIHdoZW4gImJzdWJpbnoiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIi0iLCA6aW50MzIsICIhPSAw
IikKKworICAgICAgICB3aGVuICJib3JyaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJy
YW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJib3JyaXoi
CisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIs
ICI9PSAwIikKKyAgICAgICAgd2hlbiAiYm9ycmlueiIKKyAgICAgICAgICAgIGNsb29wRW1pdE9w
QW5kQnJhbmNoKG9wZXJhbmRzLCAifCIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAgIHdoZW4g
ImN4eENyYXNoIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyIKKworICAgICAgICB3
aGVuICJjeHhDYWxsSlNGdW5jdGlvbiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiclJldFZQQy51
LnZwID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRCYWROYXRpdmVSZXR1cm4pOyIgIyBtbGFt
IGZvciBURVNUIHJldHVyblBDIG9ubHkKKyAgICAgICAgICAgICRhc20ucHV0YyAib3Bjb2RlID0g
TExJbnQ6OkRhdGE6OmdldE9wY29kZShzdGF0aWNfY2FzdDxMTEludE9wY29kZUlEPigje29wZXJh
bmRzWzBdLmNsVmFsdWUoOmludCl9KSk7IgorICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRv
Q2FsbEhlbHBlcjsiCisKKyAgICAgICAgd2hlbiAiY3h4Q2FsbE5hdGl2ZSIKKyAgICAgICAgICAg
IGlmIEBtbGFtX1BSSU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiXFxu
KioqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gY3h4Q2FsbE5hdGl2ZSgpXFxuXFxuXCIpOyIK
KyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgJGFzbS5wdXRjICJuYXRpdmVGdW5jID0gI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDpuYXRpdmVGdW5jKX07IgorICAgICAgICAgICAgJGFzbS5wdXRj
ICJmdW5jdGlvblJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG5hdGl2ZUZ1bmMocjAudS5l
eGVjU3RhdGUpKTsiCisgICAgICAgICAgICBpZiBAbWxhbV9QUklOVEYKKyAgICAgICAgICAgICAg
ICAkYXNtLnB1dGMgInByaW50ZihcIlxcbioqKioqKioqKioqKioqKioqKioqKioqKiBtbGFtIGN4
eENhbGxOYXRpdmUoKSBSRVRVUk5lZFxcblxcblwiKTsiCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI2lmIFVTRShKU1ZBTFVFMzJfNjQpIgorICAgICAgICAgICAgJGFz
bS5wdXRjICIgICAgcjEudS5pID0gZnVuY3Rpb25SZXR1cm5WYWx1ZS50YWcoKTsiICAgICAgICAg
IyBGSVhNRTogV2UncmUgYXNzdW1pbmcgYSBjZXJ0YWluIGVuZGlhbm5lc3MgaGVyZS4KKyAgICAg
ICAgICAgICRhc20ucHV0YyAiICAgIHIwLnUuaSA9IGZ1bmN0aW9uUmV0dXJuVmFsdWUucGF5bG9h
ZCgpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vsc2UgLy8gVVNFX0pTVkFMVUU2NCkiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiAgICByMC51LmVuY29kZWRKU1ZhbHVlID0gSlNWYWx1ZTo6
ZW5jb2RlKGZ1bmN0aW9uUmV0dXJuVmFsdWUpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vu
ZGlmIC8vIFVTRV9KU1ZBTFVFNjQpIiAgICAgICAgICAgIAorCisgICAgICAgIHdoZW4gImN4eENh
bGxTbG93UGF0aCIKKyAgICAgICAgICAgIGNsb29wRW1pdENhbGxTbG93UGF0aChvcGVyYW5kcykK
KworICAgICAgICB3aGVuICJjeHhUcmFjZSIKKyAgICAgICAgICAgICRhc20ucHV0Y1RyYWNlTGFz
dEdsb2JhbExhYmVsCisKKyAgICAgICAgd2hlbiAibWxhbUJyZWFrIgorICAgICAgICAgICAgJGFz
bS5wdXRjICJtbGFtQnJlYWsoXCJtbGFtQnJlYWtcIiwgX19GSUxFX18sIF9fTElORV9fKTsiCisg
ICAgICAgIHdoZW4gIm1sYW1EbyIKKyAgICAgICAgICAgICRhc20uYW5ub3RhdGlvbiBuaWwKKyAg
ICAgICAgICAgIGlmIEBtbGFtX1BSSU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3th
bm5vdGF0aW9ufSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJtbGFtRHVtcCIKKyAg
ICAgICAgICAgICRhc20uYW5ub3RhdGlvbiBuaWwKKyAgICAgICAgICAgIGlmIEBtbGFtX1BSSU5U
RgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiICoqKiAje29wZXJhbmRzWzBd
LmNsVmFsdWV9ID0gJWxkICVwXFxuXCIsICN7b3BlcmFuZHNbMF0uY2xWYWx1ZX0sICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6dm9pZFB0cil9KTsiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbG93ZXJEZWZhdWx0CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSRwcmVmZXJyZWRDb21tZW50U3RhcnRDb2x1
bW4gPSA3MAorJHByZWZlcnJlZENvbW1lbnRTdGFydENvbHVtbiA9IDYyCiAKIAogIyBUdXJucyBv
biBkdW1waW5nIG9mIHRoZSBjb3VudCBvZiBsYWJlbHMuCkBAIC01NCw0ICs1NCw0IEBAICRlbmFi
bGVDb2RlT3JpZ2luQ29tbWVudHMgPSB0cnVlCiAjICAgICJcdG1vdmwgNTIoJXJjeCksICVlY3hc
biIgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKICMgICAgIC4uLgog
IwotJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMgPSBmYWxzZQorJGVuYWJsZUluc3RyQW5ub3RhdGlv
bnMgPSB0cnVlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsy
MTEsOSBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAiYm56IiwKICAgICAgImxlYWkiLAog
ICAgICAibGVhcCIsCisgICAgICJtbGFtQnJlYWsiLCAgICAgICMgbm8gb3BlcmFuZHMgLi4uIGZv
ciBkZWJ1Z2dpbmcgb25seQorICAgICAibWxhbURvIiwgICAgICAgICAjIG5vIG9wZXJhbmRzCisg
ICAgICJtbGFtRHVtcCIsICAgICAgICMgb3BlcmFuZHM6IHZhbHVlVG9EdW1wCiAgICAgXQogCiBY
ODZfSU5TVFJVQ1RJT05TID0KQEAgLTIyNyw3ICsyMzAsMTYgQEAgQVJNdjdfSU5TVFJVQ1RJT05T
ID0KICAgICAgIm9yaXMiCiAgICAgXQogCi1JTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElP
TlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCitDWFhfSU5TVFJVQ1RJ
T05TID0KKyAgICBbCisgICAgICJjeHhDcmFzaCIsICAgICAgICAgICAjIG5vIG9wZXJhbmRzCisg
ICAgICJjeHhDYWxsSlNGdW5jdGlvbiIsICAjIG9wZXJhbmRzOiBjYWxsZWUKKyAgICAgImN4eENh
bGxOYXRpdmUiLCAgICAgICMgb3BlcmFuZHM6IGNhbGxlZQorICAgICAiY3h4Q2FsbFNsb3dQYXRo
IiwgICAgIyBvcGVyYW5kczogY2FsbFRhcmdldCwgY3VycmVudEZyYW1lLCBjdXJyZW50UEMKKyAg
ICAgImN4eFRyYWNlIiwgICAgICAgICAgICMgbm8gb3BlcmFuZHMKKyAgICBdCisKK0lOU1RSVUNU
SU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNU
UlVDVElPTlMgKyBDWFhfSU5TVFJVQ1RJT05TCiAKIElOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcg
Y29weSkKQEAgLTgzNSwxMCArODM1LDEwIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJibHRlcSIK
ICAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKLSAgICAgICAg
d2hlbiAiYnRpbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkK
LSAgICAgICAgd2hlbiAiYnRwbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOnB0cikKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJidGlvIgorICAgICAgICAjIG1s
YW0gVU5VU0VEICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgICAgICMg
bWxhbSBVTlVTRUQgd2hlbiAiYnRwbyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgiam8iLCA6cHRyKQogICAgICAgICB3aGVuICJidGlzIgogICAgICAgICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQogICAgICAgICB3aGVuICJidHBzIgpA
QCAtODUxLDggKzg1MSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQogICAgICAgICB3aGVuICJidHBueiIKICAgICAgICAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpwdHIpCi0gICAgICAgIHdoZW4gImJ0Ym8i
Ci0gICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgICAgICAj
IG1sYW0gVU5VU0VEIHdoZW4gImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiYnRicyIKICAgICAgICAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJ0Ynoi
CkBAIC05NjcsMjQgKzk2NywyNCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BsdGVx
IgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6cHRyKQotICAg
ICAgICB3aGVuICJ0aW8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmlu
dCkKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0aW8iCisgICAgICAgICMgbWxhbSBVTlVT
RUQgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCiAgICAgICAgIHdoZW4gInRpcyIK
ICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQogICAgICAgICB3aGVu
ICJ0aXoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKICAgICAg
ICAgd2hlbiAidGlueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmlu
dCkKLSAgICAgICAgd2hlbiAidHBvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
byIsIDpwdHIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidHBvIgorICAgICAgICAjIG1s
YW0gVU5VU0VEICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOnB0cikKICAgICAgICAgd2hl
biAidHBzIgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpwdHIpCiAgICAg
ICAgIHdoZW4gInRweiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6cHRy
KQogICAgICAgICB3aGVuICJ0cG56IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
bnoiLCA6cHRyKQotICAgICAgICB3aGVuICJ0Ym8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGJvIgorICAg
ICAgICAjIG1sYW0gVU5VU0VEICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCiAg
ICAgICAgIHdoZW4gInRicyIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6
Ynl0ZSkKICAgICAgICAgd2hlbiAidGJ6IgpAQCAtMTAyNyw2ICsxMDI3LDggQEAgY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLng4NkFk
ZHJlc3NPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKICAg
ICAgICAgd2hlbiAibGVhcCIKICAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgo
OnB0cil9ICN7b3BlcmFuZHNbMF0ueDg2QWRkcmVzc09wZXJhbmQoOnB0cil9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOnB0cil9IgorICAgICAgICB3aGVuICJtbGFtQnJlYWsiLCAibWxhbURv
IiwgIm1sYW1EdW1wIgorICAgICAgICAgICAgIyBEbyBub3RoaW5nCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGxvd2VyRGVmYXVsdAogICAgICAgICBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyNTUw
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzg3
LDE4ICs3ODgsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgog
ICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbik7CiAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVk
Q2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOworICAgICAgICAvLyBtbGFtIEJFR0lOIERFQlVH
CisgICAgICAgIC8vQ2FsbEZyYW1lQ2xvc3VyZSYgbWxhbUNsb3N1cmUgPSBjYWNoZWRDYWxsLmNs
b3N1cmUoKTsKKyAgICAgICAgLy9WTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG1sYW1DbG9zdXJlLm5l
d0NhbGxGcmFtZSwgIm1sYW0gQSIpOworICAgICAgICAvLyBtbGFtIEVORAogICAgICAgICBmb3Ig
KDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewogICAgICAgICAg
ICAgaWYgKCFhcnJheS0+Y2FuR2V0SW5kZXgoaykpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBKU1ZhbHVlIHYgPSBhcnJheS0+Z2V0SW5kZXgoayk7CisgICAgICAgICAgICAv
L1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxhbSBC
Iik7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKKyAgICAgICAg
ICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3VyZS5uZXdDYWxsRnJhbWUsICJt
bGFtIEMiKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgdik7CisgICAg
ICAgICAgICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1l
LCAibWxhbSBEIik7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVt
YmVyKGspKTsKKyAgICAgICAgICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3Vy
ZS5uZXdDYWxsRnJhbWUsICJtbGFtIEUiKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJn
dW1lbnQoMiwgdGhpc09iaik7CisgICAgICAgICAgICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUo
bWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxhbSBGIik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CisgICAgICAgICAgICAv
L1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxhbSBH
Iik7CiAgICAgICAgICAgICBpZiAocmVzdWx0LnRvQm9vbGVhbigpKQogICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBmaWx0ZXJJbmRleCsrLCB2KTsKKyAg
ICAgICAgICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3VyZS5uZXdDYWxsRnJh
bWUsICJtbGFtIEgiKTsKICAgICAgICAgfQogICAgICAgICBpZiAoayA9PSBsZW5ndGgpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIG1sYW0gZXZhbHVhdGVfbWxh
bUNvbXBsZXRpb24KIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CkBAIC03Miw3ICs3Myw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUMKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
OwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3Jh
bSwgZXhlYywgc2NvcGVDaGFpbiwgdGhpc09iaik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlX21sYW1QKHByb2dyYW0sIGV4ZWMsIHNjb3BlQ2hhaW4s
IHRoaXNPYmopOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChF
eGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUo
KSwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CiAKKyAgICBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0
ZV9tbGFtQ29tcGxldGlvbihFeGVjU3RhdGUqIGUsIFNjb3BlQ2hhaW5Ob2RlKiBzLCBjb25zdCBT
b3VyY2VDb2RlJiBjLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSwgSlNWYWx1ZSogZXhj
ZXB0aW9uID0gMCkgeworICAgICAgICByZXR1cm4gZXZhbHVhdGUoZSwgcywgYywgdGhpc1ZhbHVl
LCBleGNlcHRpb24pOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBD
b21wbGV0aW9uX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOCBAQCB2b2lk
IEV4ZWN1dGFibGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsCiAKIHZvaWQgRXhlY3V0YWJsZUJh
c2U6OmNsZWFyQ29kZSgpCiB7Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShK
SVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgIG1faml0Q29kZUZvckNh
bGwuY2xlYXIoKTsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKQEAg
LTUxNCw4ICs1MTUsMTAgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
cgogICAgIEFTU0VSVCgoaml0VHlwZSA9PSBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpID09ICFt
X2NvZGVCbG9ja0ZvckNhbGwpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb247CiAgICAgT3duUHRy
PEZ1bmN0aW9uQ29kZUJsb2NrPiBuZXdDb2RlQmxvY2sgPSBwcm9kdWNlQ29kZUJsb2NrRm9yKHNj
b3BlQ2hhaW5Ob2RlLCAhIW1fY29kZUJsb2NrRm9yQ2FsbCA/IE9wdGltaXppbmdDb21waWxhdGlv
biA6IEZpcnN0Q29tcGlsYXRpb24sIENvZGVGb3JDYWxsLCBleGNlcHRpb24pOwotICAgIGlmICgh
bmV3Q29kZUJsb2NrKQorICAgIGlmICghbmV3Q29kZUJsb2NrKSB7CisgICAgICAgIHByaW50Zigi
XG5cbiBtbGFtIEVYQ0VQVElPTiBAICVzICVzOiVkXG5cbiIsIF9fRlVOQ1RJT05fXywgX19GSUxF
X18sIF9fTElORV9fKTsKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CiAKICAgICBu
ZXdDb2RlQmxvY2stPnNldEFsdGVybmF0aXZlKHN0YXRpY19wb2ludGVyX2Nhc3Q8Q29kZUJsb2Nr
PihtX2NvZGVCbG9ja0ZvckNhbGwucmVsZWFzZSgpKSk7CiAgICAgbV9jb2RlQmxvY2tGb3JDYWxs
ID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQg
Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSopOwogCi0jaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgSklUQ29kZSYgZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9qaXRDb2RlRm9yQ2FsbCk7CkBAIC0yMDAsMTggKzE5OSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwg
bV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0KTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBtX3ByZXY7CiAgICAgICAgIEV4ZWN1
dGFibGVCYXNlKiBtX25leHQ7CiAKLSNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlIG1f
aml0Q29kZUZvckNhbGw7CiAgICAgICAgIEpJVENvZGUgbV9qaXRDb2RlRm9yQ29uc3RydWN0Owog
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2s7Ci0jZW5kaWYKICAgICB9OwogCiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CkBAIC0yMzYsNyArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9D
X0xPT1ApIC8vIG1sYW0KICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFnbG9i
YWxEYXRhLmNhblVzZUpJVCgpKTsKQEAgLTI2MSw2ICsyNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5rLCBKSVRDb2RlIGNvbnN0
cnVjdFRodW5rLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoIWdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsMTIgKzM3MSwxMyBAQCBOYXRpdmVFeGVjdXRh
YmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGCiAgICAgQVNTRVJUKGNhblVzZUpJVCgpKTsKICAg
ICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWIodGhpcywgZnVuY3Rpb24sIGludHJp
bnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNp
YykgOiAwLCBpbnRyaW5zaWMpOwogfQotI2Vsc2UKKworI2Vsc2UgLy8gIUVOQUJMRShKSVQpCiBO
YXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7CiAgICAgcmV0dXJu
IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsK
IH0KLSNlbmRpZgorI2VuZGlmIC8vICFFTkFCTEUoSklUKQogCiBKU0dsb2JhbERhdGE6OkNsaWVu
dERhdGE6On5DbGllbnREYXRhKCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRl
ICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQu
aCIKIApAQCAtMTQyLDYgKzE0MywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2Jq
ZWN0KiB0aGlzCiAgICAgbV9nbG9iYWxTY29wZUNoYWluLnNldChnbG9iYWxEYXRhKCksIHRoaXMs
IFNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUoMCwgdGhpcywgJmdsb2JhbERhdGEoKSwgdGhpcywgdGhp
c1ZhbHVlKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpLT5pbml0KDAsIDAs
IG1fZ2xvYmFsU2NvcGVDaGFpbi5nZXQoKSwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsK
KyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6
OmR1bXBGcmFtZShKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpLCAiICA+Pj4gUFVTSEVEIHRv
IG5ldyAiLCAwLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlm
CisgICAgLy8gbWxhbSBFTkQKIAogICAgIG1fZGVidWdnZXIgPSAwOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6
U3BlY3VsYXRpdmVKSVQ7CiAjZW5kaWYKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50OjpEYXRh
OworICAgICAgICAvLyBtbGFtIEJFR0lOCisgICAgICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3Rv
cjsKKyAgICAgICAgLy8gbWxhbSBFTkQKIAogICAgIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtMTY2LDYgKzE2OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBleHBsaWNp
dCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOwogICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcg
bG9uZyk7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nKTsKKyAg
ICAgICAgLy8gbWxhbSBCRUdJTiAuLi4gbmVlZCB0byBtYWtlIHRoaXMgYSBzcGVjaWFsIHByaXZp
bGVnZWQgb3BlcmF0aW9uLgorICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBp
bnQzMl90IHBheWxvYWQpOworICAgICAgICAvLyBtbGFtIEVORAogCiAgICAgICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90
aGVyKSBjb25zdDsKQEAgLTI3Miw2ICsyNzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3Rh
dGUqKSBjb25zdDsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisKKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgICAgICAvLyBUaGUgTExJTlQgQyBMb29wIG5lZWRzIHRvIGFjY2VzcyB0aGUg
dGFnIGFuZCBwYXlsb2FkIGRpcmVjdGx5LgorICAgIHB1YmxpYzoKKyNlbmRpZgogICAgICAgICAv
KgogICAgICAgICAgKiBPbiAzMi1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVFMzJfNjQpIHNob3Vs
ZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKICAgICAgICAgICogZm9ybSBm
b3IgaW1tZWRpYXRlcy4KQEAgLTI5Miw2ICszMDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAqLwogICAgICAgICB1aW50MzJfdCB0YWcoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCBw
YXlsb2FkKCkgY29uc3Q7CisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIHByaXZhdGU6
CisjZW5kaWYKKwogI2VsaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLyoKICAgICAgICAgICog
T24gNjQtYml0IHBsYXRmb3JtcyBVU0UoSlNWQUxVRTY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5k
IHdlIHVzZSBhIE5hTi1lbmNvZGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEyNTUwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHUuYXNCaXRzLnBheWxvYWQgPSBpOwogICAgIH0KIAorICAgIC8vIG1sYW0gQkVHSU4gRklYTUUg
Li4uIG5lZWQgdG8gbWFrZSB0aGlzIGEgc3BlY2lhbCBwcml2aWxlZ2VkIG9wZXJhdGlvbi4KKyAg
ICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQor
ICAgIHsKKyAgICAgICAgdS5hc0JpdHMudGFnID0gdGFnOworICAgICAgICB1LmFzQml0cy5wYXls
b2FkID0gcGF5bG9hZDsKKyAgICB9CisgICAgLy8gbWxhbSBFTkQgKi8KKwogICAgIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0lu
dDMyKCkgfHwgaXNEb3VibGUoKTsKQEAgLTMyMyw3ICszMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIHBheWxvYWQoKTsKICAgICB9CiAKLSNlbHNlIC8vIFVTRShKU1ZBTFVF
MzJfNjQpCisjZWxzZSAvLyAhVVNFKEpTVkFMVUUzMl82NCkKIAogICAgIC8vIEpTVmFsdWUgbWVt
YmVyIGZ1bmN0aW9ucy4KICAgICBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgdm9pZCBP
cHRpb25zOjppbml0aWFsaXplKCkKICAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8g
YXV0byBpbmRlbnRhdGlvbgogI2VuZGlmCiAgICAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkg
Ly8gbWxhbQorICAgIHVzZUpJVCgpID0gZmFsc2U7CisgICAgdXNlREZHSklUKCkgPSBmYWxzZTsK
KyNlbmRpZiAvLyBtbGFtCisKICAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2hlcmUgbmVlZGVkIGFu
ZCBtYWtlIGNvcnJlY3Rpb25zIHRvIHRoZSBvcHRpb25zOgogICAgIEFTU0VSVCh0aHJlc2hvbGRG
b3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpID49IHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJX
YXJtVXAoKSk7CiAgICAgQVNTRVJUKHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+
PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0MDEs
NyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShKU0dsb2JhbERhCiAgICAgfQogCiAj
aWYgRU5BQkxFKFlBUlJfSklUKQorLy8gI2Vycm9yIG1sYW0gWWF5ISBHb3QgWUFSUl9KSVQKICAg
ICBpZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNh
blVzZVJlZ0V4cEpJVCgpKSB7CiAgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgY2hh
clNpemUsIGdsb2JhbERhdGEsIG1fcmVnRXhwSklUQ29kZSwgWWFycjo6TWF0Y2hPbmx5KTsKICNp
ZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1
ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5h
dGUuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC04OSw2ICs5MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVj
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rv
cjo6ZHVtcEZyYW1lKGV4ZWMsICIgKioqIHJlZ0V4cFByb3RvRnVuY0V4ZWMoKSIpOworICAgICNl
bmRpZgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZSZWdFeHBPYmplY3Q6OnNfaW5mbykpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0MiwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCisvLyBtbGFtIEJFR0lOIHRlc3QKK3Vuc2lnbmVkIEJ5
dGVUZXJtOjptbGFtQnl0ZVRlcm1JZCA9IDA7CisvLyBtbGFtIEVORCB0ZXN0CisKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlPgogY2xhc3MgSW50ZXJwcmV0ZXIgewogcHVibGljOgpAQCAtNzI4
LDYgKzczMiw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVy
bTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQpOwogICAgICAgICBBU1NFUlQodGVy
bS5hdG9tLnF1YW50aXR5Q291bnQgPT0gMSk7CiAKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgICAgIHByaW50ZigiICoqKiBiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VFbmQodGVybSAlcCwg
Y29udGV4dCAlcClcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgY29udGV4dCk7CisgICAgICAgICNl
bmRpZgogICAgICAgICBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlKiBiYWNrVHJhY2sgPSBy
ZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2UqPihjb250ZXh0LT5m
cmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20u
cXVhbnRpdHlUeXBlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxMyBA
QAogI2lmbmRlZiBZYXJySW50ZXJwcmV0ZXJfaAogI2RlZmluZSBZYXJySW50ZXJwcmV0ZXJfaAog
CisjaW5jbHVkZSAiY29uZmlnLmgiIC8vIG1sYW0KICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29k
ZS5oPgogCisjZGVmaW5lIG1sYW1fUFJJTlRGX3JlZ2V4IG1sYW1fUFJJTlRGCisKIG5hbWVzcGFj
ZSBXVEYgewogY2xhc3MgQnVtcFBvaW50ZXJBbGxvY2F0b3I7CiB9CkBAIC0xMDYsNiArMTA5LDEw
IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgYm9vbCBtX2NhcHR1cmUgOiAxOwogICAgIGJvb2wg
bV9pbnZlcnQgOiAxOwogICAgIHVuc2lnbmVkIGlucHV0UG9zaXRpb247CisgICAgLy8gbWxhbSBC
RUdJTiB0ZXN0CisgICAgdW5zaWduZWQgbWxhbUlkOworICAgIHN0YXRpYyB1bnNpZ25lZCBtbGFt
Qnl0ZVRlcm1JZDsKKyAgICAvLyBtbGFtIEVORCB0ZXN0CiAKICAgICBCeXRlVGVybShVQ2hhciBj
aCwgaW50IGlucHV0UG9zLCB1bnNpZ25lZCBmcmFtZUxvY2F0aW9uLCBDaGVja2VkPHVuc2lnbmVk
PiBxdWFudGl0eUNvdW50LCBRdWFudGlmaWVyVHlwZSBxdWFudGl0eVR5cGUpCiAgICAgICAgIDog
ZnJhbWVMb2NhdGlvbihmcmFtZUxvY2F0aW9uKQpAQCAtMTI4LDYgKzEzNSwxMCBAQCBzdHJ1Y3Qg
Qnl0ZVRlcm0gewogICAgICAgICBhdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAg
ICAgICAgYXRvbS5xdWFudGl0eUNvdW50ID0gcXVhbnRpdHlDb3VudC51bnNhZmVHZXQoKTsKICAg
ICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxhbV9QUklOVEZf
cmVnZXgKKyAgICAgICAgbWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAgICAgICAgcHJpbnRm
KCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2
b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlucHV0UG9zaXRpb24s
IF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICB9CiAKICAgICBC
eXRlVGVybShVQ2hhciBsbywgVUNoYXIgaGksIGludCBpbnB1dFBvcywgdW5zaWduZWQgZnJhbWVM
b2NhdGlvbiwgQ2hlY2tlZDx1bnNpZ25lZD4gcXVhbnRpdHlDb3VudCwgUXVhbnRpZmllclR5cGUg
cXVhbnRpdHlUeXBlKQpAQCAtMTUyLDYgKzE2MywxMCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAg
ICAgICBhdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAgICAgICAgYXRvbS5xdWFu
dGl0eUNvdW50ID0gcXVhbnRpdHlDb3VudC51bnNhZmVHZXQoKTsKICAgICAgICAgaW5wdXRQb3Np
dGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxhbV9QUklOVEZfcmVnZXgKKyAgICAgICAg
bWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAgICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhp
cyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRl
cm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywg
X19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICB9CiAKICAgICBCeXRlVGVybShDaGFyYWN0
ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3MsIGJvb2wgaW52ZXJ0LCBpbnQgaW5wdXRQb3MpCkBAIC0x
NjMsNiArMTc4LDEwIEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgIGF0b20ucXVhbnRpdHlU
eXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9
IDE7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKKyAgICAgICAgI2lmIG1sYW1f
UFJJTlRGX3JlZ2V4CisgICAgICAgIG1sYW1JZCA9ICsrbWxhbUJ5dGVUZXJtSWQ7CisgICAgICAg
IHByaW50ZigiICUlJSBtbGFtIHRoaXMoJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVk
XG4iLCAodm9pZCopbWxhbUJ5dGVUZXJtSWQsIGlucHV0UG9zaXRpb24sICh2b2lkKilpbnB1dFBv
c2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgI2VuZGlmCiAgICAgfQog
CiAgICAgQnl0ZVRlcm0oVHlwZSB0eXBlLCB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQsIEJ5dGVEaXNq
dW5jdGlvbiogcGFyZW50aGVzZXNJbmZvLCBib29sIGNhcHR1cmUsIGludCBpbnB1dFBvcykKQEAg
LTE3NSw2ICsxOTQsMTAgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5xdWFudGl0
eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKICAgICAgICAgYXRvbS5xdWFudGl0eUNvdW50
ID0gMTsKICAgICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxh
bV9QUklOVEZfcmVnZXgKKyAgICAgICAgbWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAgICAg
ICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6
JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlucHV0
UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICB9
CiAgICAgCiAgICAgQnl0ZVRlcm0oVHlwZSB0eXBlLCBib29sIGludmVydCA9IGZhbHNlKQpAQCAt
MTg0LDYgKzIwNywxMSBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAgYXRvbS5x
dWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKICAgICAgICAgYXRvbS5xdWFudGl0
eUNvdW50ID0gMTsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3JlZ2V4CisgICAgICAgIGlucHV0
UG9zaXRpb24gPSAweGNhZmViYWJlOyAvLyBtbGFtIFRFU1QKKyAgICAgICAgbWxhbUlkID0gKytt
bGFtQnl0ZVRlcm1JZDsKKyAgICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQ
b3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQ
b3NpdGlvbiwgKHZvaWQqKWlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwor
ICAgICAgICAjZW5kaWYKICAgICB9CiAKICAgICBCeXRlVGVybShUeXBlIHR5cGUsIHVuc2lnbmVk
IHN1YnBhdHRlcm5JZCwgYm9vbCBjYXB0dXJlLCBib29sIGludmVydCwgaW50IGlucHV0UG9zKQpA
QCAtMTk1LDEyICsyMjMsMjQgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5xdWFu
dGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKICAgICAgICAgYXRvbS5xdWFudGl0eUNv
dW50ID0gMTsKICAgICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYg
bWxhbV9QUklOVEZfcmVnZXgKKyAgICAgICAgbWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAg
ICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAg
JXM6JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlu
cHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAvKiBtbGFtIGlm
IChtbGFtSWQgPT0gMTY2KSB7CisgICAgICAgICAgICBpbnQqIHAgPSAwOworICAgICAgICAgICAg
KnAgPSAwOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0gKi8KKyAgICAgICAg
I2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIEJ5dGVUZXJtIEJPTChpbnQgaW5wdXRQb3MpCiAg
ICAgewogICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGVBc3NlcnRpb25CT0wpOwogICAgICAgICB0
ZXJtLmlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3Jl
Z2V4CisgICAgICAgIHByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAl
dSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwg
KHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CisgICAg
ICAgICNlbmRpZgogICAgICAgICByZXR1cm4gdGVybTsKICAgICB9CiAKQEAgLTIyMiw2ICsyNjIs
OSBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBl
QXNzZXJ0aW9uRU9MKTsKICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7Cisg
ICAgICAgICNpZiBtbGFtX1BSSU5URl9yZWdleAorICAgICAgICBwcmludGYoIiAlJSUgbWxhbSB0
ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxh
bUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVO
Q1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRlcm07
CiAgICAgfQogCkBAIC0yMjksNiArMjcyLDkgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICB7CiAg
ICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeSwgaW52ZXJ0KTsK
ICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7CisgICAgICAgICNpZiBtbGFt
X1BSSU5URl9yZWdleAorICAgICAgICBwcmludGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBv
c2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0
UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5F
X18pOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NzIsMTAgKzU3MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MOgogICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKICAgICAgICAgICAgICAgICB0
ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAg
ICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24g
PSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlv
biwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1
cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIC8vcHJpbnRm
KCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2
b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAodm9pZCopdGVybS5pbnB1dFBv
c2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKICAgICAgICAgICAgICAgICB0ZXJtLmZy
YW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBjdXJy
ZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9CYWNrUmVm
ZXJlbmNlOwogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZh
bHNlOwpAQCAtNTg2LDYgKzU4OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXI6CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1
dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAg
ICAgICAgLy9wcmludGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAg
QCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lk
Kil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCkgewog
ICAgICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1l
U2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0
YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3RlcjsKQEAgLTU5Niw2ICs1OTks
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0
ZXJDbGFzczoKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBt
bGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVy
bS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwg
X19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHRl
cm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0lu
Zm9DaGFyYWN0ZXJDbGFzczsKQEAgLTYxNSwxMiArNjE5LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50
KQogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudElucHV0UG9zaXRpb24gKz0gdGVybS5w
YXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICAg
ICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIC8vcHJpbnRmKCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQ
b3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1
dFBvc2l0aW9uLCAodm9pZCopdGVybS5pbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElO
RV9fKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlcm0ucGFyZW50aGVzZXMuaXNUZXJt
aW5hbCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsOwogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRz
KHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJy
ZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0u
aW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAg
ICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24g
PSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlv
biwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBv
c2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAg
ICAgICAgIC8vcHJpbnRmKCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVw
IEAgJXM6JWRcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAodm9p
ZCopdGVybS5pbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKICAgICAgICAg
ICAgICAgICAgICAgc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbiwgMCwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczsKICAgICAgICAgICAgICAgICB9CkBAIC02MzAsNiArNjM3LDcg
QEAgcHVibGljOgogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0
aWNhbEFzc2VydGlvbjoKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJy
ZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50Zigi
ICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9p
ZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3Np
dGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICAgICAgdGVybS5mcmFt
ZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgY3VycmVu
dENhbGxGcmFtZVNpemUgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2Vz
LmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFj
a1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVu
c2FmZUdldCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYzNyw2ICs2NDUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3Vy
ZToKICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBpbml0aWFsSW5wdXRQb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9z
aXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQ
b3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVf
Xyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTEgQEAKIC8qIEluY2x1ZGUgY29tcGls
ZXIgc3BlY2lmaWMgbWFjcm9zICovCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAKKy8vIG1s
YW0gQkVHSU4KKyNkZWZpbmUgRU5BQkxFX0pJVCAwCisvLyNkZWZpbmUgRU5BQkxFX1lBUlJfSklU
IDAKKy8vIG1sYW0gRU5ECisKIC8qID09PT0gUExBVEZPUk0gaGFuZGxlcyBPUywgb3BlcmF0aW5n
IGVudmlyb25tZW50LCBncmFwaGljcyBBUEksIGFuZAogICAgQ1BVLiBUaGlzIG1hY3JvIHdpbGwg
YmUgcGhhc2VkIG91dCBpbiBmYXZvciBvZiBwbGF0Zm9ybSBhZGFwdGF0aW9uCiAgICBtYWNyb3Ms
IHBvbGljeSBkZWNpc2lvbiBtYWNyb3MsIGFuZCB0b3AtbGV2ZWwgcG9ydCBkZWZpbml0aW9ucy4g
PT09PSAqLwpAQCAtODkzLDYgKzg5OCwyMCBAQAogICAgICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikpCiAjZGVmaW5lIEVOQUJMRV9MTElOVCAxCiAjZW5kaWYK
Ky8vIG1sYW0gQkVHSU4KKyNpZiAhRU5BQkxFKEpJVCkKKy8vKgorICAgICNkZWZpbmUgRU5BQkxF
X0NMQVNTSUNfSU5URVJQUkVURVIgMAorICAgICNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyAgICAj
ZGVmaW5lIEVOQUJMRV9MTElOVF9DX0xPT1AgMQorICAgIC8vICNkZWZpbmUgRU5BQkxFX1lBUlJf
SklUIDEKKy8qLworICAgICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMQorICAg
ICNkZWZpbmUgRU5BQkxFX1lBUlJfSklUIDEKKyovCisgICAgI2RlZmluZSBFTkFCTEVfREZHX0pJ
VCAwCisjZW5kaWYKKy8vIG1sYW0gRU5EICovCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJ
VCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82
NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwpAQCAtOTMyLDEwICs5NTEs
MTEgQEAKICNlbmRpZgogCiAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50
ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxlZC4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVfQ0xBU1NJ
Q19JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShKSVQpCisjaWYgIWRlZmluZWQoRU5BQkxFX0NMQVNT
SUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKSAmJiAhRU5BQkxFKExMSU5UKQogI2RlZmlu
ZSBFTkFCTEVfQ0xBU1NJQ19JTlRFUlBSRVRFUiAxCiAjZW5kaWYKLSNpZiAhKEVOQUJMRShKSVQp
IHx8IEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSkKKy8vIG1sYW0gb3JpZyAjaWYgIShFTkFC
TEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikpCisjaWYgIShFTkFCTEUoSklU
KSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKICNlcnJv
ciBZb3UgaGF2ZSB0byBoYXZlIGF0IGxlYXN0IG9uZSBleGVjdXRpb24gbW9kZWwgZW5hYmxlZCB0
byBidWlsZCBKU0MKICNlbmRpZgogCkBAIC05NjAsNyArOTgwLDggQEAKICNkZWZpbmUgRU5BQkxF
X1JFR0VYUF9UUkFDSU5HIDAKIAogLyogWWV0IEFub3RoZXIgUmVnZXggUnVudGltZSAtIHR1cm5l
ZCBvbiBieSBkZWZhdWx0IGZvciBKSVQgZW5hYmxlZCBwb3J0cy4gKi8KLSNpZiAhZGVmaW5lZChF
TkFCTEVfWUFSUl9KSVQpICYmIEVOQUJMRShKSVQpICYmICFQTEFURk9STShDSFJPTUlVTSkKKy8v
IG1sYW0gb3JpZyAjaWYgIWRlZmluZWQoRU5BQkxFX1lBUlJfSklUKSAmJiBFTkFCTEUoSklUKSAm
JiAhUExBVEZPUk0oQ0hST01JVU0pCisjaWYgIWRlZmluZWQoRU5BQkxFX1lBUlJfSklUKSAmJiAo
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkpICYmICFQTEFURk9STShDSFJPTUlV
TSkKICNkZWZpbmUgRU5BQkxFX1lBUlJfSklUIDEKIAogLyogU2V0dGluZyB0aGlzIGZsYWcgY29t
cGFyZXMgSklUIHJlc3VsdHMgd2l0aCBpbnRlcnByZXRlciByZXN1bHRzLiAqLwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJ
KHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHJldHVybiBK
U0M6OmV2YWx1YXRlKGV4ZWMsIGNoYWluLCBzb3VyY2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZXhlYywgY2hhaW4s
IHNvdXJjZSwgdGhpc1ZhbHVlLCBleGNlcHRpb24pOwogICAgIH07CiAKIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTI1NTA2KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgX05QTl9FdmFsdWF0ZShOUFAgaW5zdGFuY2UsIE5QT2Jq
ZWMKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFN0cmluZyBzY3Jp
cHRTdHJpbmcgPSBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KHMpOwogICAgICAgICAKLSAgICAgICAg
SlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNj
b3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7Cisg
ICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlX21sYW1Db21wbGV0aW9u
KHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5n
KSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4
ZWMsIHJldHVyblZhbHVlLCB2YXJpYW50KTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0
OjpldmFsKGpzdHJpbmcgc2NyaXAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhyb290T2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsKICAgICAKICAgICByb290T2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWlu
KCksIG1ha2VTb3VyY2UoSmF2YVN0cmluZyhzY3JpcHQpLmltcGwoKSkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gSlNDOjpldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihyb290T2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpLCByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
U2NvcGVDaGFpbigpLCBtYWtlU291cmNlKEphdmFTdHJpbmcoc2NyaXB0KS5pbXBsKCkpKTsKICAg
ICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0b3AoKTsKIAogICAgIHJldHVybiBjb252ZXJ0VmFsdWVUb0pPYmplY3QocmVzdWx0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHlfaAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAog
CisvLyBtbGFtIEJFR0lOCisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisvLyBtbGFt
IEVORAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsRGF0YS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158356</attachid>
            <date>2012-08-14 10:09:03 -0700</date>
            <delta_ts>2012-08-16 10:45:06 -0700</delta_ts>
            <desc>work in progress 6: added a missing new file.  Now down to 2 crashes and 1 test failure left to investigate.</desc>
            <filename>bug-91052-wop6.patch</filename>
            <type>text/plain</type>
            <size>350091</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDUgQEAKICNlbHNlCiAjZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19P
Tl9HQ0MgMQogI2VuZGlmCisKKyNkZWZpbmUgbWxhbV9QUklOVEYgMApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwogICAgIFN0b3BX
YXRjaCBzdG9wV2F0Y2g7CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7Ci0gICAgZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZleGNlcHRp
b24pOworICAgIGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5k
YXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXhjZXB0aW9uKTsKICAgICBzdG9wV2F0Y2gu
c3RvcCgpOwogCiAgICAgaWYgKCEhZXhjZXB0aW9uKSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYQogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAg
SlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1
ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRpYyBi
b29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAgZ2xvYmFsRGF0YS5zdGFy
dFNhbXBsaW5nKCk7CiAKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0
LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICBK
U1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3Vy
Y2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwog
ICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICAg
ICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYo
IkVuZDogJXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpA
QCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVj
dCoKICAgICAgICAgaWYgKGxpbmVbMF0pCiAgICAgICAgICAgICBhZGRfaGlzdG9yeShsaW5lKTsK
ICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBKU1ZhbHVlIHJl
dHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9i
amVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2UobGluZSwgaW50ZXJwcmV0ZXJOYW1l
KSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLCBp
bnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAg
ICAgZnJlZShsaW5lKTsKICNlbHNlCiAgICAgICAgIHByaW50ZigiJXMiLCBpbnRlcmFjdGl2ZVBy
b21wdCk7CkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xv
YmFsT2JqZWN0KgogICAgICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKIAogICAgICAgICBKU1ZhbHVl
IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFs
dWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1
ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUg
PSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50
ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAjZW5kaWYK
ICAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYoIkV4
Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpT
Q29udGV4dFJlZgogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVz
dHJpbmcoKSwgc291cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSkpOwogCiAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUg
cmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZSwganNUaGlzT2JqZWN0LCAmZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgc291cmNlLCBqc1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9u
KTsKIAogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRp
b24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2
aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMJKHdvcmtpbmcgY29weSkKQEAgLTEwMzIsNiArMTAzMiwxMyBAQCBzdGF0aWMgdm9pZCBjaGVj
a0NvbnN0bmVzc0luSlNPYmplY3ROYW1lCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCiB7CisgICAgLy8gbWxhbSBCRUdJTgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsg
aSsrKSB7CisgICAgICAgIHByaW50ZigiICVzIiwgYXJndltpXSk7CisgICAgfQorICAgIHByaW50
ZigiXG4iKTsKKyAgICAvLyBtbGFtIEVORAorCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBDeWd3
aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyksIHdoaWNoIHdl
IHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCiAgICAgLy8gdGVzdGluZy9kZWJ1Z2dpbmcs
IGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgbm90IHRvIGJlIGludm9rZWQu
IFdlIHJlc2V0IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDkgQEAKIAkJ
RTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3
MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwogCQlFNDlEQzE2QzEy
RUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTExMkVGMjcyMjAwMTg0QTFGIC8q
IFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNEEz
MzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyog
Vk1JbnNwZWN0b3IuY3BwICovOyB9OworCQlGRTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1J
bnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovOyB9OworCQlGRTdF
Rjg5QTE1REE0NEM4MDA0Q0NBNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAvKiBM
TEludE9wY29kZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xNDk3LDYgKzE1MDAs
OSBAQAogCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVU3RyaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NjAy
NTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsK
KwkJRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZNSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU0QTMzMUUxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAvKiBMTElu
dE9wY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9wY29kZS5o
OyBwYXRoID0gbGxpbnQvTExJbnRPcGNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0xNjMwLDYgKzE2MzYsNyBA
QAogCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAv
KiBMTEludE9wY29kZS5oICovLAogCQkJCTVERERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBMTElu
dERlc2lyZWRPZmZzZXRzLmggKi8sCiAJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50RW50cnlwb2ludHMuY3BwICovLAogCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmggKi8sCkBAIC0xNjk5LDYgKzE3MDYsOCBAQAogCQkxNDI5RDc3QTBF
RDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNEEzMzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3Bl
Y3Rvci5jcHAgKi8sCisJCQkJRkU0QTMzMUUxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9y
LmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICov
LAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJ
QTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENhY2hlZENhbGwuaCAqLywKQEAgLTI4NjYsNyAr
Mjg3NSw5IEBACiAJCQkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDQ0MTVCMkEzQzAw
MDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZENDYx
NUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTdFRjg5QTE1REE0NEM4
MDA0Q0NBNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzQ2NCw2ICszNDc1
LDcgQEAKIAkJCQkwRjc2NkQyRjE1QThEQ0UwMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM0MTVBRTI1MzgwMDhGMzYzRSAvKiBK
dW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4
MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFNEEzMzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYzOTQ0MDE1Qzc1RjFEMDA2QTU5N0MgLyogREZH
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2Nh
dG9yLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIiAvLyBtbGFtCiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTI4OSwxMCArMjkwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIC8vIG1s
YW0gc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVMTEludENvZGVQdHIoTExJbnRP
cGNvZGUgb3Bjb2RlKQorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlTExJ
bnRDb2RlUHRyKExMSW50T3Bjb2RlSUQgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGNvZGUp
KTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRl
TExJbnRDb2RlUHRyKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikp
OwogICAgIH0KKyNlbmRpZgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7CkBA
IC0zNTQsMTEgKzM2MywxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIC8vIEhlbHBlciBm
b3IgY3JlYXRpbmcgc2VsZi1tYW5hZ2VkIGNvZGUgcmVmcyBmcm9tIExMSW50LgorI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgLy8gbWxhbSBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNyZWF0ZUxMSW50Q29kZVJlZihMTEludE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBjcmVhdGVMTEludENvZGVSZWYoTExJbnRPcGNvZGVJRCBvcGNvZGUp
CisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG9wY29kZSkpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY3JlYXRlTExJbnRDb2RlUmVmKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICB7
CiAgICAgICAgIHJldHVybiBjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZvaWQqPihm
dW5jdGlvbikpKTsKICAgICB9Ci0gICAgCisjZW5kaWYKICAgICBFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2V4
ZWN1dGFibGVNZW1vcnkuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjcsMTMg
KzIwMjcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdAogICAg
IHBlcmZvcm1UcmFjaW5nRml4cG9pbnRJdGVyYXRpb24odmlzaXRvcik7CiB9CiAKLSNpZiBFTkFC
TEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcg
PSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxz
ZTsKICNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkg
fHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAKIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgpCiB7CkBAIC0yNTc2LDEyICsyNTc2LDMxIEBAIHZvaWQgQ29kZUJsb2Nr
Ojp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2lu
KCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVn
aW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKKworI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1Ap
CiB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogI2lmIEVOQUJMRShMTElOVCkKLSAgICBp
ZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Jl
Z2luKQotICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZW5kKSkgeworI2lmIEVOQUJMRShKSVQpCisgICAgLy8gV2hlbiB1c2luZyB0
aGUgSklULCB3ZSBjb3VsZCBoYXZlIGFkZHJlc3NlcyB0aGF0IGFyZSBub3QgYnl0ZWNvZGUKKyAg
ICAvLyBhZGRyZXNzZXMuIFdlIGNoZWNrIGlmIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiB0aGUg
TExpbnQgZ2x1ZSBhbmQKKyAgICAvLyBvcGNvZGUgaGFuZGxlcnMgcmFuZ2UgaGVyZSB0byBlbnN1
cmUgdGhhdCB3ZSBhcmUgbG9va2luZyBhdCBieXRlY29kZQorICAgIC8vIGJlZm9yZSBhdHRlbXB0
aW5nIHRvIGNvbnZlcnQgdGhlIHJldHVybiBhZGRyZXNzIGludG8gYSBieXRlY29kZSBvZmZzZXQu
CisgICAgLy8KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiB0aGUgQyBMb29wIExMSW50LCB0aGUgSklU
IGlzIGRpc2FibGVkLCBhbmQgdGhlIG9ubHkKKyAgICAvLyB2YWxpZCByZXR1cm4gYWRkcmVzc2Vz
IHNob3VsZCBiZSBieXRlY29kZSBQQ3MuICBTbywgd2UgY2FuIGFuZCBuZWVkIHRvCisgICAgLy8g
Zm9yZWdvIHRoaXMgY2hlY2sgYmVjYXVzZSwgd2hlbiB3ZSdyZSBub3QgdXNpbmcgQ09NUFVURURf
R09UT19PUENPREVTLAorICAgIC8vIHRoZSBieXRlY29kZSAiUEMicyBhcmUgYWN0dWFsbHkgdGhl
IG9wY29kZUlEcyBhbmQgYXJlIG5vdCBib3VuZGVkIGJ5CisgICAgLy8gbGxpbnRfYmVnaW4gYW5k
IGxsaW50X2VuZC4KKworICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gTExJbnQ6OkRh
dGE6OmdldENvZGVQdHIobGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFs
dWUoKSA8PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihsbGludF9lbmQpKSAKKyNlbHNlIC8vICFF
TkFCTEUoSklUKQorICAgIFVOVVNFRF9QQVJBTShyZXR1cm5BZGRyZXNzKTsKKyNlbmRpZiAvLyAh
RU5BQkxFKEpJVCkKKyAgICB7CiAgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CiAg
ICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwpAQCAtMjU5NSwxOCArMjYx
NCwxOCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAgICAgICAg
IEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChv
cF9jYWxsKSk7CiAgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09E
RV9MRU5HVEgob3BfY29uc3RydWN0KSk7CiAgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9w
X2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7Ci0gICAgICAgIGlmIChpbnN0
cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpXS51LnBvaW50ZXIgPT0gYml0
d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX3ZhcmFyZ3MpKSB7CisgICAgICAgIGlmIChp
bnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpXS51LnBvaW50ZXIgPT0g
TExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbF92YXJhcmdzKSkgewogICAgICAgICAgICAg
Ly8gV2Uga25vdyB0aGF0IHRoZSBwcmVjZWRpbmcgaW5zdHJ1Y3Rpb24gbXVzdCBiZSBvcF9jYWxs
X3ZhcmFyZ3MgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdGhhdAogICAgICAgICAgICAgLy8gdGhl
IHBvaW50ZXIgdG8gdGhlIGNhbGxfdmFyYXJncyBjb3VsZCBiZSBhbiBvcGVyYW5kIHRvIHRoZSBj
YWxsLgogICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gLT0gT1BDT0RFX0xFTkdUSChvcF9jYWxsX3Zh
cmFyZ3MpOwotICAgICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9w
X2NhbGwpXS51LnBvaW50ZXIgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsKQot
ICAgICAgICAgICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwp
XS51LnBvaW50ZXIgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jb25zdHJ1Y3QpCi0g
ICAgICAgICAgICAgICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCld
LnUucG9pbnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfZXZhbCkpOwor
ICAgICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51
LnBvaW50ZXIgIT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbCkKKyAgICAgICAgICAg
ICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVy
ICE9IExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKG9wX2NvbnN0cnVjdCkKKyAgICAgICAgICAgICAg
ICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9
IExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKG9wX2NhbGxfZXZhbCkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gTXVzdCBiZSB0aGF0IHRoZSBsYXN0IGluc3RydWN0aW9uIHdhcyBz
b21lIG9wX2NhbGwuCi0gICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5H
VEgob3BfY2FsbCldLnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2Nh
bGwpCi0gICAgICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3Bf
Y2FsbCldLnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVj
dCkKLSAgICAgICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9j
YWxsKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFs
KSk7CisgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2Fs
bCldLnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihvcF9jYWxsKQorICAgICAg
ICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBv
aW50ZXIgPT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY29uc3RydWN0KQorICAgICAgICAg
ICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50
ZXIgPT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbF9ldmFsKSk7CiAgICAgICAgICAg
ICBpbnN0cnVjdGlvbiAtPSBPUENPREVfTEVOR1RIKG9wX2NhbGwpOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMjYxNSwxMiArMjYzNCwxNSBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2Rl
T2Zmc2V0KEV4ZWNTCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKEpJVCkgLy8gbWxhbSBpcyB0aGlzIHRydWx5IEpJVCBvbmx5PyAgQ2hlY2sgd2l0
aCBGaWxpcC4KICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybiAxOwogICAgIFZl
Y3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9y
YXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CiAgICAgaWYgKCFjYWxsSW5kaWNlcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0
PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5v
ZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkgLy8gbWxhbSBpcyB0aGlzIHRydWx5IEpJVCBvbmx5PyAgQ2hlY2sgd2l0
aCBGaWxpcC4KIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAK
IC8vIChhcyBvcHBvc2VkIHRvIGFwcCBkZWJ1Z2dpbmcpLCB0aGlzIGZlYXR1cmUgaXMgdG8gYmUg
ZGlzYWJsZWQgYnkgZGVmYXVsdCwKIC8vIGFuZCBjYW4gYmUgZW5hYmxlZCBhcyBuZWVkZWQgZm9y
IFZNIGRldmVsb3BtZW50IHVzZSBvbmx5LgogCi0jZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01N
RU5UUyAwCisjZGVmaW5lIEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyAxIC8vIG1sYW0gd2FzIDAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIyOCw5ICsyMjgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxs
TGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4Piht
X21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUo
KSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CisjZW5kaWYgLy8gbWxhbQogCiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwog
CisjaWYgRU5BQkxFKEpJVCkgLy8gbWxhbQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCkBAIC0yNTAsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJTlQpCiAg
ICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcp
CiAgICAgICAgIHsKQEAgLTI1OCw3ICsyNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2Fs
bHMoKTsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiAjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAg
dm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVN
YXApCkBAIC0zMzQsMTAgKzMzNywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIHVuc2lnbmVkIGFwcGVuZFdhdGNocG9pbnQoY29uc3QgSnVtcFJlcGxhY2VtZW50V2F0Y2hw
b2ludCYgd2F0Y2hwb2ludCkKICAgICAgICAgeworI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAg
ICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRh
LT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh3YXRjaHBvaW50KTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtODEyLDYgKzgyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEgJiYgISFtX3JhcmVEYXRhLT5tX2Nv
ZGVPcmlnaW5zLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyNpZiBFTkFCTEUoSklUKSAv
LyBtbGFtCiAgICAgICAgIGJvb2wgY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghaGFzQ29kZU9yaWdpbnMoKSkKQEAgLTgyMyw3ICs4MzIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBlbnRyeS0+Y29kZU9yaWdpbjsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorI2VuZGlmCisKICAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKLSNpZiBFTkFC
TEUoTExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UKSAm
JiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBw
cm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKICAg
ICAKICAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2No
ZWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIElu
c3RydWN0aW9uX2gKIAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiTExJ
bnRPcGNvZGUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk9wY29k
ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtMTk3LDYgKzE5OCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGU7
CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIExMSW50T3Bjb2RlIGxsaW50
T3Bjb2RlOworI2VuZGlmCiAgICAgICAgICAgICBpbnQgb3BlcmFuZDsKICAgICAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBzdHJ1Y3R1cmU7CiAgICAgICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIx
LDEyICsyMjEsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9J
RChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjZGVmaW5l
IEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMQorI2Vsc2UKKyAgIC8vIElmIHdlIGdldCBo
ZXJlLCB0aGVuIHRoZSBvbmx5IG90aGVyIHJlYXNvbiB3aHkgd2Ugd2lsbCB3YW50IGNvbXB1dGVk
IGdvdG8KKyAgIC8vIG9wY29kZXMgaXMgaWYgd2UgaGF2ZSB0aGUgTExJTlQgYW5kIHdlJ3JlIG5v
dCB1c2luZyB0aGUgQyBMb29wLgorICAgLy8gSWYgd2UgYXJlIHVzaW5nIHRoZSBDIExvb3AgYW5k
IHdlIHdhbnRlZCBjb21wdXRlZCBnb3Rvcywgd2Ugd291bGQgaGF2ZQorICAgLy8gZW5hYmxlZCBD
T01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIsIGFuZCB0aGF0IHdvdWxkIGJlIGhhbmRs
ZWQKKyAgIC8vIGluIHRoZSBjYXNlIGFib3ZlLgorICAgI2lmIEVOQUJMRShMTElOVCkgJiYgIUVO
QUJMRShMTElOVF9DX0xPT1ApCisgICAjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09E
RVMgMQorICAgI2Vsc2UKKyAgICNkZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9fT1BDT0RFUyAw
CisgICAjZW5kaWYKKyNlbmRpZgorCisvLyBtbGFtIEJFR0lOIHRlc3QgfCBSRU1PVkUgdGhpcyBi
ZWZvcmUgY29tbWl0LgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjdW5kZWYgRU5BQkxFX0NP
TVBVVEVEX0dPVE9fT1BDT0RFUworI2RlZmluZSBFTkFCTEVfQ09NUFVURURfR09UT19PUENPREVT
IDAgLy8gdGVzdGluZworI2VuZGlmCisvLyBtbGFtIEVORCB0ZXN0CisKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQorLyogbWxhbQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJ
TEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKLSAgICB0eXBlZGVm
IGNvbnN0IHZvaWQqIE9wY29kZTsKKyAgICAvLyBtbGFtIENhbiB3ZSBkbyB0aGlzIHBsZWFzPyB0
eXBlZGVmIGNvbnN0IHZvaWQqIE9wY29kZTsKKyAgICAqLworICAgIHR5cGVkZWYgdm9pZCogT3Bj
b2RlOworLyogbWxhbQogI2VuZGlmCisqLwogI2Vsc2UKICAgICB0eXBlZGVmIE9wY29kZUlEIE9w
Y29kZTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7Ci0jaWYgRU5BQkxFKExMSU5UKQorLy8gbWxh
bSAjaWYgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CiAKICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw4IEBA
IHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEkKIHsKICNpZiBFTkFCTEUo
TExJTlQpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKLSAgICAKLSAgICBBU1NFUlQoaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWwpOworCisgICAgQVNT
RVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IExMSW50OjpEYXRhOjpnZXRPcGNvZGUob3Bf
cmVzb2x2ZV9nbG9iYWwpKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3Ry
dWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmICghc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
MjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAorI2lmIEVOQUJMRShKSVQpCisKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAogI2lmIENQVShYODZfNjQpCkBAIC0xNDE2LDcgKzE0MTgsNyBAQCBleHRl
cm4gIkMiIHZvaWQgREZHX09QRVJBVElPTiB0cmlnZ2VyUmVvCiB9IC8vIGV4dGVybiAiQyIKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCiAKICNpZiBDT01QSUxFUihHQ0MpCiAKQEAgLTE0NzgsMyArMTQ4MCw0IEBAIGV4dGVybiAi
QyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFUKIAogI2VuZGlmIC8vIENPTVBJTEVSKEdD
QykKIAorI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBBYnN0cmFjdFBDOjpBYnN0
cmFjdFBDKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBleGVjKQogewogICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxEYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7IC8vIG1s
YW0KICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChnbG9iYWxEYXRhLmNhblVzZUpJVCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRD
YWxsLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0VGhpcyhKU1ZhbHVlIHYpIHsg
bV9jbG9zdXJlLnNldFRoaXModik7IH0KICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChpbnQgbiwg
SlNWYWx1ZSB2KSB7IG1fY2xvc3VyZS5zZXRBcmd1bWVudChuLCB2KTsgfQorICAgICAgICAvLyBt
bGFtIEJFR0lOIGZvciBkZWJ1Z2dpbmcgT05MWS4gIFJlbW92ZSBhZnRlcndhcmRzCisgICAgICAg
IENhbGxGcmFtZUNsb3N1cmUmIGNsb3N1cmUoKSB7CisgICAgICAgICAgICByZXR1cm4gbV9jbG9z
dXJlOworICAgICAgICB9CisgICAgICAgIC8vIG1sYW0gRU5ECiAKICAgICAgICAgQ2FsbEZyYW1l
KiBuZXdDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgUmVnaXN0ZXJGaWxlKiBDYWxsRnJh
bWU6OnJlZ2lzdGVyRmlsZSgpCiB9CiAKICNlbmRpZgotCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
IHVuc2lnbmVkIENhbGxGcmFtZTo6Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCkgY29uc3QK
IHsKQEAgLTE5Nyw2ICsxOTYsMTEgQEAgUmVnaXN0ZXIqIENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJ
bnRlcm5hbAogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7
CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRm
KCJtbGFtIDo6IENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJbnRlcm5hbCgpIHJlZ2lzdGVycygpICVw
IGNiLT5tX251bUNhbGxlZVJlZ2lzdGVycyAlZCA9PT4gJXAgQCAlcyAlczolZFxuIiwgCisgICAg
ICAgICAgIHJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCByZWdp
c3RlcnMoKSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsCisgICAgICAgICAgIF9f
RlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKICAgICByZXR1cm4g
cmVnaXN0ZXJzKCkgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsOCBAQCBuYW1lc3BhY2UgSlNDICB7
CiAgICAgICAgIENhbGxGcmFtZSYgb3BlcmF0b3I9KGNvbnN0IFJlZ2lzdGVyJiByKSB7ICpzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpID0gcjsgcmV0dXJuICp0aGlzOyB9CiAKICAgICAgICAg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxl
OjpDYWxsZXJGcmFtZV0uY2FsbEZyYW1lKCk7IH0KLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAj
aWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAg
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBSZXR1cm5BZGRyZXNz
UHRyKHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9CiAgICAgICAgIGJvb2wg
aGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAhIXRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5Q
Q10udlBDKCk7IH0KICAgICAgICAgdm9pZCBjbGVhclJldHVyblBDKCkgeyByZWdpc3RlcnMoKVtS
ZWdpc3RlckZpbGU6OlJldHVyblBDXSA9IHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4oMCk7IH0K
QEAgLTE0OSw2ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIH0KICNlbmRpZgog
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQorLy8gbWxhbSAjaWYgRU5BQkxFKENMQVNT
SUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICAgICAg
SW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxl
OjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0y
NzIsNiArMjc0LDEwIEBAIG5hbWVzcGFjZSBKU0MgIHsKICNlbmRpZgogICAgICAgICBFeGVjU3Rh
dGUoKTsKICAgICAgICAgfkV4ZWNTdGF0ZSgpOworCisgICAgICAgIC8vIG1sYW0gQkVHSU4KKyAg
ICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOworICAgICAgICAvLyBtbGFtIEVORAogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVu
YXRlLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAt
NTU0LDcgKzU1NSw4IEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiAKIEludGVycHJldGVy
Ojp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShMTElOVCkKKy8vIG1sYW0gb3JpZyAjaWYg
RU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShMTElOVCkgJiYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKICAgICBpZiAobV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgZGVsZXRlW10gbV9v
cGNvZGVUYWJsZTsKICNlbmRpZgpAQCAtNTcwLDIwICs1NzIsMzUgQEAgdm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YQogI2Vycm9yICJCdWlsZGluZyBib3RoIExMSW50IGFu
ZCB0aGUgQ2xhc3NpYyBJbnRlcnByZXRlciBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgZG9l
c24ndCBtYWtlIHNlbnNlLiIKICNlbmRpZgogCisvLyBtbGFtIG9yaWcgCisgICAgI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgbGxpbnRDTG9vcEV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVy
biwgMCwgMCwgbGxpbnRfdW51c2VkLCBsbGludERhdGEpOworICAgICNlbmRpZgorCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiBFTkFCTEUoTExJTlQpCisKICAgICBtX29w
Y29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKQogICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bj
b2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CiAgICAgbV9jbGFzc2ljRW5h
YmxlZCA9IGZhbHNlOworCiAjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVS
UFJFVEVSKQogICAgIGlmIChjYW5Vc2VKSVQpIHsKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBw
cmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCi0gICAgICAg
IAorCisgICAgICAgIC8vIG1sYW0gOjogVGhlIGZvbGxvd2luZyBjb2RlIGlzIG9ic29sZXRlIGJl
Y2F1c2Ugd2Ugc2hvdWxkIG5ldmVyIGVuY291bnRlciB0aGlzCisgICAgICAgIC8vIGNhc2UuICBJ
biBwcml2YXRlRXhlY3V0ZSgpLCB0aGVyZSBpcyBhbiBhc3NlcnRpb24gdGhhdCBlbnN1cmVzIHRo
YXQgd2UgbmV2ZXIKKyAgICAgICAgLy8gbWl4IHRoZSBKSVQgd2l0aCB0aGUgY2xhc3NpYyBjb21w
aWxlci4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewog
ICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2Rl
OwogICAgICAgICB9CiAgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAg
Ly8gbWxhbSA6OiBOT1RFOiBCYXNlZCBvbiBKU0dsb2JhbERhdGEncyBlbmFibGVBc3NlbWJsZXIo
KSwgaXQgbG9va3MgbGlrZSB0aGUgY2xhc3NpYworICAgICAgICAvLyBpbnRlcnByZXRlciBpcyBz
dGlsbCBpbiB1c2Ugd2hlbiAtLXVzZUpJVD1mYWxzZS4gIFdpbGwgaGF2ZSB0byBmaXggdGhpcyBz
byB0aGF0CisgICAgICAgIC8vIExMSU5UIGNhbiBzdGFuZCBhbG9uZS4KKwogICAgIH0gZWxzZSB7
CiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAg
ICAgICAKQEAgLTU5MiwxMyArNjA5LDE4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUo
TExJbnQ6OkRhdGEKICAgICAgICAgCiAgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwog
ICAgIH0KKyNlbmRpZiAvLyBtbGFtIG5ldworCiAjZWxzZQogI2lmIEVOQUJMRShDTEFTU0lDX0lO
VEVSUFJFVEVSKQogICAgIG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwogI2Vsc2UKICAgICBtX2Ns
YXNzaWNFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURf
R09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorLy8gbWxhbSBvcmlnICNlbmRpZiAvLyAhRU5BQkxF
KENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShMTElOVCkKKwor
I2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CiAjZW5kaWYKQEAgLTcwOSw3ICs3MzEs
OCBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50
ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShD
T01QVVRFRF9HT1RPX09QQ09ERVMpCisvLyBtbGFtIG9yaWcgI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiAhRU5BQkxFKExM
SU5UKQogICAgIGlmICghbV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7
CkBAIC03NzMsNyArNzk2LDggQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2lu
ZENhbAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5WUEMoKSkgLSAxOwotI2VsaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjZWxpZiBFTkFC
TEUoSklUKQorI2VsaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CkBAIC04NDUs
NyArODY5LDggQEAgc3RhdGljIGludCBnZXRMaW5lTnVtYmVyRm9yQ2FsbEZyYW1lKEpTRwogICAg
IGlmICghZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiBjb2RlQmxvY2st
PmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChjYWxsRnJhbWUtPmJ5dGVjb2RlT2Zmc2V0Rm9y
Tm9uREZHQ29kZSgpIC0gMSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmln
ICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+bGluZU51bWJlckZv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jay0+Y29kZU9yaWdpbihjYWxsRnJhbWUtPmNvZGVPcmln
aW5JbmRleEZvckRGRygpKS5ieXRlY29kZUluZGV4KTsKQEAgLTg3MSw3ICs4OTYsOCBAQCBzdGF0
aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFsCiAgICAgCiAgICAgQ29kZUJsb2Nr
KiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgCi0jaWYg
RU5BQkxFKEpJVCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFtCiAgICAgaWYgKCFjYWxsRnJhbWUtPmhh
c1JldHVyblBDKCkpCiAgICAgICAgIGNhbGxmcmFtZUlzSG9zdCA9IHRydWU7CiAjZW5kaWYKQEAg
LTg5MCw3ICs5MTYsOCBAQCBzdGF0aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFs
CiAgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CiAgICAgICAgIH0KICNlbmRpZgotI2lm
IEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
aWYgKGNhbGxlckNvZGVCbG9jayAmJiBjYWxsZXJDb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpERkdKSVQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVPcmlnaW5JbmRleCA9
IGNhbGxlckZyYW1lLT5jb2RlT3JpZ2luSW5kZXhGb3JERkcoKTsKQEAgLTkwNyw3ICs5MzQsOCBA
QCBzdGF0aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFsCiAgICAgICAgICAgICBy
ZXR1cm4gY2FsbGVyRnJhbWU7CiAgICAgICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShKSVQpCisv
LyBtbGFtIG9yaWcgI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExM
SU5UX0NfTE9PUCkKICAgICAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChjYWxsRnJh
bWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSog
aWNmID0gY2FsbEZyYW1lLT5pbmxpbmVDYWxsRnJhbWUoKTsKQEAgLTEwMjksNiArMTA1Nyw5IEBA
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgYm9vbCBpc0ludGVycnVw
dCA9IGZhbHNlOwogCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgKioqIEludGVy
cHJldGVyOjp0aHJvd0V4Y2VwdGlvblxuIik7IC8vIG1sYW0KKyAgICAjZW5kaWYKICAgICBBU1NF
UlQoIWV4Y2VwdGlvblZhbHVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFleGNlcHRpb25WYWx1
ZS5pc0NlbGwoKSB8fCBleGNlcHRpb25WYWx1ZS5hc0NlbGwoKSk7CiAgICAgLy8gVGhpcyBzaG91
bGRuJ3QgYmUgcG9zc2libGUgKGhlbmNlIHRoZSBhc3NlcnRpb25zKSwgYnV0IHdlJ3JlIGFscmVh
ZHkgaW4gdGhlIHNsb3dlc3Qgb2YKQEAgLTEwNjEsMTIgKzEwOTIsMjEgQEAgTkVWRVJfSU5MSU5F
IEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRp
b24gaGFuZGxlciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCiAgICAg
SGFuZGxlckluZm8qIGhhbmRsZXIgPSAwOwogICAgIHdoaWxlIChpc0ludGVycnVwdCB8fCAhKGhh
bmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkpKSB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuXG4gbWxh
bSBVTldJTkQgY3VycmVudCBjZnIgJXBcblxuIiwgY2FsbEZyYW1lKTsKKyAgICAgICAgI2VuZGlm
CiAgICAgICAgIGlmICghdW53aW5kQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUs
IGJ5dGVjb2RlT2Zmc2V0LCBjb2RlQmxvY2spKSB7CisgICAgICAgICAgICAjaWYgbWxhbV9QUklO
VEYKKyAgICAgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICA8PDwg
UE9QUEVEIHRvIHJlc3RvcmVkICIpOyAvLyBtbGFtCisgICAgICAgICAgICAjZW5kaWYKICAgICAg
ICAgICAgIGlmIChQcm9maWxlciogcHJvZmlsZXIgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5l
bmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgICAgICAgICBwcm9maWxlci0+ZXhjZXB0aW9uVW53
aW5kKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS50b3BD
YWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQor
ICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShj
YWxsRnJhbWUsICIgIDw8PCBQT1BQRUQgdG8gcmVzdG9yZWQgIik7IC8vIG1sYW0KKyAgICAgICAg
I2VuZGlmCiAgICAgfQogICAgIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnRvcENhbGxGcmFtZSA9
IGNhbGxGcmFtZTsKIApAQCAtMTExMCw4ICsxMTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNPYmpl
Y3QqIGNoZWNrZWRSZXR1cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNPYmplY3QqIHRo
aXNPYmopCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKFByb2dyYW1FeGVjdXRh
YmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4sIEpTT2JqZWN0KiB0aGlzT2JqKQogeworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHBy
aW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7CisgICAgVk1JbnNwZWN0
b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIEludGVycHJldGVyOjpleGVjdXRlX21sYW1Q
KHByb2dyYW0pIik7CisgICAgI2VuZGlmCiAgICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRo
aXNPYmosIGNhbGxGcmFtZSkpOwogICAgIEFTU0VSVCghc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YS0+
ZXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmlzQ29sbGVj
dG9yQnVzeSgpKTsKQEAgLTExMTksMTQgKzExNjMsMjggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICBDUkFTSCgpOwogCiAgICAgaWYgKG1fcmVlbnRy
eURlcHRoID49IE1heFNtYWxsVGhyZWFkUmVlbnRyeURlcHRoICYmIG1fcmVlbnRyeURlcHRoID49
IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKKyAgICB7CisgICAgICAg
ICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9y
ZWVudHJ5RGVwdGgpOworICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwg
IiAqKiogUkVUVVJOIDEgZnJvbSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFtKSIp
OworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7Ci0KKyAgICB9CisgICAgLy8gRmlyc3QgY2hlY2sg
aWYgdGhlICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEgSlNPTiBvYmplY3QuIElmIHNvLAor
ICAgIC8vIHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3QgaGVyZS4gRWxzZSwgd2UnbGwgaGFu
ZGxlIHJlYWwgSlMgY29kZQorICAgIC8vIGJlbG93IGF0IGZhaWxlZEpTT05QLgogICAgIER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSgqc2NvcGVDaGFpbi0+Z2xvYmFs
RGF0YSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBWZWN0b3I8SlNPTlBE
YXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKICAgICBjb25zdCBVU3RyaW5n
IHByb2dyYW1Tb3VyY2UgPSBwcm9ncmFtLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgIGlmIChw
cm9ncmFtU291cmNlLmlzTnVsbCgpKQorICAgIHsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7CisgICAg
ICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICoqKiBSRVRVUk4gMiBmcm9t
IEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKHByb2dyYW0pIik7CisgICAgICAgICNlbmRpZgog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CiAgICAgaWYgKHByb2dyYW1Tb3Vy
Y2UuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gbGl0ZXJhbFBhcnNl
cihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJjZS5s
ZW5ndGgoKSwgSlNPTlApOwogICAgICAgICBwYXJzZVJlc3VsdCA9IGxpdGVyYWxQYXJzZXIudHJ5
SlNPTlBQYXJzZShKU09OUERhdGEsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9i
YWxPYmplY3QuZ2V0KCkpKTsKQEAgLTEyMjEsMzYgKzEyNzksNjkgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IGZhaWxlZEpTT05QOgorICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHdlIGhhdmUgYWxyZWFk
eSBwcm92ZW4gdGhhdCB0aGUgc2NyaXB0IGlzIG5vdCBhIEpTT04KKyAgICAvLyBvYmplY3QuCisK
KyAgICAvLyBDb21waWxlIHNvdXJjZSB0byBieXRlY29kZSBpZiBuZWNlc3Nhcnk6CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y29tcGlsZShjYWxsRnJhbWUsIHNjb3BlQ2hhaW4pOwog
ICAgIGlmIChlcnJvcikKKyAgICB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBw
cmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9yZWVudHJ5RGVwdGgpOworICAgICAgICBWTUlu
c3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAqKiogUkVUVVJOIFAxIGZyb20gSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVfbWxhbVAocHJvZ3JhbSkiKTsKKyAgICAgICAgI2VuZGlmCiAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXJyb3IoY2FsbEZyYW1lLCBlcnJvcikpOworICAg
IH0KICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZwcm9ncmFtLT5nZW5lcmF0ZWRCeXRlY29k
ZSgpOwogCisgICAgLy8gUmVzZXJ2ZSBzdGFjayBzcGFjZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgog
ICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3JlZ2lzdGVyRmlsZS5lbmQoKTsKICAgICBSZWdpc3Rl
ciogbmV3RW5kID0gb2xkRW5kICsgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzOwogICAgIGlmICghbV9yZWdpc3RlckZpbGUuZ3JvdyhuZXdFbmQpKQorICAgIHsKKyAgICAg
ICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBt
X3JlZW50cnlEZXB0aCk7CisgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1l
LCAiICoqKiBSRVRVUk4gUDIgZnJvbSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFt
KSIpOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgfQogCisgICAgLy8gUHVzaCB0aGUg
Y2FsbCBmcmFtZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUob2xkRW5kICsgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpOwogICAgIEFTU0VSVChjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4K
ICAgICBuZXdDYWxsRnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZUNoYWluLCBDYWxsRnJh
bWU6Om5vQ2FsbGVyKCksIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCAwKTsKKyAgICAjaWYg
bWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9yZWVudHJ5RGVw
dGgpOworICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobmV3Q2FsbEZyYW1lLCAiICArKysgaW5p
dCAiLCAwLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7CiAgICAgVG9wQ2FsbEZyYW1l
U2V0dGVyIHRvcENhbGxGcmFtZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbmV3Q2FsbEZyYW1l
KTsKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIg
KioqIHJlZW50cnkgJWRcbiIsIG1fcmVlbnRyeURlcHRoKTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVt
cEZyYW1lKG5ld0NhbGxGcmFtZSwgIiAgPj4+IFBVU0hFRCB0byBuZXcgIiwgMCwgX19GVU5DVElP
Tl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gRU5ECiAK
ICAgICBpZiAoUHJvZmlsZXIqIHByb2ZpbGVyID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZW5h
YmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUs
IHByb2dyYW0tPnNvdXJjZVVSTCgpLCBwcm9ncmFtLT5saW5lTm8oKSk7CiAKKyAgICAvLyBFeGVj
dXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKICAgICAgICAgU2FtcGxp
bmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKIAogICAgICAg
ICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAg
cmVzdWx0ID0gbGxpbnRDTG9vcEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0Nh
bGxGcmFtZSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7CisjZWxzZSAvLyAhRU5BQkxFKExMSU5U
X0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAoIWNsYXNzaWNFbmFibGVkKCkp
CiAgICAgICAgICAgICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0
ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7
CiAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAg
ICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2Fs
bEZyYW1lKTsKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogICAgICAgICBtX3Jl
ZW50cnlEZXB0aC0tOwogICAgIH0KQEAgLTEyNjAsMTEgKzEzNTEsMTggQEAgZmFpbGVkSlNPTlA6
CiAKICAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKIAorICAgICNpZiBtbGFtX1BS
SU5URgorICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7Cisg
ICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIFJFVFVSTiBQMyBmcm9t
IEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKHByb2dyYW0pIik7CisgICAgI2VuZGlmCiAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1J
bnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIEludGVycHJldGVyOjpleGVjdXRl
Q2FsbChmdW5jdGlvbikiKTsKKyAgICAjZW5kaWYKICAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmpl
Y3QodGhpc1ZhbHVlLCBjYWxsRnJhbWUpKTsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhj
ZXB0aW9uKCkpOwogICAgIEFTU0VSVCghY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0
b3JCdXN5KCkpOwpAQCAtMTI3NSw2ICsxMzczLDEyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICBSZWdpc3Rlciogb2xkRW5kID0gbV9y
ZWdpc3RlckZpbGUuZW5kKCk7CisgICAgLy8gbWxhbSBCRUdJTiB0ZXN0IGRlYnVnCisgICAgI2lm
IG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgICBtbGFtIGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQo
KSAlcCA8PSBvbGRFbmQgICVwID09PiByZXN1bHQgJWRcbiIsIGNhbGxGcmFtZS0+ZnJhbWVFeHRl
bnQoKSwgb2xkRW5kLCAoY2FsbEZyYW1lLT5mcmFtZUV4dGVudCgpIDw9IG9sZEVuZCkpOworICAg
IHByaW50ZigiICAgbWxhbSBjYWxsRnJhbWUgJXAgPT0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCkt
Pmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpICVwID09PiByZXN1bHQgJWRcbiIsIGNhbGxGcmFt
ZSwgIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
KGNhbGxGcmFtZSA9PSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtIEVORCB0ZXN0IGRlYnVnCiAgICAg
QVNTRVJUKGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQoKSA8PSBvbGRFbmQgfHwgY2FsbEZyYW1lID09
IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAg
ICAgaW50IGFyZ0NvdW50ID0gMSArIGFyZ3Muc2l6ZSgpOyAvLyBpbXBsaWNpdCAidGhpcyIgcGFy
YW1ldGVyCiAgICAgc2l6ZV90IHJlZ2lzdGVyT2Zmc2V0ID0gYXJnQ291bnQgKyBSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CkBAIC0xMzE3LDEyICsxNDIxLDE3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgICAgIFNhbXBsaW5nVG9v
bDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAKICAgICAgICAgICAg
IG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAg
ICAgcmVzdWx0ID0gbGxpbnRDTG9vcEV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5l
d0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworI2Vsc2UgLy8g
RU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgaWYgKCFj
bGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1
bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZtX3Jl
Z2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlQ2hhaW4tPmdsb2JhbERhdGEp
OwogICAgICAgICAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmls
ZSwgbmV3Q2FsbEZyYW1lKTsKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogICAg
ICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICAgICAgfQogCkBAIC0xMzU5LDYgKzE0Njgs
OSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAKIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNP
YmplY3QqIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAg
I2lmIG1sYW1fUFJJTlRGCisgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1l
LCAiICoqKiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChjb25zdHJ1Y3RvcikiKTsKKyAg
ICAjZW5kaWYKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFT
U0VSVCghY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIC8v
IFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0aGlu
ZyAidmFsaWQiIGJ1dCB3ZSdyZQpAQCAtMTQxMSwxMiArMTUyMywxNiBAQCBKU09iamVjdCogSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgICAgICBTYW1wbGluZ1Rvb2w6OkNh
bGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBtX3Jl
ZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIHJl
c3VsdCA9IGxsaW50Q0xvb3BFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxs
RnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworI2Vsc2UgLy8g
IUVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgICAgIGlmICgh
Y2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLmV4
ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGNvbnN0cnVjdERhdGFTY29wZUNo
YWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFs
LCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZW5kaWYgLy8gIUVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgICAgICB9CiAKQEAg
LTE0ODYsNyArMTYwMiw5IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVG
b3IKICAgICB9CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKTsKIAorICAgIC8vIFZNSW5zcGVjdG9yOjpkdW1w
RnJhbWUobmV3Q2FsbEZyYW1lLCAibWxhbSBCRUZPUkUgQ2xvc3VyZSBmcmFtZSBzbGlkZSIpOwog
ICAgIG5ld0NhbGxGcmFtZSA9IHNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JDYWxsKGNvZGVCbG9jaywg
Jm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIDAsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKKyAgICAvLyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG5ld0NhbGxGcmFtZSwgIm1sYW0g
QUZURVIgIENsb3N1cmUgZnJhbWUgc2xpZGUiKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxG
cmFtZSkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAg
ICAgICAgbV9yZWdpc3RlckZpbGUuc2hyaW5rKG9sZEVuZCk7CkBAIC0xNDk1LDExICsxNjEzLDI0
IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKICAgICBuZXdDYWxs
RnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZUNoYWluLCBjYWxsRnJhbWUtPmFkZEhvc3RD
YWxsRnJhbWVGbGFnKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBmdW5jdGlvbik7ICAK
ICAgICBzY29wZUNoYWluLT5nbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUgPSBuZXdDYWxsRnJhbWU7
CiAgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1l
LCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxlLCBzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBv
bGRFbmQsIHNjb3BlQ2hhaW4sIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyB9OworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgICNpZiBtbGFt
X1BSSU5URgorICAgIHByaW50ZigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOworICAgIHBy
aW50ZigiKiBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoKVxuIik7CisgICAgcHJp
bnRmKCIqIGNsb3N1cmUgb2xkRnJhbWUgJXAgbmV3RnJhbWUgJXAgZnVuY3Rpb24gJXAgZXhlY3V0
YWJsZSAlcFxuIiwKKyAgICAgICAgICAgY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGZ1bmN0aW9u
LCBmdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIHByaW50ZigiKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KipcbiIpOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gRU5EIHRlc3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUm
IGNsb3N1cmUpIAogeworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50ZigiICoqKiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShjbG9zdXJlKSBvbGQgZnAgJXAsIG5ldyBmcCAlcFxuIiwgY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUsIGNsb3N1cmUubmV3Q2FsbEZyYW1lKTsKKyAgICBWTUluc3BlY3Rvcjo6
ZHVtcEZyYW1lKGNsb3N1cmUubmV3Q2FsbEZyYW1lLCAiICoqKiBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShjbG9zdXJlKSIpOworICAgICNlbmRpZgogICAgIEFTU0VSVCghY2xvc3VyZS5vbGRDYWxsRnJh
bWUtPmdsb2JhbERhdGEoKS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgaWYgKGNsb3N1cmUub2xk
Q2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKQEAgLTE1MTQsNiArMTY0NSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxS
ZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIG1fcmVlbnRyeURlcHRo
Kys7ICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICByZXN1bHQgPSBsbGludENM
b29wRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdDYWxsRnJhbWUs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKKyNlbHNlIC8vICFFTkFCTEUoTExJ
TlRfQ19MT09QKQogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVU
RVIpCiAgICAgICAgIGlmIChjbG9zdXJlLm5ld0NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVz
ZUpJVCgpKQpAQCAtMTUyMiwxMCArMTY1NiwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKENhbGxGcmFtZUNsCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAg
IGVsc2UKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUo
Q0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRl
KE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CiAjZW5kaWYK
KyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogICAgICAgICBtX3JlZW50cnlEZXB0
aC0tOwogICAgIH0KIApAQCAtMTU0Miw2ICsxNjc4LDkgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZW5k
UmVwZWF0Q2FsbChDYWxsRnJhbQogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBpbnQgZ2xvYmFsUmVnaXN0ZXJPZmZzZXQpCiB7
CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJh
bWUsICIgKioqIEludGVycHJldGVyOjpleGVjdXRlKGV2YWwpIik7CisgICAgI2VuZGlmCiAgICAg
QVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1lKSk7CiAgICAgQVNT
RVJUKCFzY29wZUNoYWluLT5nbG9iYWxEYXRhLT5leGNlcHRpb24pOwogICAgIEFTU0VSVCghY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwpAQCAtMTYxOSw2ICsxNzU4
LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogCiAgICAgICAg
IG1fcmVlbnRyeURlcHRoKys7CiAgICAgICAgIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAgICAgIHJlc3VsdCA9IGxsaW50Q0xvb3BFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxl
LCBuZXdDYWxsRnJhbWUsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworI2Vsc2UgLy8gIUVOQUJMRShM
TElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQpA
QCAtMTYyNywxMCArMTc2OSwxMSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIGVsc2UKICNl
bmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19J
TlRFUlBSRVRFUikKICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwg
Jm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOwogI2VuZGlmCisjZW5kaWYgLy8gIUVOQUJM
RShMTElOVF9DX0xPT1ApCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgfQogCkBAIC0x
OTA2LDEyICsyMDQ5LDE1IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hl
R2UKIAogI2VuZGlmIC8vIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogCisjaWYgIUVOQUJM
RShMTElOVF9DX0xPT1ApCisKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4
ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIE9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIG91ciBhZGRy
ZXNzIHRhYmxlcy4gV2UgaGF2ZSB0byBwdXQgdGhpcyBjb2RlCiAgICAgLy8gaGVyZSBiZWNhdXNl
IG91ciBsYWJlbHMgYXJlIG9ubHkgaW4gc2NvcGUgaW5zaWRlIHRoaXMgZnVuY3Rpb24uCiAgICAg
aWYgKFVOTElLRUxZKGZsYWcgPT0gSW5pdGlhbGl6ZUFuZFJldHVybikpIHsKICAgICAgICAgI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisgICAgICAgIC8vIG1s
YW0gI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAgICAgICAgICAgICAjZGVmaW5l
IExJU1RfT1BDT0RFX0xBQkVMKGlkLCBsZW5ndGgpICYmaWQsCiAgICAgICAgICAgICAgICAgc3Rh
dGljIE9wY29kZSBsYWJlbHNbXSA9IHsgRk9SX0VBQ0hfT1BDT0RFX0lEKExJU1RfT1BDT0RFX0xB
QkVMKSB9OwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChsYWJlbHMpOyArK2kpCkBAIC0xOTkxLDkgKzIxMzcsOSBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgICAgICBVUERBVEVfQllURUNPREVf
T0ZGU0VUKCk7CiAjZWxzZQogICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShvcGNvZGUpIG9wY29k
ZTogVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKE9Q
Q09ERV9TVEFUUykKICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Ci0jZWxzZQorI2Vsc2UgLy8gIUVO
QUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgI2RlZmluZSBORVhU
X0lOU1RSVUNUSU9OKCkgU0FNUExFKGNvZGVCbG9jaywgdlBDKTsgZ290byBpbnRlcnByZXRlckxv
b3BTdGFydAogI2lmIEVOQUJMRShPUENPREVfU1RBVFMpCiAgICAgI2RlZmluZSBERUZJTkVfT1BD
T0RFKG9wY29kZSkgXApAQCAtMjAwNiw3ICsyMTUyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgIHdoaWxlICgxKSB7IC8vIGl0ZXJhdG9yIGxvb3AgYmVn
aW5zCiAgICAgaW50ZXJwcmV0ZXJMb29wU3RhcnQ6OwogICAgIHN3aXRjaCAodlBDLT51Lm9wY29k
ZSkKLSNlbmRpZgorI2VuZGlmIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVS
UFJFVEVSKQogICAgIHsKICAgICBERUZJTkVfT1BDT0RFKG9wX25ld19vYmplY3QpIHsKICAgICAg
ICAgLyogbmV3X29iamVjdCBkc3QocikKQEAgLTUzMTksNiArNTQ2NSw5IEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAjZW5kaWYgLy8gRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiB9CiAKKyNl
bmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworCiBKU1ZhbHVlIEludGVycHJldGVyOjpy
ZXRyaWV2ZUFyZ3VtZW50c0Zyb21WTUNvZGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uKSBjb25zdAogewogICAgIENhbGxGcmFtZSogZnVuY3Rpb25DYWxsRnJhbWUg
PSBmaW5kRnVuY3Rpb25DYWxsRnJhbWVGcm9tVk1Db2RlKGNhbGxGcmFtZSwgZnVuY3Rpb24pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTExJbnREYXRh
LmgiCisjaW5jbHVkZSAiTExJbnRPcGNvZGUuaCIgLy8gbWxhbQogI2luY2x1ZGUgIk9wY29kZS5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC0xOTQsNyArMTk1LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisvLyBtbGFtICNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICAgICAgICAgIHJldHVy
biBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0y
MDQsNiArMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29k
ZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRp
YWxpemVkKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogI2lmIEVOQUJMRShM
TElOVCkKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAg
IHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CkBAIC0yMTMsNiArMjE2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29k
ZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKIAogICAgICAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbmRpZiAvLyBtbGFtIG5ldwogI2Vs
c2UKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKQEAgLTIyNSw3ICsyMjksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKLSAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgU2Nv
cGVDaGFpbk5vZGUqLCBKU09iamVjdCogdGhpc09iaik7CisgICAgICAgIEpTVmFsdWUgZXhlY3V0
ZV9tbGFtUChQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFNjb3BlQ2hhaW5Ob2RlKiwg
SlNPYmplY3QqIHRoaXNPYmopOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFt
ZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVD
b25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBj
b25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU1ZhbHVlIGV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2Nv
cGVDaGFpbk5vZGUqKTsKQEAgLTI4MCw3ICsyODQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIENhbGxGcmFtZSogZmluZEZ1bmN0aW9uQ2FsbEZyYW1lRnJvbVZNQ29kZShD
YWxsRnJhbWUqLCBKU0Z1bmN0aW9uKik7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
ICAgICBKU1ZhbHVlIGxsaW50Q0xvb3BFeGVjdXRlKEV4ZWN1dGlvbkZsYWcsIFJlZ2lzdGVyRmls
ZSosIENhbGxGcmFtZSosIExMSW50T3Bjb2RlSUQgYm9vdHN0cmFwT3Bjb2RlSWQgPSBsbGludF91
bnVzZWQsIExMSW50OjpEYXRhKiBkYXRhID0gMCk7CisjZWxzZQogICAgICAgICBKU1ZhbHVlIHBy
aXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcsIFJlZ2lzdGVyRmlsZSosIENhbGxGcmFtZSopOwor
I2VuZGlmCiAKICAgICAgICAgdm9pZCBkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSopOwogICAgICAg
ICAKQEAgLTI5NCw2ICszMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3Rl
ckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpIC8vIG1sYW0KICNpZiBFTkFCTEUoTExJTlQpCiAgICAgICAgIE9wY29kZSogbV9v
cGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAg
ICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBP
cGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCkBAIC0zMDEsMTEgKzMxMCwxNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURz
XTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNo
TWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4g
T3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ09NUFVU
RURfR09UT19PUENPREVTKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBib29sIG1f
aW5pdGlhbGl6ZWQ7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2NsYXNzaWNFbmFibGVkOworCisg
ICAgICAgIC8vIG1sYW0gQkVHSU4KKyAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwor
ICAgICAgICAvLyBtbGFtIEVORAogICAgIH07CiAKICAgICAvLyBUaGlzIHZhbHVlIG11c3Qgbm90
IGJlIGFuIG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhpcyBjb252ZXJzaW9uIChXZWJDb3Jl
J3MgZ2xvYmFsIG9iamVjdCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvVk1JbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1MyBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBWTUluc3BlY3Rvcjo6Z2V0VHlwZU5h
bWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0IGNo
YXIqIHZQQ1RhZ0RlY29kZVN0ciA9ICIiOworICAgIHN3aXRjaCAodmFsdWUudGFnKCkpIHsKKyAg
ICBjYXNlIEpTVmFsdWU6OkludDMyVGFnOiAgICAgICAgIHZQQ1RhZ0RlY29kZVN0ciA9ICI8SW50
MzI+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpCb29sZWFuVGFnOiAgICAgICB2UENUYWdE
ZWNvZGVTdHIgPSAiPEJvb2w+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpOdWxsVGFnOiAg
ICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPE51bGw+IjsgYnJlYWs7CisgICAgY2FzZSBKU1Zh
bHVlOjpVbmRlZmluZWRUYWc6ICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPFVuZGVmaW5lZD4iOyBi
cmVhazsKKyAgICBjYXNlIEpTVmFsdWU6OkNlbGxUYWc6ICAgICAgICAgIHZQQ1RhZ0RlY29kZVN0
ciA9ICI8Q2VsbD4iOyBicmVhazsKKyAgICBjYXNlIEpTVmFsdWU6OkVtcHR5VmFsdWVUYWc6ICAg
IHZQQ1RhZ0RlY29kZVN0ciA9ICI8RW1wdHk+IjsgYnJlYWs7CisgICAgY2FzZSBKU1ZhbHVlOjpE
ZWxldGVkVmFsdWVUYWc6ICB2UENUYWdEZWNvZGVTdHIgPSAiPERlbGV0ZWQ+IjsgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjw+IjsgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiB2UENUYWdEZWNvZGVTdHI7CisjZWxzZQorICAgIGlmICh2YWx1ZS5pc0lu
dDMyKCkpICAgICAgICAgICByZXR1cm4gIjxJbnQzMj4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlz
Qm9vbGVhbigpKSAgICByZXR1cm4gIjxCb29sZWFuPiI7CisgICAgZWxzZSBpZiAodmFsdWUuaXNO
dWxsKCkpICAgICAgIHJldHVybiAiPEVtcHR5PiI7CisgICAgZWxzZSBpZiAodmFsdWUuaXNVbmRl
ZmluZWQoKSkgIHJldHVybiAiPFVuZGVmaW5lZD4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzQ2Vs
bCgpKSAgICAgICByZXR1cm4gIjxDZWxsPiI7CisgICAgZWxzZSBpZiAodmFsdWUuaXNFbXB0eSgp
KSAgICAgIHJldHVybiAiPEVtcHR5PiI7CisgICAgLy8gbWxhbSBGSVhNRSA/IGVsc2UgaWYgKEpT
VmFsdWU6OmlzRGVsZXRlZFZhbHVlKHZhbHVlLikpIHJldHVybiAiPERlbGV0ZWQ+IjsKKyAgICBy
ZXR1cm4gIiI7CisjZW5kaWYKK30KKwordm9pZCBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lMChDYWxs
RnJhbWUqIGZyYW1lKSB7CisgICAgZHVtcEZyYW1lKGZyYW1lLCAwLCAwLCAwLCAwLCAwKTsKK30K
KworLy8gbWxhbSBCRUdJTiB0ZXN0CitpbnRwdHJfdCBtbGFtSW52b2tlQ291bnQgPSAwOworCit2
b2lkIFZNSW5zcGVjdG9yOjptbGFtQnJlYWsoKSB7Cit9CisKKy8vIG1sYW0gRU5EIHRlc3QKK3Zv
aWQgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShDYWxsRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBw
cmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogcGMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZnVuY05hbWUsIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lKQoreworICAgIGludCBmcmFtZUNvdW50ID0gVk1JbnNwZWN0b3I6OmNvdW50RnJh
bWVzKGZyYW1lKTsKKyAgICBpZiAoZnJhbWVDb3VudCA8IDApCisgICAgICAgIHJldHVybjsKKwor
ICAgIEluc3RydWN0aW9uKiB2UEMgPSAwOworICAgIGlmIChmcmFtZS0+Y29kZUJsb2NrKCkpCisg
ICAgICAgIHZQQyA9IGZyYW1lLT5jdXJyZW50VlBDKCk7CisKKyAgICAjZGVmaW5lIENBU1QgcmVp
bnRlcnByZXRfY2FzdAorCisgICAgcHJpbnRmKCIgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAiKTsgLy8gbWxh
bSBURVNUCisgICAgcHJpbnRmKCI8JWxkPiAiLCArK21sYW1JbnZva2VDb3VudCk7CisgICAgaWYg
KHByZWZpeCkKKyAgICAgICAgcHJpbnRmKCIlcyAiLCBwcmVmaXgpOworICAgIHByaW50ZigiRlJB
TUUgWyVkXSAlcCAlcyBwYyAlcCB8IHZwYyAlcCVzIHwgY2IgJXA6JXMgcmV0UEMgJXA6JXMgc2Nv
cGUgJXA6JXMgY2FsbGVyRnJhbWUgJXA6JXMgYXJnYyAlZDolcyBjYWxsZWUgJXA6JXMiLAorICAg
ICAgICAgICBmcmFtZUNvdW50LCBmcmFtZSwgIjx1bmtub3duPiIsIHBjLAorCisgICAgICAgICAg
IHZQQywKKyAgICAgICAgICAgIiIsIC8vIG1sYW0gRG8gd2UgbmVlZCB0aGlzPyBnZXRUeXBlTmFt
ZShDQVNUPGludHB0cl90Pih2UEMpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtS
ZWdpc3RlckZpbGU6OkNvZGVCbG9ja10ucGF5bG9hZCgpKSwKKyAgICAgICAgICAgZ2V0VHlwZU5h
bWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2tdLmpzVmFsdWUoKSksCisKKyAgICAgICAg
ICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10ucGF5bG9hZCgpKSwK
KyAgICAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10uanNW
YWx1ZSgpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW5dLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVOYW1lKGZyYW1lW1JlZ2lz
dGVyRmlsZTo6U2NvcGVDaGFpbl0uanNWYWx1ZSgpKSwKKworICAgICAgICAgICBDQVNUPHZvaWQq
PihmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5wYXlsb2FkKCkpLAorICAgICAgICAg
ICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5qc1ZhbHVlKCkp
LAorCisgICAgICAgICAgIGZyYW1lW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0ucGF5bG9h
ZCgpLAorICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnRdLmpzVmFsdWUoKSksCisKKyAgICAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0
ZXJGaWxlOjpDYWxsZWVdLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVOYW1lKGZyYW1l
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5qc1ZhbHVlKCkpKTsKKworICAgIGlmIChmdW5jTmFtZSB8
fCBmaWxlIHx8IChsaW5lID49IDApKSB7CisgICAgICAgIHByaW50ZigiIEAiKTsKKyAgICAgICAg
aWYgKGZ1bmNOYW1lKQorICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBmdW5jTmFtZSk7CisgICAg
ICAgIGlmIChmaWxlKQorICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBmaWxlKTsKKyAgICAgICAg
aWYgKGxpbmUgPj0gMCkKKyAgICAgICAgICAgIHByaW50ZigiOiVkIiwgbGluZSk7CisgICAgfQor
ICAgIHByaW50ZigiXG4iKTsKKworICAgIHByaW50ZigiICAgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7IC8vIG1s
YW0gVEVTVAorCisgICAgI3VuZGVmIENBU1QKKworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAg
IGlmIChtbGFtSW52b2tlQ291bnQgPT0gMTYpIHsKKyAgICAgICAgbWxhbUJyZWFrKCk7CisgICAg
fQorICAgIC8vIG1sYW0gRU5EIHRlc3QKK30KKworaW50IFZNSW5zcGVjdG9yOjpjb3VudEZyYW1l
cyhDYWxsRnJhbWUqIGZyYW1lKQoreworICAgIGludCBjb3VudCA9IC0xOworICAgIC8vIG1sYW0g
REVCVUcgQVNTRVJUKCEhZnJhbWUpOworICAgIC8vIG1sYW0gRklYTUU6IEV2ZW50dWFsbHksIHdl
IHNob3VsZCBjaGFuZ2UgdGhpcyBzbyB0aGF0IHdlIGFsbG93IHRoZSBIb3N0IGZsYWcgdG8KKyAg
ICAvLyBiZSBzZXQgYnV0IHdlIGdldCB0aGUgY2FsbGVyIHdpdGggdGhlIEhvc3QgZmxhZyBtYXNr
ZWQgb3V0LCBhbmQgb25seSB0ZXJtaW5hdGUKKyAgICAvLyB3aGVuIHRoZSBjYWxsZXIgRnJhbWUg
aXMgTlVMTC4KKyAgICB3aGlsZSAoZnJhbWUgJiYgIWZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxh
ZygpKSB7CisgICAgICAgIGNvdW50Kys7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIC8vIG1sYW0gREVCVUcgQVNTRVJUKCEhZnJhbWUpOworICAgIH0KKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKK2NvbnN0IGNoYXIqIFZNSW5zcGVjdG9yOjpnZXRGdW5jdGlv
bk5hbWUoSlNGdW5jdGlvbiogZnVuYywgRXhlY1N0YXRlKiBleGVjKQoreworICAgIFVTdHJpbmcg
bmFtZSA9IGZ1bmMtPmNhbGN1bGF0ZWREaXNwbGF5TmFtZShleGVjKTsKKyAgICBjb25zdCBjaGFy
KiBuYW1lU3RyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obmFtZS5jaGFyYWN0ZXJz
OCgpKTsKKyAgICBpZiAobmFtZVN0cikKKyAgICAgICAgcmV0dXJuIG5hbWVTdHI7CisgICAgcmV0
dXJuICI8dW5rbm93bj4iOworfQorCisKK3ZvaWQgVk1JbnNwZWN0b3I6OmR1bXBTdGFjayhDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBpbnQgZGVwdGggPSAwOworICAgIHByaW50ZigiU3Rh
Y2sgc3RhcnRpbmcgZnJvbSBmcmFtZSAlcFxuIiwgY2FsbEZyYW1lKTsKKyAgICB3aGlsZSAoY2Fs
bEZyYW1lKSB7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNhbGxGcmFtZS0+Y2FsbGVlKCkpOworICAgICAgICAvL2lmIChmdW5jKSB7CisgICAgICAgICAg
ICAvL2NvbnN0IGNoYXIqIGZ1bmNOYW1lID0gZ2V0RnVuY3Rpb25OYW1lKGZ1bmMsIGNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAvL3ByaW50ZigiICBbJWRdICVzIEAlcCB8IGZyYW1lICVwXG4iLCBk
ZXB0aCsrLCBmdW5jTmFtZSwgZnVuYywgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIC8vfSBlbHNl
IHsKKyAgICAgICAgICAgIHByaW50ZigiICBbJWRdIDxudWxsPiBAJXAgfCBmcmFtZSAlcFxuIiwg
ZGVwdGgrKywgZnVuYywgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICAvLyBk
dW1wUmVnaXN0ZXJzKGNhbGxGcmFtZSk7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+
Y2FsbGVyRnJhbWUoKTsKKyAgICB9CisgICAgcHJpbnRmKCJFTkQgb2Ygc3RhY2sgZnJvbSBmcmFt
ZSAlcFxuIiwgY2FsbEZyYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9y
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKyNpZm5kZWYgVk1JbnNwZWN0b3JfaAor
I2RlZmluZSBWTUluc3BlY3Rvcl9oCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1Zh
bHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTUluc3BlY3RvciB7CitwdWJsaWM6
ICAgIAorICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBnZXRUeXBlTmFt
ZShKU1ZhbHVlIHZhbHVlKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1w
RnJhbWUwKENhbGxGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXBGcmFtZShDYWxsRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcmVmaXggPSAwLCB2
b2lkKiBwYyA9IDAsIGNvbnN0IGNoYXIqIGZ1bmNOYW1lID0gMCwgY29uc3QgY2hhciogZmlsZSA9
IDAsIGludCBsaW5lID0gLTEpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291
bnRGcmFtZXMoQ2FsbEZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uTmFtZShKU0Z1bmN0aW9uKiBmdW5jLCBFeGVjU3RhdGUq
IGV4ZWMpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBTdGFjayhDYWxs
RnJhbWUqKTsKKworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgIHN0YXRpYyBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIG1sYW1CcmVhaygpOworICAgIC8vIG1sYW0gRU5EIHRlc3QKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gVk1JbnNwZWN0b3IuaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9u
IDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAvLyBVbmZvcnR1bmF0ZWx5IHRo
aXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJlbnRseSBv
bmx5IHVzZWQKIC8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3RyaWN0ZWQg
dG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKIC8vIHByb2JhYmx5IGZpeCB0aGF0IGF0
IHNvbWUgcG9pbnQuCi0jaWYgQ09NUElMRVIoR0NDKQorI2lmIENPTVBJTEVSKEdDQykgJiYgRU5B
QkxFKEpJVCkKIAogI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCiAjZGVmaW5lIEhP
U1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
SklUQ29kZV9oCiAjZGVmaW5lIEpJVENvZGVfaAogCi0jaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFC
TEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAKICAgICBjbGFzcyBKSVRDb2Rl
IHsKLSNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9DX0xP
T1ApCiAgICAgICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CiAgICAg
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIENvZGVQdHI7CiAjZWxzZQpAQCAtNzcs
NyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09
IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKICAgICAgICAgfQog
ICAgICAgICAKLSNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgIEpJVENvZGUoKQogICAgICAgICAgICAgOiBtX2ppdFR5cGUoTm9u
ZSkKICAgICAgICAgewpAQCAtMTI3LDEyICsxMjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCk7CiAgICAgICAgIH0K
IAorI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGUhCiAgICAgICAg
IGlubGluZSBKU1ZhbHVlIGV4ZWN1dGUoUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGN0aVRyYW1wb2xpbmUo
bV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlZ2lzdGVyRmlsZSwgY2FsbEZyYW1l
LCAwLCAwLCBnbG9iYWxEYXRhKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uID8ganNOdWxsKCkgOiByZXN1bHQ7CiAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAg
IHZvaWQqIHN0YXJ0KCkgY29uc3QKICAgICAgICAgewpAQCAtMTgyLDcgKzE4NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIENvZGVSZWYgbV9yZWY7CiAgICAgICAgIEpJVFR5cGUgbV9q
aXRUeXBlOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwg
RU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICB9OwogCiB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwzMCArMzEsNjMgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rv
ci5oIiAvLyBtbGFtIFRFU1Qgb25seQogCi0jaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogCiBuYW1lc3BhY2UgSlNDIHsKIAogRXhjZXB0aW9u
SGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgdW5zaWduZWQgdlBDSW5kZXgpCiB7
CiAgICAgQVNTRVJUKGV4Y2VwdGlvblZhbHVlKTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBW
TUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAgIG1sYW0gOjogZ2VuZXJpY1Rocm93
IEJFRk9SRSBoYW5kbGVyOiAiLCAodm9pZCopdlBDSW5kZXgsIF9fRklMRV9fLCBfX0ZVTkNUSU9O
X18sX19MSU5FX18pOworICAgICNlbmRpZgogCiAgICAgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0g
SlNWYWx1ZSgpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gZ2xvYmFsRGF0YS0+aW50ZXJw
cmV0ZXItPnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIHZQQ0luZGV4
KTsgLy8gVGhpcyBtYXkgdXBkYXRlIGNhbGxGcmFtZSAmIGV4Y2VwdGlvblZhbHVlIQogICAgIGds
b2JhbERhdGEtPmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOworICAgICNpZiBtbGFtX1BSSU5U
RgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICAgbWxhbSA6OiBnZW5l
cmljVGhyb3cgQUZURVIgaGFuZGxlcjogIiwgKHZvaWQqKXZQQ0luZGV4LCBfX0ZVTkNUSU9OX18s
IF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAKICAgICB2b2lkKiBjYXRjaFJvdXRp
bmU7CiAgICAgSW5zdHJ1Y3Rpb24qIGNhdGNoUENGb3JJbnRlcnByZXRlciA9IDA7CiAgICAgaWYg
KGhhbmRsZXIpIHsKLSAgICAgICAgY2F0Y2hSb3V0aW5lID0gaGFuZGxlci0+bmF0aXZlQ29kZS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAmY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbaGFuZGxlci0+dGFyZ2V0XTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rpb25QdHIoY3RpT3BUaHJvd05v
dENhdWdodCkudmFsdWUoKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAvLyBI
YW5kbGVySW5mby5uYXRpdmVDb2RlIGlzIG9ubHkgaW5zdGFudGlhdGVkIGFuZCBpbml0aWFsaXpl
ZCB3aGVuCisgICAgICAgIC8vIHRoZSBKSVQgaXMgaW4gdXNlZC4gIEhlbmNlLCB3ZSBjYW4ndCBy
ZWx5IG9uIGl0IGZvciB0aGUgQyBsb29wLAorICAgICAgICAvLyBidXQgaGF2ZSB0byBjb21wdXRl
IHRoZSBieXRlY29kZSBQQyBvdXJzZWx2ZXMuCisgICAgICAgIGNhdGNoUm91dGluZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPnUub3Bjb2Rl
KTsKKyNlbHNlCisgICAgICAgIGNhdGNoUm91dGluZSA9IGhhbmRsZXItPm5hdGl2ZUNvZGUuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgorICAgICAgICAvLyBtbGFtIEJFR0lOCisgICAgICAg
ICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuICAgIG1sYW0gOjogZ2VuZXJpY1Ro
cm93KCkgU0VUIGhhbmRsZXIgJXAgfCBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAlcCBjYXRjaFJv
dXRpbmUgJXBcbiIsIGhhbmRsZXIsIGNhdGNoUENGb3JJbnRlcnByZXRlciwgY2F0Y2hSb3V0aW5l
KTsKKyAgICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGCisgICAgICAgIC8vIG1sYW0gRU5ECisg
ICAgfSBlbHNlIHsKKyAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rpb25QdHIoTExJbnQ6OkRh
dGE6OmdldENvZGVQdHIoY3RpT3BUaHJvd05vdENhdWdodCkpLnZhbHVlKCk7CisgICAgICAgIC8v
IG1sYW0gQkVHSU4KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiXG4g
ICAgbWxhbSA6OiBnZW5lcmljVGhyb3coKSBTRVQgTk8gaGFuZGxlciB8IGNhdGNoUm91dGluZSA9
ICVwXG4iLCBjYXRjaFJvdXRpbmUpOworICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYKKyAg
ICAgICAgLy8gbWxhbSBFTkQKKyAgICB9CiAgICAgCiAgICAgZ2xvYmFsRGF0YS0+Y2FsbEZyYW1l
Rm9yVGhyb3cgPSBjYWxsRnJhbWU7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0
b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgICBtbGFtIDo6IGdlbmVyaWNUaHJvdyBUQVJHRVQg
Y2FsbEZyYW1lOiAiLCAodm9pZCopdlBDSW5kZXgsIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9f
TElORV9fKTsKKyAgICAjZW5kaWYKICAgICBnbG9iYWxEYXRhLT50YXJnZXRNYWNoaW5lUENGb3JU
aHJvdyA9IGNhdGNoUm91dGluZTsKICAgICBnbG9iYWxEYXRhLT50YXJnZXRJbnRlcnByZXRlclBD
Rm9yVGhyb3cgPSBjYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CisgICAgLy8gbWxhbSBCRUdJTgorICAg
ICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50ZigiXG4gICAgbWxhbSA6OiBnZW5lcmljVGhyb3co
KSBjYXRjaFJvdXRpbmUgJXAgY2F0Y2hQQ0ZvckludGVycHJldGVyID0gJXBcbiIsIGNhdGNoUm91
dGluZSwgY2F0Y2hQQ0ZvckludGVycHJldGVyKTsKKyAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYK
KyAgICAvLyBtbGFtIEVORAogICAgIAogICAgIEFTU0VSVChjYXRjaFJvdXRpbmUpOwogICAgIEV4
Y2VwdGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlciA9IHsgY2F0Y2hSb3V0aW5lLCBjYWxsRnJh
bWUgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCShy
ZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKIAotI2lmIEVOQUJMRShBU1NF
TUJMRVIpCisjaWYgRU5BQkxFKEFTU0VNQkxFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUwLDcgKzUwLDcgQEAgRXhjZXB0aW9uSGFuZGxlciBqaXRU
aHJvdyhKU0dsb2JhbERhdGEqLAogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogI2VuZGlm
IC8vIEpJVEV4Y2VwdGlvbnNfaAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsMTMgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgdm9pZCogSklUX1NUVUIgY3RpX3ZtX3Rocm93KFNUVUJfQVJHU19ERUNMQVJBVElPTikgUkVG
RVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CiB9IC8vIGV4dGVybiAiQyIKIAotI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisjZWxpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorCitzdHJ1Y3QgSklU
U3RhY2tGcmFtZSB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOworfTsKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKEpJVCkKKwogbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNJbnRlcmZhY2VKSVQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIg
ewogICAgIHB1YmxpYzoKQEAgLTMzMSw2ICszMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsUmVn
aXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi19Cit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNlbmRpZiAvLyBKU0ludGVyZmFj
ZUpJVF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAko
cmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIwICszMSwzNyBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCi0jaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorLy8gbWxhbSAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIgLy8gbWxhbQorLy8gbWxhbSAjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKIAorLy8gbWxhbSBCRUdJTgorYm9vbCBEYXRhOjpzX2lzSW5pdGVkID0g
ZmFsc2U7CitJbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSAwOwor
TExJbnRPcGNvZGUqIERhdGE6OnNfb3Bjb2RlTWFwID0gMDsKKy8vIG1sYW0gRU5ECisKIERhdGE6
OkRhdGEoKQorLyogbWxhbSBCRUdJTiBvcmlnCiAgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
cyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCi0gICAgLCBtX29wY29kZU1h
cChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCisgICAgICAvLyBtbGFtIG9yaWcgLCBtX29wY29k
ZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bj
b2RlW251bUxMSW50T3Bjb2RlSURzXSkKKyovCiB7CisgICAgaWYgKCFzX2lzSW5pdGVkKSB7Cisg
ICAgICAgIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gbmV3IEluc3RydWN0aW9uW21heE9wY29k
ZUxlbmd0aCArIDFdOworICAgICAgICBzX29wY29kZU1hcCA9IG5ldyBMTEludE9wY29kZVtudW1M
TEludE9wY29kZUlEc107CisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCi0gICAgICAgIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwotI2RlZmluZSBPUENPREVfRU5UUlkob3Bj
b2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF8jI29wY29kZSk7CisgICAgICAgIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9p
bnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIHNfb3Bjb2Rl
TWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CiAgICAg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CiAjdW5kZWYgT1BDT0RFX0VOVFJZCisg
ICAgICAgIHNfaXNJbml0ZWQgPSB0cnVlOworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgIH0KIH0KIAogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAtMTIyLDggKzEzOSwxMCBAQCB2
b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0CiAKIERhdGE6On5EYXRhKCkK
IHsKKyAgICAvKiBtbGFtIEJFR0lOIG9yaWcKICAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3Ry
dWN0aW9uczsKICAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKKyAgICAqLwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOSBAQAogI2RlZmluZSBM
TEludERhdGFfaAogCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2LDE2ICs0OCw3NCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiAgICAg
ewotICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgICAgIC8vIG1s
YW0gb3JpZyByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgICAgIHJldHVybiBz
X2V4Y2VwdGlvbkluc3RydWN0aW9uczsKICAgICB9CiAgICAgCi0gICAgT3Bjb2RlKiBvcGNvZGVN
YXAoKQorICAgIExMSW50T3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgLy8gbWxh
bSByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgICAgIHJldHVybiBzX29wY29kZU1hcDsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBpc0luaXRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gc19p
c0luaXRlZDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRJc0luaXRlZCgpCisgICAgewor
ICAgICAgICBzX2lzSW5pdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgTExJbnRPcGNv
ZGUgZ2V0T3Bjb2RlKExMSW50T3Bjb2RlSUQgaWQpCisgICAgeworI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX09QQ09ERVMpCisgICAgICAgIHJldHVybiBzX29wY29kZU1hcFtpZF07CisjZWxzZQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TExJbnRPcGNvZGU+KGlkKTsKKyNlbmRpZgorICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIExMSW50T3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRPcGNvZGUoc3RhdGljX2Nhc3Q8TExJ
bnRPcGNvZGVJRD4oaWQpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQqIGdldENvZGVQdHIoTExJbnRPcGNvZGVJRCBpZCkK
KyAgICB7CisgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKGlkKSk7CisgICAgICAgICNlbHNl
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGUoaWQpKTsK
KyAgICAgICAgI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkKiBnZXRDb2RlUHRyKHZvaWQgZ2x1ZUhlbHBlcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdsdWVIZWxwZXIpOworICAgIH0KKyNlbmRpZgorCisg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICAgICAgI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX09QQ09ERVMpCisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihnZXRP
cGNvZGUoaWQpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGdldE9wY29kZShpZCkpOworICAgICAgICAjZW5kaWYKICAgICB9CisKIHByaXZh
dGU6CisgICAgLyogbWxhbSBCRUdJTiBvcmlnCiAgICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zOwogICAgIE9wY29kZSogbV9vcGNvZGVNYXA7CisgICAgKi8KKyAgICBzdGF0
aWMgYm9vbCBzX2lzSW5pdGVkOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogc19leGNlcHRpb25J
bnN0cnVjdGlvbnM7CisgICAgc3RhdGljIExMSW50T3Bjb2RlKiBzX29wY29kZU1hcDsKKyAgICAv
LyBtbGFtIEVORCAqLwogfTsKICNlbHNlIC8vIEVOQUJMRShMTElOVCkKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgZ2V0RnVuY3Rpb25F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyNp
ZiBFTkFCTEUoSklUKQogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CiAgICAgICAgIGFy
aXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CkBAIC02MSw2ICs2Miw3IEBAIHZvaWQgZ2V0RnVuY3Rp
b25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYKICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KTsKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CiAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworI2VuZGlmCiB9
CiAKIHZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRD
b2RlJiBqaXRDb2RlKQpAQCAtNjksOCArNzEsOSBAQCB2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvCiAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKyNpZiBF
TkFCTEUoSklUKSAgICAKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0
dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyNlbmRpZgogfQogCiB2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKQEAgLTc5LDggKzgyLDkgQEAgdm9pZCBnZXRQcm9n
cmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIAogICAgICAgICBqaXRDb2RlID0gSklUQ29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3By
b2xvZ3VlKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBJbnN0cnVj
dGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4CiAgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5k
ZXNjcmlwdGlvbigpKTsKICNlbmRpZgogICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVj
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOwotICAgIAorCiAgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0
YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKIH0KIApAQCAtNzQsOCArNzQsOCBAQCB2b2lkKiBj
YWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RyCiAgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVz
Y3JpcHRpb24oKSk7CiAjZW5kaWYKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKTsKLSAgICAKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CisKKyAgICByZXR1cm4gTExJbnQ6OkRh
dGE6OmdldENvZGVQdHIobGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOSArMzEsMjYgQEAKICNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBDUFUoWDg2KQorCisjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKyNkZWZpbmUgT0ZGTElORV9BU01fQ19MT09QIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0NfTE9PUCAwCisjZW5kaWYKKworI2lmIENQVShYODYpICYm
ICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQogI2Vsc2UK
ICNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9USFVNQjIp
CisjaWYgQ1BVKEFSTV9USFVNQjIpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2RlZmluZSBP
RkZMSU5FX0FTTV9BUk12NyAxCiAjZWxzZQogI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCiAj
ZW5kaWYKIAotI2lmIENQVShYODZfNjQpCisjaWYgQ1BVKFg4Nl82NCkgJiYgIUVOQUJMRShMTElO
VF9DX0xPT1ApCiAjZGVmaW5lIE9GRkxJTkVfQVNNX1g4Nl82NCAxCiAjZWxzZQogI2RlZmluZSBP
RkZMSU5FX0FTTV9YODZfNjQgMApAQCAtOTEsNiArOTgsMTAgQEAKICNkZWZpbmUgT0ZGTElORV9B
U01fVkFMVUVfUFJPRklMRVIgMAogI2VuZGlmCiAKKy8qIG1sYW0gVFJZIG1vdmluZyB0byBMb3dM
ZXZlbEludGVycHJldGVyLmNwcAorCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIC8vIFRo
ZXNlIGFyZSBmb3IgYnVpbGRpbmcgYW4gaW50ZXJwcmV0ZXIgZnJvbSBnZW5lcmF0ZWQgYXNzZW1i
bHkgY29kZToKICNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4gICBhc20gKAogI2RlZmluZSBPRkZM
SU5FX0FTTV9FTkQgICAgICk7CkBAIC0xMDgsNyArMTE5LDIxIEBACiAgICAgSElERV9TWU1CT0wo
bGFiZWwpICJcbiIgICAgICAgICAgICAgICAgICAgICBcCiAgICAgU1lNQk9MX1NUUklORyhsYWJl
bCkgIjpcbiIKICNlbmRpZgorI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bjb2Rl
KSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGxpbnRfIyNvcGNvZGUpCiAKICNkZWZpbmUgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwobGFiZWwpICAgTE9DQUxfTEFCRUxfU1RSSU5HKGxhYmVsKSAi
OlxuIgogCisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorCisvLyBUaGVzZSBhcmUgZm9y
IGJ1aWxkaW5nIGEgQyBMb29wIGludGVycHJldGVyOgorI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJ
TgorI2RlZmluZSBPRkZMSU5FX0FTTV9FTkQKKyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wY29kZSkgREVGSU5FX09QQ09ERShvcGNvZGUpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dM
T0JBTF9MQUJFTChsYWJlbCkgIGxhYmVsOgorI2RlZmluZSBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChsYWJlbCkgICBsYWJlbDoKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCisKKy8v
IG1sYW0gRU5EIHRyeSBtb3ZpbmcgdG8gTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8KKwogI2Vu
ZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiIC8vIG1sYW0KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjEsNyArNjIsOCBAQCBw
dWJsaWM6CiAKIGNvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkK
IHsKLSNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUo
SklUKSB8fCBFTkFCTEUoTExJTlQpCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUK
IC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIgaWRl
bnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2
ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4
dHJhY3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T3Bjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T3Bjb2RlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPcGNvZGUu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9wY29kZV9oCisjZGVmaW5lIExM
SW50T3Bjb2RlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CisKKyNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfTk9KSVRfTkFUSVZFX0hFTFBFUih2KSBcCisgICAg
dihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSBcCisgICAgdihjdGlPcFRocm93Tm90Q2F1Z2h0KQor
CisjZWxzZSAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworI2RlZmluZSBGT1JfRUFDSF9MTElO
VF9OT0pJVF9OQVRJVkVfSEVMUEVSKHYpIFwKKyAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuIFVz
ZSB0aGUgSklUIGltcGwgaW5zdGVhZC4KKworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09Q
KQorCisKKyNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUih2KSBcCisgICAgRk9S
X0VBQ0hfTExJTlRfTk9KSVRfTkFUSVZFX0hFTFBFUih2KSBcCisgICAgXAorICAgIHYobGxpbnRf
YmVnaW4pIFwKKyAgICBcCisgICAgdihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSBcCisgICAgdihs
bGludF9ldmFsX3Byb2xvZ3VlKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSkgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkgXAor
ICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spIFwKKyAgICB2KGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spIFwKKyAgICB2KGxsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50KSBcCisgICAgdihsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lKSBcCisgICAgdihsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKSBcCisg
ICAgXAorICAgIC8qIE5hdGl2ZSBjYWxsIHRyYW1wb2xpbmVzICovIFwKKyAgICB2KGxsaW50X25h
dGl2ZV9jYWxsX3RyYW1wb2xpbmUpIFwKKyAgICB2KGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJh
bXBvbGluZSkgXAorICAgIFwKKyAgICB2KGxsaW50X2VuZCkKKworCisjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKKworICAgIC8vIERlZmluZSBwc2V1ZG8gb3Bjb2RlcyBmb3IgdGhlIEMgbG9vcDoK
KyAgICAjZGVmaW5lIE9QQ09ERV9JRF9FTlVNKF9fb3Bjb2RlLCBsZW5ndGgpIF9fb3Bjb2RlLAor
ICAgICNkZWZpbmUgT1BDT0RFX1BTRVVET19JRF9FTlVNKF9fb3Bjb2RlKSBfX29wY29kZSwKKwor
ICAgIHR5cGVkZWYgZW51bSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIo
T1BDT0RFX1BTRVVET19JRF9FTlVNKSAgICAgXAorICAgIH0gTExJbnRPcGNvZGVJRDsKKworICAg
ICN1bmRlZiBPUENPREVfSURfRU5VTQorICAgICN1bmRlZiBPUENPREVfUFNFVURPX0lEX0VOVU0K
KworICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorICAgIHR5cGVkZWYgSlND
OjpPcGNvZGUgTExJbnRPcGNvZGU7CisgICAgI2Vsc2UKKyAgICB0eXBlZGVmIExMSW50T3Bjb2Rl
SUQgTExJbnRPcGNvZGU7CisgICAgI2VuZGlmCisKKyAgICBjb25zdCBpbnQgbnVtTExJbnRPcGNv
ZGVJRHMgPSBsbGludF9lbmQgKyAxOworICAgIGNvbnN0IExMSW50T3Bjb2RlSUQgbGxpbnRfdW51
c2VkID0gbGxpbnRfZW5kOworCisjZWxzZSAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworICAg
IC8vIERlZmluZSBwc2V1ZG8gb3Bjb2RlcyBmb3IgdGhlIEMgbG9vcDoKKyAgICAjZGVmaW5lIE9Q
Q09ERV9JRF9FTlVNKF9fb3Bjb2RlLCBsZW5ndGgpIF9fb3Bjb2RlLAorICAgIHR5cGVkZWYgZW51
bSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSBMTEludE9wY29kZUlEOworICAgICN1bmRlZiBPUENPREVfSURfRU5VTQorCisg
ICAgdHlwZWRlZiBKU0M6Ok9wY29kZSBMTEludE9wY29kZTsKKyAgICBjb25zdCBpbnQgbnVtTExJ
bnRPcGNvZGVJRHMgPSBKU0M6Om51bU9wY29kZUlEczsKKworI2VuZGlmIC8vICFFTkFCTEUoTExJ
TlRfQ19MT09QKQorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRP
cGNvZGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBACiAj
aW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJQcm9maWxlci5oIiAvLyBt
bGFtCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKIApAQCAtMjMxLDkgKzIzMyw5IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm8KIAogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiB7
Ci0gICAgZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHNjb3BlICVwXG4i
LAorICAgIGRhdGFMb2coIiVwIHZwYyAlcDogZXhlY3V0aW5nICVwIGJjIyV6dSwgJXMsIHNjb3Bl
ICVwXG4iLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCi0gICAgICAgICAgICBleGVj
LAorICAgICAgICAgICAgZXhlYywgcGMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCiAgICAg
ICAgICAgICBvcGNvZGVOYW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKHBjWzBdLnUub3Bjb2RlKV0sCiAgICAgICAgICAgICBleGVjLT5zY29wZUNoYWluKCkp
OwpAQCAtMjU1LDYgKzI1Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2Up
CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KIAorI2lmIEVOQUJMRShKSVQpCiBpbmxpbmUgYm9v
bCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIFlvdSBjYW4gbW9kaWZ5IHRo
aXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxkLgpAQCAt
MzkwLDYgKzM5Myw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiAgICAgICAgIGNv
ZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChyZWdpc3Rlcl9m
aWxlX2NoZWNrKQogewpAQCAtNDAzLDYgKzQwNyw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJl
Z2lzdGVyX2ZpbGVfY2hlY2sKICNlbmRpZgogICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClb
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwogICAgIGlmIChVTkxJS0VM
WSghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVn
aXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7Cisg
ICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGV4
ZWMsICIgICAqKiogbWxhbSBsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrOiAiKTsKKyAgICAgICAg
I2VuZGlmCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5Q
QygpOwogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICAgICAgZ2xvYmFs
RGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CkBAIC00MjEs
OCArNDI4LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXQKICAg
ICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIGdsb2JhbERhdGEuZXhj
ZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwogICAgICAgICBpbnRlcnBy
ZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0dXJuUEMpOworICAgICAgICAjaWYgbWxhbV9QUklO
VEYKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShleGVjLCAiICoqKiBTdGFja092ZXJm
bG93IChpbiBzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKSIpOworICAgICAgICAjZW5kaWYKICAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpLCBleGVjKTsKICAgICB9CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1J
bnNwZWN0b3I6OmR1bXBGcmFtZShuZXdFeGVjLCAiICoqKiBOb3JtYWwgKGluIHNsb3dfcGF0aF9j
YWxsX2FyaXR5Q2hlY2spIik7CisgICAgI2VuZGlmCiAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBu
ZXdFeGVjKTsKIH0KIApAQCAtNjM3LDYgKzY1MCwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbXVsKQogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgZG91YmxlIGEgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKICAgICBkb3VibGUgYiA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgICNpZiBtbGFtX1BSSU5URgorICAg
IHByaW50ZigiXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PVxuIik7CisgICAgcHJpbnRmKCIgbGxpbnQgc2xvd19wYXRoX211bCAlZSAqICVlID09PiAlZVxu
IiwgYSwgYiwgYSpiKTsKKyAgICBwcmludGYoIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAjZW5kaWYKICAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoYSAqIGIpKTsKIH0KIApAQCAtNzc4LDcgKzc5Niw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJl
c29sdmVHbG9iYWwoRXhlY1N0YXRlKiAKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpKTsKICAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKLSAgICAKKworICAg
IC8vc3RhdGljIGludCBtbGFtQ291bnQgPSAwOworICAgIC8vcHJpbnRmKCJcblxuICoqKiBbJWRd
IHN0cnVjdHVyZSAlcCwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSAlcFxuXG4iLCArK21sYW1D
b3VudCwgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkp
OwogICAgIAogICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBy
b3BlcnR5KTsKQEAgLTc5Miw3ICs4MTIsMTIgQEAgc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2Jh
bChFeGVjU3RhdGUqIAogICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgIH0KLSAgICAgICAg
CisgICAgICAgIC8qIG1sYW0KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIGlmIChy
ZXN1bHQuaXNJbnQzMigpKQorICAgICAgICAgICAgcHJpbnRmKCIgICBtbGFtIFNMT1cgcmVzb2x2
ZUdsb2JhbCB8IGNvZGVCbG9jayAlcCBvYmogJXAgcmVzdWx0ID0gJWRcbiIsIGNvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCByZXN1bHQuYXNJbnQzMigpKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAg
IC8vIG1sYW0gKi8KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkBAIC04OTcs
MTAgKzkyMiwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewotICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MzAsMTIgKzk1
NSwzNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKLSAgICBpZiAocGNb
OF0udS5vcGVyYW5kKQorICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKICAgICAgICAgYXNPYmpl
Y3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50LCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgc2xvdCk7Ci0gICAgZWxzZQorICAgICAgICAvKiBtbGFtCisgICAgICAgICNp
ZiBtbGFtX1BSSU5URgorICAgICAgICBpZiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkuaXNJbnQz
MigpKSB7CisgICAgICAgICAgICAvLyBwcmludGYoIiAgIG1sYW0gUEFUSF8xIHNsb3dfcGF0aF9w
dXRfYnlfaWQgfCBjb2RlYmxvY2sgJXAgcmVzdWx0ID0gJWRcbiIsIGNvZGVCbG9jaywgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkuYXNJbnQzMigpKTsKKyAgICAgICAgfQorICAgICAgICAjZW5kaWYK
KyAgICAgICAgLy8gbWxhbSAqLworICAgIH0gZWxzZSB7CiAgICAgICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICAgICAgLyog
bWxhbQorICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgaWYgKExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLmlzSW50MzIoKSkgeworICAgICAgICAgICAgLy8gcHJpbnRmKCIgICBtbGFtIFBB
VEhfMiBzbG93X3BhdGhfcHV0X2J5X2lkIHwgb2JqICVwIGNvZGVibG9jayAlcCByZXN1bHQgPSAl
ZFxuIiwgYmFzZVZhbHVlLmdldE9iamVjdCgpLCBjb2RlQmxvY2ssIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLmFzSW50MzIoKSk7CisgICAgICAgIH0KKyAgICAgICAgI2VuZGlmCisgICAgICAgIC8v
IG1sYW0gKi8KKyAgICB9CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCisgICAg
LyogbWxhbQorICAgICNpZiBtbGFtX1BSSU5URgorICAgIGlmIChMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS5pc0ludDMyKCkpIHsKKyAgICAgICAgLy8gcHJpbnRmKCIgICBtbGFtIE5PX0VYQ0VQVElP
TiBzbG93X3BhdGhfcHV0X2J5X2lkIHwgY29kZWJsb2NrICVwIHJlc3VsdCA9ICVkXG4iLCBjb2Rl
QmxvY2ssIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLmFzSW50MzIoKSk7CisgICAgfQorICAgICNl
bmRpZgorICAgIC8vIG1sYW0gKi8KKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9X
CiAgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkpIHsKQEAgLTk1Myw3ICsxMDAwLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKICAg
ICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgotICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAKICAgICAgICAgICAgICAgICAgICAgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTk3MywyNCArMTAyMCwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAo
cGNbOF0udS5vcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQp
OworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUp
OworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAg
ICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpAQCAtMTMwNCw2ICsxMzUxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25ld19mdW5jXwogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxl
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogeworICAgIC8vIG1sYW0gcHJpbnRmKCIg
ICBtbGFtIFNMT1cgUEFUSCBoYW5kbGVIb3N0Q2FsbCBmcCAlcCBwYyAlcCBjYWxsZWUgJXAga2lu
ZCAlZCBAICVzOiVkXG4iLCBleGVjQ2FsbGVlLCBwYywgY2FsbGVlLmdldE9iamVjdCgpLCBraW5k
LCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOwogCkBAIC0xMzcxLDIyICsxNDE5LDU1IEBAIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc2Nv
cGUtPmdsb2JhbERhdGE7CiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihzY29wZSk7CiAg
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAg
ICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAgICoqKiBtbGFtIGV4ZWN1dGFibGUgPSBj
YWxsZWUtPmV4ZWN1dGFibGUoKSAlcFxuIiwgZXhlY3V0YWJsZSk7CisgICAgI2VuZGlmCiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAwOwotICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlm
IChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisjaWYgRU5BQkxFKEpJVCkgLy8gbWxh
bSBGSVhNRQogICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
cihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOwotICAgIGVsc2UgeworI2Vsc2UKKyAgICAgICAgY29k
ZVB0ciA9IChraW5kID09IENvZGVGb3JDYWxsKSA/CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5l
KSA6CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0
cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOworI2VuZGlmIC8vIG1sYW0gRklY
TUUKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiICAgKioqIG1sYW0g
aXNIb3N0RnVuY3Rpb24gfCBjb2RlUHRyID8/XG4iIC8qICwgY29kZVB0ciAqLyk7CisgICAgICAg
ICNlbmRpZgorICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGls
ZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOwotICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICB9CiAgICAgICAg
IGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOwogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRG
CisgICAgICAgIHByaW50ZigiICAgKioqIG1sYW0gTk9UIGlzSG9zdEZ1bmN0aW9uIHwgY29kZUJs
b2NrICVwXG4iLCBjb2RlQmxvY2spOworICAgICAgICAjZW5kaWYKKyAgICAgICAgLy8qIG1sYW0K
KyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIHByaW50ZigiXG4gbWxhbSBDT01QSUxF
RCBjb2RlQmxvY2s9ICVwIGV4ZWN1dGFibGUgJXAgQCAlcyAlczolZFxuIiwKKyAgICAgICAgICAg
ICAgIGNvZGVCbG9jaywgZnVuY3Rpb25FeGVjdXRhYmxlLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9f
LCBfX0xJTkVfXyk7CisgICAgICAgICNlbmRpZgorICAgICAgICAvLyBtbGFtICovCisjaWYgRU5B
QkxFKEpJVCkgLy8gbWxhbSBGSVhNRQogICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpKQogICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisjZWxzZSAvLyBFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8
IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAg
ICAgICAgY29kZVB0ciA9IChraW5kID09IENvZGVGb3JDYWxsKSA/CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spIDoKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IChraW5kID09
IENvZGVGb3JDYWxsKSA/CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpIDoKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlRfQ19MT09QKQogICAgIH0KICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvKSB7CkBAIC0x
NDAwLDYgKzE0ODEsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhl
YwogICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7
CiAgICAgfQogICAgIAorICAgICNpZiBtbGFtX1BSSU5URgorICAgIGV4ZWNDYWxsZWUtPnNldENv
ZGVCbG9jayhjb2RlQmxvY2spOworICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhlY0NhbGxl
ZSwgIiAgPj4+IFBVU0hFRCAoRU5EIHNldHVwQ2FsbCkgdG8gbmV3ICIsIHBjLCBfX0ZVTkNUSU9O
X18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCisKICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0KIApA
QCAtMTQxNCwxMCArMTUwMCwyMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWND
YWxsKEV4CiAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCk7CiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3Bl
cmFuZDsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAgICoqKiBtbGFtIGV4ZWND
YWxsZWUgJXAgPSAgZXhlYyAlcCArICVkXG4iLCBleGVjQ2FsbGVlLCBleGVjLCBwY1szXS51Lm9w
ZXJhbmQpOworICAgICNlbmRpZgogICAgIAogICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgcHJpbnRmKCIgICAqKiogbWxhbSBhcmdDb3VudEluY2x1ZGluZ1RoaXMgJWRcbiIsIHBjWzJd
LnUub3BlcmFuZCk7CisgICAgI2VuZGlmCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdp
c3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgICNpZiBtbGFtX1BSSU5URgor
ICAgIHByaW50ZigiICAgKioqIG1sYW0gY2FsbGVlICVwXG4iLCBjYWxsZWVBc1ZhbHVlLmdldE9i
amVjdCgpKTsKKyAgICAjZW5kaWYKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAgICoqKiBtbGFtIGNhbGxlckZy
YW1lICVwXG4iLCBleGVjKTsKKyAgICAjZW5kaWYKICAgICAKICAgICBBU1NFUlQocGNbNF0udS5j
YWxsTGlua0luZm8pOwogICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQs
IGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKQEAgLTE0MjUsNiArMTUyMywx
MiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4CiAKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQogeworICAgIC8qIG1sYW0KKyAgICAjaWYgbWxh
bV9QUklOVEYKKyAgICBwcmludGYoIlxuXG4gbWxhbSAmJiYmJiYmJiBsbGludF9zbG93X3BhdGhf
Y2FsbCB8IHBjICVwIGZyYW1lKCVwKS0+Y3VycmVudFZQQygpID0gJXAgQCAlczolZFxuXG4iLAor
ICAgICAgICAgICBwYywgZXhlYywgZXhlYy0+Y3VycmVudFZQQygpLCBfX0ZJTEVfXywgX19MSU5F
X18pOworICAgICNlbmRpZgorICAgIC8vIG1sYW0gKi8KICAgICBMTElOVF9CRUdJTl9OT19TRVRf
UEMoKTsKICAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKIH0K
QEAgLTE0NjgsMTQgKzE1NzIsMjIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nh
bGxfZXZhbAogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAgIGV4ZWND
YWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
ICAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Ci0gICAg
ZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50
X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoTExJ
bnQ6OkRhdGE6OmdldENvZGVQdHIobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKICAgICBl
eGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyAr
IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CiAgICAgCiAgICAgaWYgKCFpc0hvc3RGdW5j
dGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAgICAgIHJldHVybiBzZXRV
cENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKICAgICAK
KyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGV4ZWNDYWxs
ZWUsICIgID4+PiBQVVNIRUQgKHNsb3cgZXZhbCkgdG8gbmV3ICIsIHBjLCBfX0ZVTkNUSU9OX18s
IF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCisKICAgICBnbG9iYWxEYXRhLmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgICNpZiBtbGFtX1BSSU5URgor
ICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhlY0NhbGxlZSwgIiAgPz8/IEFGVEVSIChzbG93
IGV2YWwpIHRvIG5ldyAiLCBwYywgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOwor
ICAgICNlbmRpZgorCiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKIH0KIApAQCAtMTUx
NCw2ICsxNjI2LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpCiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpCiB7CisgICAgLyog
bWxhbQorICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhl
YywgIiAgID09PSBpbnNwZWN0ICIsIHBjLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVf
Xyk7CisgICAgI2VuZGlmCisgICAgLy8gbWxhbSAqLwogICAgIExMSU5UX0JFR0lOKCk7CiAgICAg
TExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMzMgKzQ0LDUwIEBAIG5hbWVzcGFjZSBM
TEludCB7CiAvLyB3YXJuaW5ncywgb3Igd29yc2UsIGEgY2hhbmdlIGluIHRoZSBBQkkgdXNlZCB0
byByZXR1cm4gdGhlc2UgdHlwZXMuCiBzdHJ1Y3QgU2xvd1BhdGhSZXR1cm5UeXBlIHsKICAgICB2
b2lkKiBhOwotICAgIHZvaWQqIGI7CisgICAgRXhlY1N0YXRlKiBiOwogfTsKIAotaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwgdm9pZCogYikKK2lubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKIHsK
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0OwogICAgIHJlc3VsdC5hID0gYTsKICAgICBy
ZXN1bHQuYiA9IGI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbHNlCisKK2lubGluZSB2b2lk
IGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0
YXRlKiYgYikKK3sKKyAgICBhID0gcmVzdWx0LmE7CisgICAgYiA9IHJlc3VsdC5iOworfQorCisj
ZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogdHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0dXJu
VHlwZTsKIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwg
dm9pZCogYikKK3R5cGVkZWYgdW5pb24geworICAgIHN0cnVjdCB7CisgICAgICAgIHZvaWQqIGE7
CisgICAgICAgIEV4ZWNTdGF0ZSogYjsKKyAgICB9IHBhaXI7CisgICAgaW50NjRfdCBpOworfSBT
bG93UGF0aFJldHVyblR5cGVFbmNvZGluZzsKKworaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBl
bmNvZGVSZXN1bHQodm9pZCogYSwgRXhlY1N0YXRlKiBiKQogewotICAgIHVuaW9uIHsKLSAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgIHZvaWQqIGE7Ci0gICAgICAgICAgICB2b2lkKiBiOwot
ICAgICAgICB9IHBhaXI7Ci0gICAgICAgIGludDY0X3QgaTsKLSAgICB9IHU7CisgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKICAgICB1LnBhaXIuYSA9IGE7CiAgICAgdS5wYWlyLmIg
PSBiOwogICAgIHJldHVybiB1Lmk7CiB9Ci0jZW5kaWYKKworaW5saW5lIHZvaWQgZGVjb2RlUmVz
dWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQor
eworICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7CisgICAgdS5pID0gcmVzdWx0Owor
ICAgIGEgPSB1LnBhaXIuYTsKKyAgICBiID0gdS5wYWlyLmI7Cit9CisjZW5kaWYgLy8gVVNFKEpT
VkFMVUUzMl82NCkKIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
b3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgewogCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7CiAg
ICAgSlNJbnRlcmZhY2VKSVQgaml0OwpAQCAtNzgsNiArODAsOCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHCiAgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIik7CiB9CiAK
KyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
cmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgzLDE1ICs4MywxNiBAQCBj
b25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKIAogCiAjIFV0aWxpdGllcworCiBtYWNy
byBkaXNwYXRjaChhZHZhbmNlKQotICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCi0gICAgam1wIFtQ
Q10KKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQyAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihj
dXJyZW50Qnl0ZWNvZGUpOworICAgIGptcCBbUENdICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IE5FWFRfSU5TVFJVQ1RJT047CiBlbmQKIAogbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHBjT2Zmc2V0KQogICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKICAgICBhZGRwIHBjT2Zmc2V0LCBQ
QwotICAgIGptcCBbUENdCisgICAgam1wIFtQQ10gICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKIGVuZAogCiBtYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkK
QEAgLTEwMCwyMSArMTAxLDI1IEBAIG1hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQogZW5k
CiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCi0gICAgam1wIFtQQ10KKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1f
UFJJTlRGKSBwcmludGYoIlxuIG1sYW0gOjogUFJJTlQgZGlzcGF0Y2hBZnRlckNhbGwoKSB8IHBj
ID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnO1xuXG4iKTsKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAv
LyBSZWxvYWQgYSBwcmV2aW91c2x5IHN0YXNoZWQgcmV0dXJuUEMuCisgICAgam1wIFtQQ10gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047
CiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQogICAgIGlmIEFSTXY3
Ci0gICAgICAgIG1vdmUgYXJnMSwgdDAKLSAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBt
b3ZlIGFyZzEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMSA9IC4uLjsKKyAg
ICAgICAgbW92ZSBhcmcyLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzIgPSAu
Li47CisgICAgICAgIGNhbGwgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
YWxsIEMgZnVuY3Rpb247CiAgICAgZWxzaWYgWDg2Ci0gICAgICAgIHBva2UgYXJnMSwgMAotICAg
ICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmcxLCAwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAgICAgIHBva2UgYXJnMiwgMSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBhcmcyID0gLi4uOworICAgICAgICBjYWxsIGZ1bmN0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uOworICAgIGVsc2lmIENf
TE9PUAorICAgICAgICBjeHhDYWxsU2xvd1BhdGggZnVuY3Rpb24sIGFyZzEsIGFyZzIgICAgLy8g
Y2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAg
ICBlbmQKLSAgICBjYWxsIGZ1bmN0aW9uCiBlbmQKIAogIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJn
MyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KQEAgLTEyNCwyMSArMTI5
LDI0IEBAIG1hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywKICAgICAgICAg
bW92ZSBhcmcyLCB0MQogICAgICAgICBtb3ZlIGFyZzMsIHQyCiAgICAgICAgIG1vdmUgYXJnNCwg
dDMKKyAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NgogICAgICAgICBwb2tlIGFy
ZzEsIDAKICAgICAgICAgcG9rZSBhcmcyLCAxCiAgICAgICAgIHBva2UgYXJnMywgMgogICAgICAg
ICBwb2tlIGFyZzQsIDMKKyAgICAgICAgY2FsbCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAor
ICAgICAgICBlcnJvcgogICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKLSAgICBjYWxs
IGZ1bmN0aW9uCiBlbmQKIAogbWFjcm8gY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGNDYWxs
MihzbG93UGF0aCwgY2ZyLCBQQykKLSAgICBtb3ZlIHQwLCBQQwotICAgIG1vdmUgdDEsIGNmcgor
ICAgIG1vdmUgdDAsIFBDICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlv
bjx0MD4KKyAgICBtb3ZlIHQxLCBjZnIgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KIGVuZAogCiAjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0
byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQpA
QCAtMTYyLDggKzE3MCw5IEBAIGVuZAogCiAjIENhbGwgYSBzbG93UGF0aCBmb3IgY2FsbCBvcGNv
ZGVzLgogbWFjcm8gY2FsbENhbGxTbG93UGF0aChhZHZhbmNlLCBzbG93UGF0aCwgYWN0aW9uKQot
ICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAotICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwICAgICAgICAg
ICAgICAgICAgICAvLyByZXR1cm5QQzx0MD4gPSBwYyArIGFkdmFuY2UqNDsKKyAgICBzdG9yZXAg
dDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENvdW50
LlRhZyA9IHJldHVyblBDPHQwPjsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJp
bnRmKCJcbiBtbGFtIDo6IFBSSU5UIGNhbGxDYWxsU2xvd1BhdGgoKSB8IGNmciAlcCBwYyAlcCB8
IHJldHVyblBDPHQwPiA9IHBjICsgYWR2YW5jZSo0OyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBy
ZXR1cm5QQzx0MD47XG5cbiIsIGNhbGxGcmFtZSwgclBDLnUudnApOwogICAgIGNDYWxsMihzbG93
UGF0aCwgY2ZyLCBQQykKICAgICBtb3ZlIHQxLCBjZnIKICAgICBhY3Rpb24odDApCkBAIC0xNzMs
MzAgKzE4MiwzMCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVCgKICAgICAgICAgMSwKICAgICAgICAgbWFjcm8gKCkKLSAgICAgICAgICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAgIC8vIGNmci5Bcmd1bWVudENv
dW50LlRhZyA9IHBjOwogICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQ
QykKICAgICAgICAgICAgIG1vdmUgdDEsIGNmcgogICAgICAgICAgICAgYnRweiB0MCwgLnJlY292
ZXIKICAgICAgICAgICAgIGptcCB0MAogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMgICAgLy8gcGMgPSBjZnIuQXJndW1l
bnRDb3VudC5UYWc7CiAgICAgICAgIGVuZCkKIGVuZAogCiAjIEluZGV4LCB0YWcsIGFuZCBwYXls
b2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CiAjIGNoYW5nZWQu
CiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCi0gICAg
YmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCi0gICAgam1wIC5kb25lCisgICAgYmlndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OworICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIGluZGV4LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNm
cltpbmRleDxhMD4uUGF5bG9hZDsKKyAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgZ290byAuZG9uZTsKIC5jb25zdGFudDoKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgcGF5bG9hZAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZl
Y3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbcGF5bG9hZF0sIHBheWxvYWQgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEy
PiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgICMg
VGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1
ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUgPDwgMyB3
aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAz
LgotICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRw
IFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgbG9hZHAgVGFn
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+
W2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwog
LmRvbmU6CiBlbmQKIApAQCAtMjE1LDM1ICsyMjQsNDAgQEAgZW5kCiAKICMgSW5kZXggYW5kIHBh
eWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgog
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKLSAg
ICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZwotICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAvLyBtYWNy
bzogbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgeworICAg
IGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5d
LlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9h
ZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOworICAgIGptcCAuZG9uZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0YWcKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3Rl
cnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0YWddLCB0YWcgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+
ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICAgIyBU
aGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVl
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAogICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdp
bGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMu
Ci0gICAgbHNoaWZ0aSAzLCBpbmRleAotICAgIGFkZHAgaW5kZXgsIHRhZwotICAgIGxvYWRwIFBh
eWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAotICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcK
KyAgICBsc2hpZnRpIDMsIGluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0ZUluZGV4PGEw
PiA9IGluZGV4PGEwPiA8PCAzOworICAgIGFkZHAgaW5kZXgsIHRhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4g
PSBjb25zdGFudDxhMT4uUGF5bG9hZDsKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5UYWc7CiAuZG9uZToKKyAgICAvLyB9
IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZy4KIGVuZAogCiBtYWNybyBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxv
YWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50Ci0gICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICBqbXAgLmRvbmUKKyAgICAv
LyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFn
Q2hlY2ssIHBheWxvYWQpIHsKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LCAuY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25z
dGFudDsKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hl
Y2soY2ZyW2luZGV4XS5UYWcpOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOworICAgIG1sYW1EbyAvLyBpZiAo
bWxhbVByaW50KSB7IHByaW50ZigiICAgICAgbWxhbSBBU00gbG9hZCB2YXIgfCBvYmogJXAgY2Zy
ICVwW2luZGV4ICVsZF1cbiIsIHIwLnUudnAsIGNhbGxGcmFtZSwgcjQudS5pKTsgbWxhbVByaW50
PSBmYWxzZTsgfQorICAgIGptcCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBn
b3RvIC5kb25lOwogLmNvbnN0YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
Ci0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxv
YWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIGNvZGVCbG9jazxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Bh
eWxvYWRdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2Fk
PiA9IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwog
ICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMg
YSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAjIHRoZW4gdmFsdWUg
PDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
KSA8PCAzLgotICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCi0gICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICB0YWdD
aGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVy
PHBheWxvYWQ+W2luZGV4XS5UYWcpOworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwg
aW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBwYXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2Fk
OwogLmRvbmU6CisgICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b20uCiBlbmQKIAogIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVu
dCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKQEAgLTI1MiwxMCArMjY2LDE0
IEBAIGVuZAogIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZv
bGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQogIyB0YWcuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgLy8g
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBw
YXlsb2FkLCBzbG93KSB7CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b20oCiAgICAgICAgIGluZGV4LAotICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1
YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKLSAgICAgICAgcGF5bG9hZCkKKyAgICAgICAg
bWFjcm8gKGFjdHVhbFRhZykKKyAgICAgICAgICAgIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRU
YWcsIHNsb3cgIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsK
KyAgICAgICAgZW5kLAorICAgICAgICBwYXlsb2FkKSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbSguLi4pOworICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkLgogZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQpAQCAtMjcxLDggKzI4OSwxMCBAQCBlbmQKIAog
bWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKICAgICBpZiBWQUxVRV9Q
Uk9GSUxFUgotICAgICAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRh
Z09mZnNldFtwcm9maWxlXQotICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjpt
X2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCisgICAgLy8gbWFjcm8gdmFsdWVQcm9m
aWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSBpLmUuIG9yYWNsZUNhY2hlSWQpIHsKKyAgICAgICAg
c3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0g
ICAgICAgICAgICAvLyAgIFZhbHVlUHJvZmlsZTo6YnVja2V0c1tvcmFjbGVDYWNoZUlkXS5UYWcg
PSB0YWc8YTA+OworICAgICAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tl
dHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdICAgIC8vICAgVmFsdWVQcm9maWxlOjpidWNrZXRz
W29yYWNsZUNhY2hlSWRdLlBheWxvYWQgPSBwYXlsb2FkPGExPjsKKyAgICAvLyB9IEVORCB2YWx1
ZVByb2ZpbGUuCiAgICAgZW5kCiBlbmQKIApAQCAtMjk5LDYzMiArMzE5LDk2NiBAQCBlbmQKIAog
IyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisvLyBm
dW5jdGlvbjogZm9yIGVhY2ggaWQgaW4gbG9jYWxzIHsgY2ZyW2lkXSA9IHVuZGVmaW5lZDsgfQor
Ly8KKy8vICAgSW5pdGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4gSWYgdGhl
IGNvZGUgYmxvY2sgcmVxdWlyZXMKKy8vICAgYW4gYWN0aXZhdGlvbiwgZW50ZXJfd2l0aF9hY3Rp
dmF0aW9uIGlzIHVzZWQgaW5zdGVhZC4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0
IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgorCiBfbGxpbnRfb3BfZW50ZXI6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAgICAgICAgICAg
ICAgICAvLyB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNvZGVCbG9jawotICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5t
X251bVZhcnMKLSAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKLSAgICBtb3ZlIFVuZGVmaW5lZFRh
ZywgdDAKLSAgICBtb3ZlIDAsIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAg
ICAgICAgICAgIC8vIGNvZGVCbG9jazx0Mj4gPSBjZnIuQ29kZUJsb2NrOworICAgIGxvYWRpIENv
ZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIgICAgICAvLyBudW1WYXJzPHQyPiA9IGNvZGVCbG9j
azx0Mj4ubV9udW1WYXJzOworICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZSAgICAgICAgICAgICAg
ICAgICAvLyBpZiAobnVtVmFyczx0Mj4gPT0gMCkgZ290byAuZG9uZTsKKyAgICBtb3ZlIFVuZGVm
aW5lZFRhZywgdDAgICAgICAgICAgICAgICAgICAgLy8ganNVbmRlZmluZWQ8dDA+ID0gVW5kZWZp
bmVkVGFnOworICAgIG1vdmUgMCwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB6
ZXJvPHQxPiA9IDA7CiAub3BFbnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0MgotICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCi0gICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorICAgIHN1YmkgMSwgdDIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIG51bVZhcnM8dDI+LS07CisgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5U
YWcgPSBqc1VuZGVmaW5lZDx0MD47CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XS5QYXlsb2FkID0gemVybzx0MT47CisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcCAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQy
PiAhPSAwKSBnb3RvIC5sb29wOwogLm9wRW50ZXJEb25lOgotICAgIGRpc3BhdGNoKDEpCisgICAg
ZGlzcGF0Y2goMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FjdGl2YXRpb24gZHN0UmVnSWQKKy8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IEFjdGl2YXRpb24oKSBpZiBub3QgYWxyZWFkeSBw
cmVzZW50OworLy8KKy8vICAgSWYgdGhlIGFjdGl2YXRpb24gb2JqZWN0IGZvciB0aGlzIGNhbGxm
cmFtZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAgIHRoaXMgY3JlYXRlcyBpdCBhbmQg
d3JpdGVzIGl0IGJhY2sgdG8gZHN0LgorCiBfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAg
ICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFjdGl2YXRpb25SZWc8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QWN0aXZhdGlvbkRvbmUgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVnPHQwPl0uVGFnICE9IEVtcHR5
VmFsdWVUYWcpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y3JlYXRlX2FjdGl2YXRpb24pICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9j
cmVhdGVfYWN0aXZhdGlvbjsKIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgotICAgIGRpc3BhdGNo
KDIpCisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNv
ZGU6IGluaXRfbGF6eV9yZWcgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0g
SlNWYWx1ZSgpOworLy8KKy8vICAgSW5pdGlhbGlzZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8v
ICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJs
b2NrLgogCiBfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQotICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
ZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJ
ZF07CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0PHQwPl0uVGFnID0gRW1wdHlWYWx1ZVRhZzsK
KyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3Q8dDA+XS5QYXlsb2FkID0gMDsKKyAgICBkaXNwYXRj
aCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FyZ3Vt
ZW50cyBkc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBuZXcgQXJndW1lbnRz
KCkgaWYgbm90IGFscmVhZHkgcHJlc2VudDsKKy8vCisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVu
dHMnIG9iamVjdCBhbmQgcGxhY2VzIGl0IGluIGJvdGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNh
bGwgZnJhbWUgc2xvdCBhbmQgdGhlIGxvY2FsICdhcmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBp
ZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4KKwogX2xsaW50X29wX2NyZWF0
ZV9hcmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAot
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QXJndW1lbnRzRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9h
cmd1bWVudHMpCisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3Jl
YXRlQXJndW1lbnRzRG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XS5UYWcgIT0gRW1wdHlWYWx1ZVRh
ZykgZ290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9h
cmd1bWVudHM7CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAg
ZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG9wX2Ny
ZWF0ZV90aGlzIHRoaXNSZWdJZAorLy8gZnVuY3Rpb246IGNmclt0aGlzUmVnSWRdID0gbmV3IE9i
amVjdChjdXJyZW50IFByb3RvPyk7CisvLyBtbGFtIEZJWE1FOiBIb3cgZG9lcyB0aGUgY2FjaGVk
SW5oZXJpdG9yIGdldCBwb3B1bGF0ZWQ/CisvLyAgICAgICBDbGFzc2ljIHNwZWNpZmllcyBhIDJu
ZCBvcGVyYW5kIHByb3RvKHIpLCBidXQgb3VyIGRpc3BhdGNoIGJlbG93IGlnbm9yZXMgaXQuCisv
LworLy8gICBBbGxvY2F0ZSBhbiBvYmplY3QgYXMgJ3RoaXMnLCBmb3IgdXNlIGluIGNvbnN0cnVj
dGlvbi4KKy8vICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5u
aW5nIG9mIGEgY29kZSBibG9jay4KIAogX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVU
aGlzU2xvdworICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnIuQ2FsbGVlOworICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MiAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaW5oZXJpdG9yPHQyPiA9IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOwor
ICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKGluaGVyaXRvciA9PSAwKSBnb3RvIC5zbG93OworICAgIC8v
IGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xv
YmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgaW5oZXJpdG9yPHQyPiwgdDAsIHQxLCB0
MywgLm9wQ3JlYXRlVGhpc1Nsb3cpOwogICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFs
T2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5m
bywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQotICAgIGxvYWRpIDRbUENdLCB0
MQotICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRp
IDRbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpc0lEPHQxPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnJbdGhpc0lEPHQxPl0uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
clt0aGlzSUQ8dDE+XS5QYXlsb2FkID0gdGhpczx0MD47CisgICAgZGlzcGF0Y2goMikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfdGhpczsKKyAgICBkaXNwYXRjaCgyKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRlY29kZTogY29udmVydF90aGlzIHRoaXNSZWdJ
ZCBvcmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogY2ZyW3RoaXNSZWdJZF0gPSBDb252ZXJ0VG9U
aGlzKGNmclt0aGlzUmVnSWRdKTsKKy8vCisvLyAgIFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3Ro
aXMnIHJlZ2lzdGVyLCBjb252ZXJ0cyBpdCB0byBhCisvLyAgIHZhbHVlIHRoYXQgaXMgc3VpdGFi
bGUgZm9yIHVzZSBhcyB0aGUgJ3RoaXMnIHZhbHVlLCBhbmQKKy8vICAgc3RvcmVzIGl0IGluIHRo
ZSAndGhpcycgcmVnaXN0ZXIuIFRoaXMgb3Bjb2RlIGlzIGVtaXR0ZWQKKy8vICAgdG8gYXZvaWQg
ZG9pbmcgdGhlIGNvbnZlcnNpb24gaW4gdGhlIGNhbGxlciB1bm5lY2Vzc2FyaWx5LgorLy8KKy8v
ICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg
Y29kZQorLy8gICBibG9jay4KKwogX2xsaW50X29wX2NvbnZlcnRfdGhpczoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAg
dmFsdWVQcm9maWxlKENlbGxUYWcsIHQwLCB0MSkKLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRp
IDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpc0lEPHQwPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgICAgICAg
ICAvLyBpZiAoY2ZyW3RoaXNJRDx0MD5dLlRhZyAhPSBDZWxsVGFnKSBnb3RvIC5zbG93OworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnJbdGhpc0lEPHQwPl0uUGF5bG9hZDsKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MD4gPSB0aGlzPHQwPi5zdHJ1Y3R1cmU7CisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBl
LCAub3BDb252ZXJ0VGhpc1Nsb3cgICAgLy8gaWYgKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlw
ZSA8IE9iamVjdFR5cGUpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmFjbGVJZDx0
MT4gPSBvcGVyYW5kc1tvcmFjbGVDYWNoZUlkXTsKKyAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywg
dDAsIHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlUHJv
ZmlsZShDZWxsVGFnLCBzdHJ1Y3R1cmU8dDA+LCBvcmFjbGVJZDx0MT4pOworICAgIGRpc3BhdGNo
KDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BDb252ZXJ0VGhpc1Nsb3c6Ci0gICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKQotICAgIGRpc3BhdGNoKDMp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jb252ZXJ0X3RoaXM7CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5ld19vYmpl
Y3QgZHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IE9iamVjdCgpOwor
Ly8KKy8vICAgQ29uc3RydWN0cyBhIG5ldyBlbXB0eSBPYmplY3QgaW5zdGFuY2UgdXNpbmcgdGhl
IG9yaWdpbmFsCisvLyAgIGNvbnN0cnVjdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lz
dGVyIGRzdC4KKwogX2xsaW50X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0
U3RydWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOwor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MCAgICAgICAgICAgICAg
ICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAg
IGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEgICAg
Ly8gZW1wdHlTdHJ1Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5lbXB0eU9iamVjdFN0cnVj
dHVyZTsKKyAgICAvLyBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIGVtcHR5U3RydWN0
dXJlPHQxPiwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdyk7CiAgICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0Zp
bmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKLSAg
ICBsb2FkaSA0W1BDXSwgdDEKLSAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0
Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgIC8vIGNmcltk
c3RJZDx0MT5dLlRhZyA9IENlbGxUYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0g
YWxsb2NhdGVkT2JqZWN0PHQwPjsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wTmV3
T2JqZWN0U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0
KQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3
X29iamVjdCkgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXdfb2JqZWN0OworICAg
IGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBtb3YgZHN0UmVnSWQgc3Jj
UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY1JlZ0lkXTsKKy8vCisv
LyAgIENvcGllcyByZWdpc3RlciBzcmMgdG8gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfbW92
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0
W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFu
ZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAg
Ly8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHZhbHVlPHQyLCB0Mz4pOwor
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQwPl0uVGFnID0gc3JjVGFnPHQyPjsKKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0
MD5dLlBheWxvYWQgPSBzcmNQYXlsb2FkPHQzPjsKKyAgICAjIG1sYW1EbyAvLyBpZiAobWxhbV9Q
UklOVEYpIHByaW50ZigiICAgbWxhbSBvcF9tb3YgfCBwYXlsb2FkPHQzPiA9ICVsZFxuIiwgcjQu
dS5pKTsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogbm90IGRz
dFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3JjcmVn
SWRdOworLy8KKy8vICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0ZXIgc3JjIChjb252
ZXJ0ZWQgdG8KKy8vICAgYm9vbGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIg
ZHN0LgogCiBfbGxpbnRfb3Bfbm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4
W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQwLCB0MiwgdDMpCi0gICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKLSAgICB4
b3JpIDEsIHQzCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxv
YWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAg
ICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MD4gPT4g
dGFnPHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RT
bG93ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gIT0gQm9vbGVhblRhZykg
Z290byAuc2xvdzsKKyAgICB4b3JpIDEsIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDM+ID0gIXBheWxvYWQ8dDM+OworICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Zy
W2RzdHhzSWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9h
ZCA9IHBheWxvYWQ8dDM+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BOb3RTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkKLSAgICBkaXNwYXRjaCgz
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2FsbCBzbG93X3BhdGhfbm90OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CiAKKy8vIGJ5dGVjb2RlOiBlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5j
dGlvbjogY2ZyW2RzdHJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSA9PSBjZnJbc3JjMlJlZ0lkXSk7
CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMy
IGFyZSBlcXVhbCwKKy8vICAgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPT0nIG9wZXJhdG9yLCBh
bmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAK
IF9sbGludF9vcF9lcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgMTJbUENdLCB0
MgotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQz
LCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQotICAgIGJp
bmVxIHQyLCB0MywgLm9wRXFTbG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93Ci0g
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MgotICAg
IGNpZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNw
YXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9h
ZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
cmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc3JjMklkPHQyPiA9PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQw
Pik7CisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4pIGdvdG8gLnNsb3c7CisgICAgYmll
cSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAodGFnMTx0Mj4gPT0gQ2VsbFRhZykgZ290byAuc2xvdzsKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQp
dGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgNFtQQ10sIHQyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVy
YW5kc1tkc3RSZWdJZF07CisgICAgY2llcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDA+ID0gKHBheWxvYWQyPHQxPiA9PSBwYXls
b2FkMTx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0g
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgIC8v
IGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBwYXlsb2FkMTx0MD47CisgICAgZGlzcGF0Y2goNCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAKIC5vcEVxU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9lcSkKLSAgICBkaXNwYXRjaCg0KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2VxKSAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfZXE7CisgICAgZGlz
cGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGVxX251bGwgZHN0UmVnSWQgc3Jj
UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0cmVnSWRdID0gKGNmcltzcmNSZWdJZF0gPT0gbnVs
bCk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMgaXMgbnVsbCwgYXMgd2l0
aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0
IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9lcV9udWxsOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwg
dDMKLSAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxCi0gICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCi0gICAgam1wIC5v
cEVxTnVsbE5vdEltbWVkaWF0ZQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRd
OworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0Tm90
Q29uc3RhbnQoc3JjSWQ8dDA+KTsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MT4gPSBjZnJbc3JjSWQ8dDA+XS5UYWc7
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYXlsb2FkPHQwPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgICAvLyBpZiAo
dGFnPHQxPiAhPSBDZWxsVGFnKSBnb3RvIC5pbW1lZGlhdGU7CisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+
ID0gcGF5bG9hZDx0MD4uc3RydWN0dXJlOworICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MSAvLyBy
ZXN1bHQ8dDE+ID0gKChzdHJ1Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWcgJiBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSAhPSAwKTsKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gLm5vdEltbWVkaWF0ZTsKIC5vcEVxTnVsbElt
bWVkaWF0ZToKLSAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgotICAgIGNpZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEKLSAgICBvcmkgdDIsIHQxCisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc051bGw8dDI+ID0gKHRhZzx0MT4gPT0g
TnVsbHRhZyk7CisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiA9PSBVbmRlZmluZWRU
YWcpOworICAgIG9yaSB0MiwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IGlzTnVsbDx0Mj4gfCBpc1VuZGVmaW5lZDx0MT47CiAu
b3BFcU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAg
IGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5lcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJl
Z0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPSBjZnJb
c3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCBy
ZWdpc3RlciBzcmMyIGFyZSBub3QKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQg
JyE9JyBvcGVyYXRvciwgYW5kIHB1dHMgdGhlCisvLyAgIHJlc3VsdCBhcyBhIGJvb2xlYW4gaW4g
cmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbmVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCi0gICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93Ci0gICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wTmVxU2xvdwotICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93Ci0gICAg
bG9hZGkgNFtQQ10sIHQyCi0gICAgY2luZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFu
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRz
W3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAg
IC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxv
YWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAg
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09
PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSB0YWcyPHQz
PikgZ290byAuc2xvdzsKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiA9PSBDZWxsdGFnKSBnb3RvIC5zbG93
OworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA8IExvd2VzdFRhZykgZ290byAuc2xvdzsK
KyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBjaW5lcSB0MCwgdDEs
IHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MD4g
PSAocGF5bG9hZDE8dDA+ICE9IHBheWxvYWQyPHQxPik7CisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5U
YWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHJlc3VsdDx0
MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcE5lcVNsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
IHNsb3dfcGF0aF9uZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICAgCiAKKy8vIGJ5
dGVjb2RlOiBuZXFfbnVsbCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RS
ZWdJZF0gPSAoY2ZyW3NyY1JlZ0lkXSAhPSBudWxsKTsKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVy
IHJlZ2lzdGVyIHNyYyBpcyBub3QgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisv
LyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3Rl
ciBkc3QuCisKIF9sbGludF9vcF9uZXFfbnVsbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCi0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5l
cU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKLSAg
ICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0MQotICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisg
ICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mz4gPSBv
cGVyYW5kc1tkc3RSZWdJZF07CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnROb3RDb25zdGFudChzcmNJZDx0MD4pOwor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdGFnPHQxPiA9IGNmcltzcmNJZDx0MD5dLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MCAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDA+ID0g
Y2ZyW3NyY0lkPHQwPl0uUGF5bG9hZDsKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVs
bEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IENlbGxUYWcpIGdv
dG8gLmltbWVkaWF0ZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQwPi5zdHJ1Y3R1
cmU7CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEgLy8gcmVzdWx0PHQxPiA9ICgoc3RydWN0dXJl
PHQxPi50eXBlSW5mby5mbGFncyAmIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpID09IDApOworICAg
IGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byAubm90SW1tZWRpYXRlOwogLm9wTmVxTnVsbEltbWVkaWF0ZToKLSAgICBjaW5lcSB0
MSwgTnVsbFRhZywgdDIKLSAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQotICAgIGFuZGkg
dDIsIHQxCisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpc05vdE51bGw8dDI+ID0gKHRhZzx0MT4gIT0gTnVsbFRhZyk7CisgICAg
Y2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpc05vdFVuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiAhPSBVbmRlZmluZWRUYWcpOworICAgIGFu
ZGkgdDIsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cmVzdWx0PHQxPiA9IChpc05vdE51bGw8dDI+ICYgaXNOb3RVbmRlZmluZWQ8dDE+KTsKIC5vcE5l
cU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRp
c3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XSAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiAKIAogbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYXRoKQot
ICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0MiwgdDMsIC5zbG93Ci0gICAgYmliIHQyLCBMb3dlc3RU
YWcsIC5zbG93Ci0gICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDMKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwotICAgIGJiZXEgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93CisgICAgbG9h
ZGkgMTJbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
cmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVy
YW5kc1tzcmMxUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkg
ICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+
ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIGJpbmVx
IHQyLCB0MywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KHRhZzE8dDI+ICE9IHRhZzI8dDM+KSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+IDwg
TG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IENlbGxUYWcpIGdv
dG8gLm5vdFN0cmluZzsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTE8dDI+ID0gcGF5bG9hZDE8dDA+LnN0cnVj
dHVyZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0cnVjdHVyZTI8dDM+ID0gcGF5bG9hZDI8dDE+LnN0cnVjdHVyZTsKKyAg
ICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3Ry
aW5nVHlwZSwgLm5vdFN0cmluZyAgLy8gaWYgKHN0cnVjdHVyZTE8dDI+LnR5cGVJbmZvLnR5cGUg
IT0gU3RyaW5nVHlwZSkgZ290byAubm90U3RyaW5nOworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93ICAgICAgICAv
LyBpZiAoc3RydWN0dXJlMjx0Mz4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKSBnb3RvIC5z
bG93OwogLm5vdFN0cmluZzoKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBlcXVhbGl0eU9wZXJh
dGlvbih0MCwgdDEsIHQwKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNw
YXRjaCg0KQorICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGVxdWFs
aXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVz
dWx0PHQwPiA9IHBheWxvYWQxPHQwPiBDT01QQVJBVE9SIHBheWxvYWQyPHQxPjsKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXls
b2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDQpCisgICAgY2FsbFNsb3dQ
YXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNs
b3dQYXRoPGExPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIGVuZAogCisvLyBieXRlY29k
ZTogc3RyaWN0ZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltkc3RSZWdJZF0gPSAoY2ZyW3NyYzFSZWdkXSA9PT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8v
ICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgc3Ry
aWN0bHkKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz09PScgb3BlcmF0b3Is
IGFuZCBwdXRzIHRoZQorLy8gICByZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lzdGVyIGRzdC4K
KwogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAvLyBzdHJp
Y3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcT4pOworICAgIC8vIENPTVBB
UkFUT1IgPSAiPT0iCiAgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNp
ZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXEpCiAK
IAorLy8gYnl0ZWNvZGU6IG5zdHJpY3RlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisv
LyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPT0gY2ZyW3NyYzJS
ZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0
ZXIgc3JjMiBhcmUgbm90CisvLyAgIHN0cmljdGx5IGVxdWFsLCBhcyB3aXRoIHRoZSBFQ01BU2Ny
aXB0ICchPT0nIG9wZXJhdG9yLCBhbmQKKy8vICAgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVh
biBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uc3RyaWN0ZXE6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIC8vIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5l
cSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9uc3Ry
aWN0ZXE+KTsKKyAgICAvLyBDT01QQVJBVE9SID0gIiE9IgogICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50
X3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IHByZV9pbmMgc3JjRHN0UmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbc3JjRHN0cmVnSWRdID0gKytjZnJbc3JjRHN0cmVnSWRdOwor
Ly8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlciwgYWRkcyBvbmUsIGFu
ZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgYmFjayBpbiByZWdpc3RlciBzcmNEc3QuCisKIF9sbGlu
dF9vcF9wcmVfaW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAK
LSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93
Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAgICBiYWRkaW8gMSwg
dDEsIC5vcFByZUluY1Nsb3cKLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ0lkPHQwPiA9IG9wZXJhbmRzW3NyY0Rz
dFJlZ0lkXTsKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
cmVJbmNTbG93ICAgICAgICAvLyBpZiAoY2ZyW3JlZ0lkPHQwPl0uVGFnICE9IEludDMyVGFnKSBn
b3RvIC5zbG93OworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MT4gPSBjZnJbcmVnSWQ8dDA+XS5QYXlsb2Fk
OworICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmICgrK3Jlc3VsdDx0MT4gb3Zlcmxvd3MpIGdvdG8gLnNsb3c7CisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlzcGF0Y2go
MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQcmVJbmNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3ByZV9pbmMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNs
b3dfcGF0aF9wcmVfaW5jOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBi
eXRlY29kZTogcHJlX2RlYyBzcmNEc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltzcmNEc3RSZWdJ
ZF0gPSAtLWNmcltzcmNEc3RSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmNE
c3QgdG8gbnVtYmVyLCBzdWJ0cmFjdHMgb25lLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGJh
Y2sgaW4gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcHJlX2RlYzoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCi0gICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93Ci0gICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZWdJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdyAgICAgICAgLy8gaWYgKGNm
cltyZWdJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1
bHQ8dDE+ID0gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZDsKKyAgICBic3ViaW8gMSwgdDEsIC5vcFBy
ZURlY1Nsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1yZXN1bHQ8
dDE+IG92ZXJsb3dzKSBnb3RvIC5zbG93OworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltyZWdJZDx0MD5dLlBheWxv
YWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUHJl
RGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQotICAg
IGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfcHJlX2RlYzsKKyAgICBkaXNw
YXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IHBvc3RfaW5jIGRzdFJlZ0lk
IHNyY0RzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmNEc3RSZWdJ
ZF0rKzsKKy8vCisvLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBu
dW1iZXIgaXRzZWxmIGlzCisvLyAgIHdyaXR0ZW4gdG8gcmVnaXN0ZXIgZHN0LCBhbmQgdGhlIG51
bWJlciBwbHVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0Lgor
CiBfbGxpbnRfb3BfcG9zdF9pbmM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhb
UENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJ
bmNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBtb3Zl
IHQyLCB0MwotICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKLSAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2FkaSA0
W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
c3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJZDx0
MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9z
dEluY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+
ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9IGNm
cltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQYXls
b2FkPHQyPjsKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpZiAoKytuZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8g
LnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3RJbmNEb25lOgot
ICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQb3N0
SW5jU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2luYykKLSAg
ICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfaW5j
KSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfaW5jOworICAgIGRp
c3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogcG9zdF9kZWMgZHN0UmVn
SWQgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY0RzdFJl
Z0lkXS0tOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlci4gVGhl
IG51bWJlciBpdHNlbGYgaXMKKy8vICAgd3JpdHRlbiB0byByZWdpc3RlciBkc3QsIGFuZCB0aGUg
bnVtYmVyIG1pbnVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0ZXIgc3JjRHN0
LgogCiBfbGxpbnRfb3BfcG9zdF9kZWM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRp
IDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93Ci0gICAgYmllcSB0MCwgdDEsIC5vcFBv
c3REZWNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKLSAgICBt
b3ZlIHQyLCB0MwotICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKLSAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBsb2Fk
aSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cgICAgICAgLy8gaWYgKGNmcltzcmNJ
ZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQwLCB0MSwgLm9w
UG9zdERlY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8
dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXlsb2FkPHQyPiA9
IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0Mz4gPSBvbGRQ
YXlsb2FkPHQyPjsKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1uZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdv
dG8gLnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJUYWc7CisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OworICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmcltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBvc3REZWNEb25l
OgotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQ
b3N0RGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2RlYykK
LSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3Rf
ZGVjKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3RfZGVjOworICAg
IGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogdG9fanNudW1iZXIg
ZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gTnVtYmVyKGNm
cltkc3RSZWdJZF0pOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjIHRvIG51bWJlciwg
YW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF90
b19qc251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0g
ICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQz
KQotICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKLSAgICBiaWFlcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4g
PSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0
UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+ID09PiB0
YWc8dDI+LCBwYXlsb2FkPHQzPik7CisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1i
ZXJJc0ludCAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gPT0gSW50MzJUYWcp
IGdvdG8gLmlzSW50OworICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVy
U2xvdyAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQyPiA+PSBFbXB0eVZh
bHVlVGFnKSBnb3RvIC5zbG93OwogLm9wVG9Kc251bWJlcklzSW50OgotICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5UYWcgPSB0
YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBwYXlsb2FkPHQzPjsK
KyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFRvSnNudW1iZXJTbG93OgotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX2pzbnVtYmVyKQotICAgIGRpc3BhdGNo
KDMpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIpICAgICAg
ICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfdG9fanNudW1iZXI7CisgICAgZGlzcGF0Y2go
MykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBuZWdhdGUgZHN0UmVnSWQgc3JjUmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gLWNmcltzcmNSZWdJZF07CisvLworLy8g
ICBDb252ZXJ0cyByZWdpc3RlciBzcmMgdG8gbnVtYmVyLCBuZWdhdGVzIGl0LCBhbmQgcHV0cyB0
aGUKKy8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX25lZ2F0ZToKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10s
IHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50Ci0gICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwotICAgIG5lZ2kgdDIKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQot
ICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRd
OworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRzdElkPHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQwPiA9PT4gdGFnPHQxPiwgcGF5bG9hZDx0Mj4p
OworICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50ICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IEludDMyVGFnKSBnb3RvIC5zcmNOb3RJbnQ7Cisg
ICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdyAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKChwYXlsb2FkPHQyPiAmIDB4N2ZmZmZmZmYpID09IDApIGdvdG8gLnNsb3c7
IC8vIGlmIChpcyAwIG9yIElOVF9NSU4pIC4uLgorICAgIG5lZ2kgdDIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDI+ID0gLXBh
eWxvYWQ8dDI+OworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEludDMyVGFnOworICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwYXlsb2FkPHQyPjsKKyAgICBkaXNwYXRj
aCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAub3BOZWdhdGVTcmNOb3RJbnQ6Ci0gICAgYmlhIHQxLCBMb3dl
c3RUYWcsIC5vcE5lZ2F0ZVNsb3cKLSAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BO
ZWdhdGVTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFn
PHQxPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBXZSBoYXZlIGFuIHVuYm94ZWQg
ZG91YmxlLCBqdXN0IGludmVydCBpdHMgc2lnbiBiaXQ6CisgICAgeG9yaSAweDgwMDAwMDAwLCB0
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGlnaFdvcmQ8dGFn
PHQxPj4uc2lnbkJpdCA9ICFoaWdoV29yZDx0YWc8dDE+Pi5zaWduQml0OworICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mz5dLlRhZyA9IHRhZzx0MT47CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5
bG9hZCA9IHBheWxvYWQ8dDI+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9w
TmVnYXRlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCi0g
ICAgZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUp
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZWdhdGU7CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50
ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQotICAgIGxv
YWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQy
LCB0MCkKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKLSAgICBiaW5lcSB0Mywg
SW50MzJUYWcsIC5vcDJOb3RJbnQKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBpbnRlZ2VyT3Bl
cmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQotICAgIGRpc3BhdGNoKDUpCisg
ICAgLy8gbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUs
IGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3Bl
cmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJl
Z0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0Mj4gPT0+IHRh
ZzI8dDM+LCBwYXlsb2FkMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOworICAgIG1sYW1EbyAv
LyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDFcbiIpOworICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLm9wMU5vdEludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQy
PiAhPSBJbnQzMlRhZykgZ290byAub3AxTm90SW50OworICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
Lm9wMk5vdEludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAh
PSBJbnQzMlRhZykgZ290byAub3AyTm90SW50OworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFt
IEJJTiBPUCBzdGVwIDIgfCB0MSAlbGQsIHQwICVsZFxuIiwgcjEudS5pLCByMC51LmkpOworICAg
IC8vIG9wMSBhbmQgb3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBl
bmQuCisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpICAgICAgICAgICAgIC8v
IGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBwYXlsb2Fk
MTx0MD4sIC5zbG93LCB0Mik7CisgICAgIyBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmlu
dGYoIiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4iLCByMC51LmkpOworICAg
IG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0gJWxkXG4i
LCByMC51LmkpOworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wMU5vdEludDoK
LSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25k
IG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCi0gICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93
Ci0gICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKLSAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5zbG93Ci0gICAgY2kyZCB0MSwgZnQxCi0gICAgam1wIC5vcDFOb3RJbnRS
ZWFkeQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDNcbiIpOworICAg
IC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9w
ZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQy
PiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91
YmxlLCBvcDIgaXMgPz8/OiBjaGVjayBvcDIuCisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFO
b3RJbnRPcDJEb3VibGUgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcy
PHQzPiA8IExvd2VzdFRhZykgZ290byAub3AxTm90SW50T3AyRG91YmxlOworICAgIGJpbmVxIHQz
LCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
ICghdGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gb3AxIGlzIGludC1l
bmNvZGVkLWRvdWJsZSwgb3AyIGlzIGludDMyOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAg
Y2kyZCB0MSwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+KTsKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IC5vcDFOb3RJbnRSZWFkeTsKIC5vcDFOb3RJbnRPcDJEb3VibGU6Ci0gICAgZmlpMmQgdDEsIHQz
LCBmdDEKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA0XG4iKTsKKyAg
ICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50LWVuY29kZWQtZG91Ymxl
OiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCisgICAgZmlpMmQgdDEsIHQzLCBmdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUo
cGF5bG9hZDI8dDE+LCB0YWcyPHQzPik7CiAub3AxTm90SW50UmVhZHk6Ci0gICAgbG9hZGkgNFtQ
Q10sIHQxCi0gICAgZmlpMmQgdDAsIHQyLCBmdDAKLSAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBm
dDApCi0gICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goNSkKKyAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCA1XG4iKTsKKyAgICAvLyBvcDEgaXMg
aW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgZG91YmxlOgorICAgIGxvYWRpIDRbUENdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERvdWJsZShwYXls
b2FkMTx0MD4sIHRhZzE8dDI+KTsKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9w
ZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOworICAgICMgbWxhbSBtbGFtRG8gLy8g
aWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiBtbGFtIEJJTiBPUCBkb3VibGUgfCByZXN1bHQ8ZnQw
PiA9ICVlXG4iLCBkMC51LmQpOworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBk
b3VibGUgfCByZXN1bHQ8ZnQwPiA9ICVlXG4iLCBkMC51LmQpOworICAgIHN0b3JlZCBmdDAsIFtj
ZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OworICAgIGRpc3BhdGNoKDUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogLm9wMk5vdEludDoKLSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBh
biBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KLSAgICBsb2FkaSA0
W1BDXSwgdDIKLSAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKLSAgICBjaTJkIHQwLCBmdDAK
LSAgICBmaWkyZCB0MSwgdDMsIGZ0MQotICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAg
ICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAv
LyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDZcbiIpOworICAgIC8vIEZpcnN0IG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dC4KKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmlhIHQz
LCBMb3dlc3RUYWcsIC5zbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBv
cDEgaXMgaW50MzIsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6CisgICAgY2kyZCB0MCwgZnQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJs
PGZ0MD4gPSBEb3VibGUocGF5bG9hZDE8dDA+KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICBmaWkyZCB0MSwgdDMsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKKyAg
ICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3Ax
RGJsPGZ0MD4pOworICAgICMgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgbWxh
bSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAudS5kKTsKKyAgICBtbGFt
RG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwg
ZDAudS5kKTsKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDE+XS5Eb3VibGUgPSByZXN1bHREYmw8ZnQw
PjsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNhbGxTbG93
UGF0aChzbG93UGF0aCkKLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYoIiBt
bGFtIEJJTiBPUCBzdGVwIDdcbiIpOworICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvdyBwYXRoOworICAgIGRp
c3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKyAgICAvLyB9IEVORCBtYWNybyBiaW5hcnlPcEN1c3Rv
bVN0b3JlLiAKIGVuZAogCiBtYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVP
cGVyYXRpb24sIHNsb3dQYXRoKQorICAgIC8vIG1hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRp
b24sIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKICAgICBiaW5hcnlPcEN1c3RvbVN0b3Jl
KAogICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKLSAg
ICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCi0gICAgICAgICAg
ICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAg
c3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICAv
LyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgeworICAgICAgICAg
ICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykgICAgICAgICAgICAgICAgIC8v
ICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdyk7CisgICAgICAgICAgICBzdG9y
ZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAgICAgLy8gICBjZnJb
aW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgICAgIC8vICAgY2ZyW2luZGV4XS5QYXlsb2FkID0g
cmlnaHQ7CisgICAgICAgICAgICAjIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHByaW50Zigi
ICAgICAgICBtbGFtIEFTTSBBREQgfCBjZnIgJXBbaW5kZXggJWxkXSA9IHJlc3VsdCAlbGQgfCBj
ZnJbMV08JXA+ID0gJXBcbiIsIGNhbGxGcmFtZSwgcjIudS5pLCByMC51LmksIENBU1Q8dm9pZCAq
PihmcC51Lmk4cCArICgxIDw8IDMpICsgMCksICpDQVNUPHZvaWQgKio+KGZwLnUuaThwICsgKDEg
PDwgMykgKyAwKSk7IG1sYW1QcmludCA9IGZhbHNlOyB9CisgICAgICAgICAgICBtbGFtRG8gLy8g
eyBwcmludGYoIiAgICAgICAgbWxhbSBBU00gQUREIHwgY2ZyICVwW2luZGV4ICVsZF0gPSByZXN1
bHQgJWxkIHwgY2ZyWzFdPCVwPiA9ICVwXG4iLCBjYWxsRnJhbWUsIHIyLnUuaSwgcjAudS5pLCBD
QVNUPHZvaWQgKj4oZnAudS5pOHAgKyAoMSA8PCAzKSArIDApLCAqQ0FTVDx2b2lkICoqPihmcC51
Lmk4cCArICgxIDw8IDMpICsgMCkpOyBtbGFtUHJpbnQgPSBmYWxzZTsgfQorICAgICAgICAgICAg
Ly8gfSBFTkQgbWFjcm8uCiAgICAgICAgIGVuZCwKLSAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBz
bG93UGF0aCkKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkgLy8gICBiaW5hcnlP
cEN1c3RvbVN0b3JlKCk7CisgICAgLy8gfSBFTkQgbWFjcm8gYmluYXJ5T3AuCiBlbmQKIAorLy8g
Ynl0ZWNvZGU6IGFkZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjog
Y2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMyUmVnSWRdICsgY2ZyW3NyYzFSZWdJZF07CisvLworLy8g
ICBBZGRzIHJlZ2lzdGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNyYzIsIGFuZCBwdXRzIHRoZSByZXN1
bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LiAoSlMgYWRkIG1heSBiZSBzdHJpbmcgY29uY2F0ZW5h
dGlvbiBvcgorLy8gICBudW1lcmljIGFkZCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlcyBvZiB0aGUg
b3BlcmFuZHMuKQorCiBfbGxpbnRfb3BfYWRkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBt
bGFtRG8gLy8gbWxhbVByaW50ID0gdHJ1ZTsKICAgICBiaW5hcnlPcCgKLSAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxp
bnRfc2xvd19wYXRoX2FkZCkKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICAgKioqIG1sYW0gQEBAIGJhZGRpbyBsZWZ0LCBy
aWdodCwgc2xvdyBAICVzOiVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAg
ICAgIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGlmICgocmlnaHQgKz0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgIGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgbWxhbURvIC8vIHBy
aW50ZigiICAgKioqIG1sYW0gQEBAIGFkZGQgbGVmdCwgcmlnaHQgQCAlczolZFxuIiwgX19GVU5D
VElPTl9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICBhZGRkIGxlZnQsIHJpZ2h0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByaWdodCA9IGxlZnQgKyByaWdodDsKKyAg
ICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2FkZCkgLy8gYmluYXJ5T3AoImJh
ZGRpbyBsZWZ0LCByaWdodCwgc2xvdyIsICJhZGRkIGxlZnQsIHJpZ2h0IiwgX2xsaW50X3Nsb3df
cGF0aF9hZGQpIHsKKyAgICAvLyB9IC8vIEVORCBiaW5hcnlPcCgpCisKIAorLy8gYnl0ZWNvZGU6
IG11bCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJl
Z0lkXSA9IGNmcltzcmMxUmVnSWRdICogY2ZyW3NyYzJSZWdJZF0KKy8vCisvLyAgIE11bHRpcGxp
ZXMgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvCisvLyAgIG51
bWJlcnMpLCBhbmQgcHV0cyB0aGUgcHJvZHVjdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9v
cF9tdWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAg
ICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAg
ICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJl
dXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KLSAgICAg
ICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3Jh
dGNoLCBzbG93Ci0gICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQotICAgICAgICAgICAg
YmlsdCBsZWZ0LCAwLCBzbG93Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAg
ICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgewor
ICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2lu
Y2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY3JhdGNoID0gcmlnaHQ7CisgICAgICAgICAg
ICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
KHNjcmF0Y2ggKj0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgICAgICBidGlu
eiBzY3JhdGNoLCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc2NyYXRj
aCAhPSAwKSBnb3RvIC5kb25lOworICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCBzbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGxlZnQgPCAwKSBnb3RvIC5zbG93OworICAg
ICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWYgKHJpZ2h0IDwgMCkgZ290byAuc2xvdzsKICAgICAgICAgLmRvbmU6Ci0gICAgICAgICAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAg
c3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgIC8vIGNmcltp
bmRleF0uVGFnID0gSW50MzJUYWc7CisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XSAgICAvLyBjZnJbaW5kZXhdLlBheWxvYWQgPSBzY3JhdGNo
OworICAgICAgICAgICAgLy8gfSBFTkQgbWFjcm8uCiAgICAgICAgIGVuZCwKLSAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9tdWwpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkKKyAgICAgICAgICAgIG11
bGQgbGVmdCwgcmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0ID0g
bGVmdCAqIHJpZ2h0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfbXVs
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW5hcnlPcEN1c3RvbVN0b3JlKC4u
LiwgX2xsaW50X3Nsb3dfcGF0aF9tdWwpOworCiAKKy8vIGJ5dGVjb2RlOiBzdWIgZHN0UmVnSWQg
c3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3Jj
MVJlZ0lkXSAtIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgU3VidHJhY3RzIHJlZ2lzdGVyIHNy
YzIgKGNvbnZlcnRlZCB0byBudW1iZXIpIGZyb20gcmVnaXN0ZXIKKy8vICAgc3JjMSAoY29udmVy
dGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZSBkaWZmZXJlbmNlIGluCisvLyAgIHJlZ2lzdGVy
IGRzdC4KIAogX2xsaW50X29wX3N1YjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYmluYXJ5
T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0
LCBzbG93IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0
IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKChyaWdodCAtPSBsZWZ0KSBvdmVyZmxvd3MpIGdv
dG8gc2xvdzsKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAg
ICAgICAgICBzdWJkIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIHJpZ2h0ID0gcmlnaHQgLSBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9z
bG93X3BhdGhfc3ViKSAvLyBiaW5hcnlPcCguLi4sIF9sbGludF9zbG93X3BhdGhfc3ViKSB7Cisg
ICAgLy8gfSAvLyBFTkQgYmluYXJ5T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBkaXYgZHN0UmVnSWQg
ZGl2aWRlbmRSZWdJZCBkaXZpc29yUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0g
Y2ZyW2RpdmlkZW5kUmVnSWRdIC8gY2ZyW2Rpdmlzb3JSZWdJZF07CisvLworLy8gICBEaXZpZGVz
IHJlZ2lzdGVyIGRpdmlkZW5kIChjb252ZXJ0ZWQgdG8gbnVtYmVyKSBieSB0aGUKKy8vICAgcmVn
aXN0ZXIgZGl2aXNvciAoY29udmVydGVkIHRvIG51bWJlciksIGFuZCBwdXRzIHRoZQorLy8gICBx
dW90aWVudCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9kaXY6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAK
LSAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQotICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQot
ICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAotICAgICAgICAgICAgc3RvcmVp
IGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0b3JlaSBy
aWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQotICAgICAgICAgICAgam1wIC5kb25l
CisgICAgICAgICAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkgeworICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbGVmdERibDxmdDA+ID0gRG91YmxlKGxlZnQpOworICAgICAgICAgICAgY2ky
ZCByaWdodCwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHREYmw8
ZnQxPiA9IERvdWJsZShyaWdodCk7CisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHREYmw8ZnQxPiA9IHJpZ2h0RGJsPGZ0
MD4gLyBsZWZ0RGJsPGZ0MT47CisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50
ICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8cmlnaHQ+ID0gSW50KHJlc3VsdERibDxm
dDE+KSBpZiAoKGRvdWJsZSkoaW50KXJlc3VsdERibCA9IHJlc3VsdERibCkgZWxzZSBnb3RvIC5u
b3RJbnQ7CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4
LCA4XSAgICAgICAvLyBjZnJbaW5kZXhdLlRhZyA9IGludDMyVGFnOworICAgICAgICAgICAgc3Rv
cmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgLy8gY2ZyW2luZGV4
XS5QYXlsb2FkID0gcmlnaHQ7CisgICAgICAgICAgICBqbXAgLmRvbmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIC5kb25lOwogICAgICAgICAubm90SW50Ogot
ICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9y
ZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0gICAgICAgICAgICAgICAgICAgICAvLyBjZnJbaW5kZXhd
LkRvdWJsZSA9IHJlc3VsdERibDxmdDE+OwogICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIC8v
IEVORCBtYWNyby4KICAgICAgICAgZW5kLAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRp
dmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgZGl2ZCBsZWZ0LCByaWdodCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgPSByaWdodCAvIGxlZnQ7CisgICAg
ICAgIGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9kaXYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGJpbmFyeU9wQ3VzdG9tU3RvcmUoLi4uLCBfbGxpbnRfc2xvd19wYXRo
X2Rpdik7CiAKIAogbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKLSAg
ICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCi0gICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwotICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLnNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBvcGVyYXRpb24odDEsIHQw
LCAuc2xvdykKLSAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisg
ICAgLy8gbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkgeworICAgIGxv
YWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9
IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgIC8vIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkgICAgICAvLyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQor
ICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRh
ZzI8dDM+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
LnNsb3cgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFnKSBnb3Rv
IC5zbG93OworICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIG9wZXJhdGlvbih0MSwgdDAs
IC5zbG93KSAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlvbihwYXls
b2FkMjx0MT4sIHBheWxvYWQxPHQwPiwgLnNsb3cpOworICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gdGFnMjx0Mz47
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaChhZHZhbmNlKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKGFkdmFuY2UpCisgICAg
Y2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dQ
YXRoOworICAgIGRpc3BhdGNoKGFkdmFuY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOworICAgIC8vIEVORCBtYWNybyBtYWNybyBiaXRPcC4KIGVuZAog
CisKKy8vIGJ5dGVjb2RlOiBsc2hpZnQgZHN0UmVnSWQgdmFsUmVnSWQgc2hpZnRSZWdJZAorLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBJbnQzMihjZnJbdmFsUmVnSWRdKSA8PCBjZnJbc2hp
ZnRSZWdJZF0pOworLy8KKy8vICAgUGVyZm9ybXMgbGVmdCBzaGlmdCBvZiByZWdpc3RlciB2YWwg
KGNvbnZlcnRlZCB0byBpbnQzMikgYnkKKy8vICAgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0
byB1aW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KKwog
X2xsaW50X29wX2xzaGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGxzaGlmdGkgbGVm
dCwgcmlnaHQgICAgICAgICAvLyByaWdodCA9IChyaWdodCA8PCBsZWZ0KTsKKyAgICAgICAgZW5k
LAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAg
NCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwgNCkgeworICAgIC8vIH0g
Ly8gRU5EIGJpdE9wKCkKIAogCisvLyBieXRlY29kZTogcnNoaWZ0IGRzdFJlZ0lkIHZhbFJlZ0lk
IHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbFJlZ0lkXSA+
PiBjZnJbc2hpZnRSZWdJZF07CisvLworLy8gICBQZXJmb3JtcyBhcml0aG1ldGljIHJpZ2h0IHNo
aWZ0IG9mIHJlZ2lzdGVyIHZhbCAoY29udmVydGVkCisvLyAgIHRvIGludDMyKSBieSByZWdpc3Rl
ciBzaGlmdCAoY29udmVydGVkIHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1bHQg
aW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgcnNoaWZ0aSBsZWZ0LCByaWdodCAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0ID4+
IGxlZnQpOworICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0LAot
ICAgICAgICA0KQorICAgICAgICA0KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhfcnNo
aWZ0LCA0KSB7CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQogCisvLyBieXRlY29kZTogcnNoaWZ0
IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOgorLy8KKy8vICAgUGVy
Zm9ybXMgbG9naWNhbCByaWdodCBzaGlmdCBvZiByZWdpc3RlciB2YWwgKGNvbnZlcnRlZAorLy8g
ICB0byB1aW50MzIpIGJ5IHJlZ2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8KKy8vICAgdWludDMy
KSwgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF91cnNo
aWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCBzbG93KQotICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKLSAgICAg
ICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJp
Z2h0ICAgICAgICAvLyByaWdodCA9ICgodW5zaWduZWQpcmlnaHQgPj4gbGVmdCk7CisgICAgICAg
ICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93ICAgICAgICAgLy8gaWYgKHJpZ2h0IDwgMCkgZ290byBz
bG93OwogICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKLSAg
ICAgICAgNCkKKyAgICAgICAgNCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3Vyc2hp
ZnQsIDQpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6IGJpdGFu
ZCBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lk
XSA9IGNmcltzcmMxUmVnSWRdICYgY2ZyW3NyYzJSZWdJZF07CisvLworLy8gICBDb21wdXRlcyBi
aXR3aXNlIEFORCBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisvLyAgIGFu
ZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0
CisvLyAgIGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
YW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykK
KyAgICAgICAgICAgIGFuZGkgbGVmdCwgcmlnaHQgICAgICAgICAgICAvLyByaWdodCA9IChyaWdo
dCAmIGxlZnQpOworICAgICAgICBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5k
LAotICAgICAgICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3BhdGhf
Yml0YW5kLCA1KSB7CisgICAgLy8gfSAvLyBFTkQgYml0T3AoKQogCiAKKy8vIGJ5dGVjb2RlOiBi
aXR4b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RS
ZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSBeIGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0
ZXMgYml0d2lzZSBYT1Igb2YgcmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8g
ICBhbmQgcmVnaXN0ZXIgc3JjMiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJl
c3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpCisgICAgICAgICAgICB4b3JpIGxlZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmlnaHQgPSAo
cmlnaHQgXiBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2Jp
dHhvciwKLSAgICAgICAgNSkKKyAgICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19w
YXRoX2JpdHhvciwgNSkgeworICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKKwogCisvLyBieXRlY29k
ZTogYml0b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJRAorLy8gZnVuY3Rpb246IGNmcltk
c3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSB8IGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29t
cHV0ZXMgYml0d2lzZSBPUiBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpCisv
LyAgIGFuZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUK
Ky8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2JpdG9yOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpCisgICAgICAgICAgICBvcmkgbGVmdCwgcmlnaHQgICAgICAgICAgICAgLy8gcmlnaHQgPSAo
cmlnaHQgfCBsZWZ0KTsKKyAgICAgICAgZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2Jp
dG9yLAotICAgICAgICA1KQorICAgICAgICA1KSAvLyBiaXRPcCguLi4sIF9sbGludF9zbG93X3Bh
dGhfYml0b3IsIDUpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6
IGNoZWNrX2hhc19pbnN0YW5jZSBjb25zdHJ1Y3RvclJlZ0lkCisvLyBmdW5jdGlvbjogYXNzZXJ0
KHR5cGVvZiBjZnJbY29uc3RydWN0b3JSZWdJZF0uSGFzSW5zdGFuY2UgPT0gImZ1bmN0aW9uIik7
CisvLworLy8gICBDaGVjayAnY29uc3RydWN0b3InIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBpbnRl
cm5hbCBwcm9wZXJ0eQorLy8gICBbSGFzSW5zdGFuY2VdIChpLmUuIGlzIGEgZnVuY3Rpb24gLi4u
ICpzaGFrZXMgaGVhZCBzYWRseSBhdAorLy8gICBKU0MgQVBJKikuIFJhaXNlcyBhbiBleGNlcHRp
b24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90CisvLyAgIGEgdmFsaWQgcGFyYW1ldGVy
IGZvciBpbnN0YW5jZW9mLgogCiBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Ci0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaSA0
W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjb25zdHJ1Y3RvcklkPHQxPiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9yUmVnSWRd
OworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cpIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNv
bnN0cnVjdG9ySWQ8dDE+LCBDZWxsVGFnLCBvYmo8dDA+LCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dyk7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0
dXJlOworICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93ICAvLyBp
ZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2Up
IGdvdG8gLnNsb3c7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
CiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2U7CisgICAgZGlzcGF0Y2go
MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBpbnN0YW5jZW9m
IGRzdFJlZ0lkIHZhbHVlUmVnSWQgY29uc3RydWN0b3JSZWdJZCBjb25zdHJ1Y3RvclByb3RvUmVn
SWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3ZhbHVlUmVnSWRdIGluc3RhbmNl
b2YgY2ZyW2NvbnN0cnVjdG9yUmVnaWRdOworLy8KKy8vICAgVGVzdHMgd2hldGhlciByZWdpc3Rl
ciB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiByZWdpc3RlcgorLy8gICBjb25zdHJ1Y3RvciwgYW5k
IHB1dHMgdGhlIGJvb2xlYW4gcmVzdWx0IGluIHJlZ2lzdGVyCisvLyAgIGRzdC4gUmVnaXN0ZXIg
Y29uc3RydWN0b3JQcm90byBtdXN0IGNvbnRhaW4gdGhlICJwcm90b3R5cGUiCisvLyAgIHByb3Bl
cnR5IChub3QgdGhlIGFjdHVhbCBwcm90b3R5cGUpIG9mIHRoZSBvYmplY3QgaW4KKy8vICAgcmVn
aXN0ZXIgY29uc3RydWN0b3IuIFRoaXMgbG9va3VwIGlzIHNlcGFyYXRlZCBzbyB0aGF0CisvLyAg
IHBvbHltb3JwaGljIGlubGluZSBjYWNoaW5nIGNhbiBhcHBseS4KKy8vCisvLyAgIFJhaXNlcyBh
biBleGNlcHRpb24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90IGFuCisvLyAgIG9iamVj
dC4KIAogX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMg
Q2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVo
YXZpb3IuCisgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQg
SGFzSW5zdGFuY2UgYmVoYXZpb3IuCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVj
YXRlZC4KLSAgICBsb2FkaSAxMltQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRVbmNoZWNrZWQodDEsIHQwKQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdwotICAg
IAotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAgbG9hZGkgMTZbUENdLCB0MAotICAg
IGxvYWRpIDRbUENdLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRpIDhbUENd
LCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Miwg
Lm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgCi0gICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90
b3R5cGUsIHQyID0gdmFsdWUKLSAgICBtb3ZlIDEsIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY29uc3RydWN0b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lk
XTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFVuY2hlY2tlZChjb25zdHJ1Y3RvcklkPHQxPiwgb2JqPHQwPik7CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0
dXJlOworICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdyAvLyBp
ZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSBnb3RvIC5zbG93OworCisgICAgLy8gQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAg
bG9hZGkgMTZbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JQcm90b0lkPHQwPiA9IG9w
ZXJhbmRzW2NvbnN0cnVjdG9yUHJvdG9SZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpICAg
ICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGNvbnN0cnVj
dG9yUHJvdG9JZDx0MD4sIENlbGxUYWcsIHByb3RvT2JqPHQxPiwgLnNsb3cpOworICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0Mj4gPSBwcm90b09iajx0MT4uc3Ry
dWN0dXJlOworICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cgICAgIC8vIGlmICgodW5zaWduZWQp
c3RydWN0dXJlPHQyPi50eXBlSW5mby50eXBlIDwgT2JqZWN0VHlwZSkgZ290byAuc2xvdzsKKyAg
ICBsb2FkaSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZUlkPHQwPiA9IG9wZXJhbmRzW3Zh
bHVlUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHZhbHVlSWQ8dDA+LCBDZWxsVGFnLCBvYmo8dDI+LCAuc2xvdyk7
CisKKyAgICAvLyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAg
ICBtb3ZlIDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm90b1dhc0ZvdW5kPHQwPiA9IHRydWU7
CiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDIKLSAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0s
IHQyCi0gICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRpbnogdDIsIC5v
cEluc3RhbmNlb2ZMb29wCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzdHJ1
Y3R1cmU8dDI+ID0gb2JqPHQyPi5zdHJ1Y3R1cmU7CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBvYmo8dDI+ID0gc3RydWN0dXJlPHQyPi5wcm90b3R5cGUuUGF5bG9hZDsKKyAg
ICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChvYmo8dDI+ID09IHByb3RvT2Jq
KSBnb3RvIC5kb25lOworICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChvYmo8
dDI+ICE9IG51bGwpIGdvdG8gLmxvb3A7CiAKLSAgICBtb3ZlIDAsIHQwCisgICAgbW92ZSAwLCB0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSBmYWxzZTsKIC5vcEluc3Rh
bmNlb2ZEb25lOgotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
LSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCg1
KQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9
IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQzPl0uUGF5bG9hZCA9IHByb3RvV2FzRm91bmQ7CisgICAgZGlzcGF0Y2goNSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDUp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfaW5zdGFu
Y2VvZjsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CisKIAorLy8gYnl0ZWNvZGU6IGlzX3VuZGVmaW5lZCBkc3RSZWdJZCBzcmNSZWdJZAorLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltzcmNSZWdJZF0gPT0gInVuZGVm
aW5lZCIpOworLy8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Ig
c3JjIGFjY29yZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAidW5kZWZpbmVk
IiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9v
cF9pc191bmRlZmluZWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0
MQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQy
LCB0MykKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsCi0gICAgY2llcSB0MiwgVW5kZWZp
bmVkVGFnLCB0MwotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAg
IGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRb
UENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQwPiA9IG9w
ZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMp
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFn
PHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0gICAgICAgIC8vIGNmcltkc3RJZDx0MD5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsICAgICAgICAgICAgLy8gaWYgKHRh
Zzx0Mj4gPT0gQ2VsbFRhZykgZ290byAuY2VsbDsKKyAgICBjaWVxIHQyLCBVbmRlZmluZWRUYWcs
IHQzICAgICAgICAgICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0Mz4gPSAodGFnPHQyPiA9
PSBVbmRlZmluZWRUYWcpOworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MD5dID0gaXNVbmRlZmluZWQ8dDM+OworICAgIGRp
c3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEKLSAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKLSAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4g
PSBwYXlsb2FkPHQzPi5zdHJ1Y3R1cmU7CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxICAvLyBp
c1VuZGVmaW5lZDx0MT4gPSAoKHN0cnVjdHVyZTx0MT4udHlwZUluZm8uZmxhZ3MgJiBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSAhPSAwKTsKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQxPjsK
KyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IGlzX2Jvb2xlYW4gZHN0UmVnSWQg
c3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVn
SWRdID09ICJib29sZWFuIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUg
c3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlz
ICJib29sZWFuIiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisK
IF9sbGludF9vcF9pc19ib29sZWFuOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4
W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
VGFnKHQxLCB0MCkKLSAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MAotICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1Jl
Z0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVRhZyh0MSwgdDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVRhZyhzcmNJZDx0MT4gPT0+IHRhZzx0MD4pOworICAgIGNpZXEgdDAsIEJvb2xlYW5UYWcsIHQw
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzQm9vbGVhbjx0MD4gPSAodGFnPHQwPiA9PSBC
b29sZWFuVGFnKTsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
ICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5d
LlBheWxvYWQgPSBpc0Jvb2xlYW48dDA+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRl
Y29kZTogaXNfbnVtYmVyIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJl
Z0lkXSA9ICh0eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAibnVtYmVyIik7CisvLworLy8gICBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAg
IHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlzICJudW1iZXIiLCBhbmQgcHV0cyB0aGUgcmVzdWx0Cisv
LyAgIGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2lzX251bWJlcjoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGFkZGkgMSwgdDAKLSAgICBjaWIgdDAsIExvd2Vz
dFRhZyArIDEsIHQxCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0g
ICAgZGlzcGF0Y2goMykKLQorICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHNyY0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2Fk
aSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4g
PSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwg
dDApICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNSZWdJZDx0
MT4gPT0+IHRhZzx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0gICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgYWRk
aSAxLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQwPiAr
PSAxOworICAgIGNpYiB0MCwgTG93ZXN0VGFnICsgMSwgdDEgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlzTnVtYmVyPHQxPiA9ICgodW5zaWduZWQpdGFnPHQwPiA8IExvd2VzdFRhZyArIDEpOwor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc051bWJlcjx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CisKKy8vIGJ5dGVjb2RlOiBpc19zdHJpbmcgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9u
OiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJzdHJpbmciKTsKKy8v
CisvLyAgIERldGVybWluZXMgd2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBhY2NvcmRp
bmcgdG8KKy8vICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInN0cmluZyIsIGFuZCBwdXRzIHRo
ZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfc3RyaW5nOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BD
XSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCi0gICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgIGJpbmVxIHQwLCBDZWxsVGFn
LCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBd
LCBTdHJpbmdUeXBlLCB0MQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5k
c1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RS
ZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQx
PiA9PT4gdGFnPHQwPiwgcGF5bG9hZDx0Mz4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNTdHJp
bmdOb3RDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDA+ICE9
IENlbGxUYWcpIGdvdG8gLm5vdENlbGw7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDA+
ID0gcGF5bG9hZDx0Mz4uc3RydWN0dXJlOworICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxICAgLy8gaXNTdHJpbmc8dDE+
ID0gKHN0cnVjdHVyZTx0MD4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc1N0cmluZzx0MT47CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BJc1N0cmluZ05vdENlbGw6Ci0gICAg
c3RvcmVwIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAg
IHN0b3JlcCAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IGZhbHNlOworICAgIGRpc3Bh
dGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdl
LCB0YWcsIHBheWxvYWQpCisgICAgLy8gbWFjcm86IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBh
eWxvYWQpIHsKICAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZzZXQsIElu
bGluZVN0b3JhZ2VDYXBhY2l0eSwgb2sgZW5kKQogICAgIG5lZ2kgcHJvcGVydHlPZmZzZXQKLSAg
ICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBv
YmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtv
YmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHN0b3JhZ2U8b2JqZWN0QW5kU3RvcmFnZT4gPSBvYmplY3Q8b2JqZWN0QW5kU3Rv
cmFnZT4ub3V0T2ZMaW5lU3RvcmFnZTsKICAgICBsb2FkaSBUYWdPZmZzZXQgKyAoSW5saW5lU3Rv
cmFnZUNhcGFjaXR5IC0gMikgKiA4W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4
XSwgdGFnCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIChJbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
LSAyKSAqIDhbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCisg
ICAgLy8gfSBFTkQgbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90Rmlu
YWwKIGVuZAogCiBtYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zm
c2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCkBAIC05NDAsMzIgKzEyOTQsNDYg
QEAgbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZQogZW5kCiAKIG1hY3Jv
IHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKLSAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dz
OgotICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCi0gICAgIyA4W1BDXSAg
IFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCi0gICAgIyAxMltQ
Q10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVy
YXRvci4KLSAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVk
IHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQotICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cK
LSAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtu
b3duTm90RmluYWwodDEsIHQwLCB0MiwgdDMpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCi0gICAgdmFs
dWVQcm9maWxlKHQyLCB0MywgdDApCi1lbmQKKyAgICAvLyBtYWNybyByZXNvbHZlR2xvYmFsKHNp
emUsIHNsb3cpIHsKKyAgICAvLyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAvLyA0W1BD
XSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAvLyA4W1BDXSAgIFByb3BlcnR5IGlk
ZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgLy8gMTJbUENdICBTdHJ1Y3R1
cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAg
Ly8gMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBi
eXRlY29kZSBnZW5lcmF0b3IuCisgICAgLy8gLi4uCisgICAgLy8gb3JhY2xlQ2FjaGVJZFtQQ10g
IE9mZnNldCBpbnRvIHRoZSBWYWx1ZVByb2ZpbGU6OmJ1Y2tldHMgdGhhdCB3aWxsIHN0b3JlIHRo
ZSBvcmFjbGUgdmFsdWUgZm9yIHRoaXMgYnl0ZWNvZGUuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQw
PiA9IGNmci5Db2RlQmxvY2s7CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRm
KCIgICAgICBtbGFtIGNvZGVibG9jayAlcFxuIiwgcjAudS52cCk7CisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFs
T2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVj
dHVyZTx0MT4gPSBnbG9iYWxPYmplY3Q8dDA+LnN0cnVjdHVyZTsKKyAgICBicG5lcSB0MSwgMTJb
UENdLCBzbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3Ry
dWN0dXJlPHQxPiAhPSBzdHJ1Y3R1cmVBcmc8cGNbMTJdPikgZ290byAuc2xvdzsKKyAgICBsb2Fk
aSAxNltQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBvZmZzZXQ8dDE+ID0gb2Zmc2V0QXJnW3BjWzE2XV0pOworICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKSAgIC8vIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKG9mZnNldDx0MT4sIGdsb2JhbE9iamVjdDx0
MD4gPT0+IHRhZzx0Mj4sIHBheWxvYWQ8dDM+KTsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBwY1s0
XTsKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
cltkc3RJZDx0MD5dLlBheWxvYWQgPSBwYXlsb2FkPHQzPjsKKyAgICBtbGFtRG8gLy8gaWYgKG1s
YW1fUFJJTlRGKSBwcmludGYoIiAgIG1sYW0gcmVzb2x2ZWdsb2JhbCB8IHBheWxvYWQ8dDM+ID0g
JWxkXG4iLCByNC51LmkpOworICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yYWNsZUlkPHQwPiA9IHBjW29yYWNsZUNhY2hl
SWRdOworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHZhbHVlUHJvZmlsZSh0YWc8dDI+LCBwYXlsb2FkPHQzPiwgb3JhY2xl
SWQ8dDA+KTsKKyAgICAvLyB9IEVORCBtYWNybyByZXNvbHZlR2xvYmFsLgorZW5kCisKKy8vIGJ5
dGVjb2RlOiBkc3RSZWdJZCBnbG9iYWxPYmplY3QoYykgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShz
SUQpIG9mZnNldChuKSBvcmFjbGVDYWNoZUlkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9
IGdsb2JhbE9iamVjdFtvZmZzZXRdOworLy8KKy8vICAgUGVyZm9ybXMgYSBkeW5hbWljIHByb3Bl
cnR5IGxvb2t1cCBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LCBvbiB0aGUgcHJvdmlkZWQKKy8vICAg
Z2xvYmFsIG9iamVjdC4gIElmIHN0cnVjdHVyZSBtYXRjaGVzIHRoZSBTdHJ1Y3R1cmUgb2YgdGhl
IGdsb2JhbCB0aGVuIHBlcmZvcm0KKy8vICAgYSBmYXN0IGxvb2t1cCB1c2luZyB0aGUgY2FzZSBv
ZmZzZXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gYSBmdWxsIHJlc29sdmUgYW5kCisvLyAgIGNh
Y2hlIHRoZSBuZXcgc3RydWN0dXJlIGFuZCBvZmZzZXQKIAogX2xsaW50X29wX3Jlc29sdmVfZ2xv
YmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29s
dmVHbG9iYWxTbG93KQotICAgIGRpc3BhdGNoKDYpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BS
ZXNvbHZlR2xvYmFsU2xvdykgIC8vIHJlc29sdmVHbG9iYWwoNiwgLnNsb3cpOworICAgIGRpc3Bh
dGNoKDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAKIC5vcFJlc29sdmVHbG9iYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3Jlc29sdmVfZ2xvYmFsKQotICAgIGRpc3BhdGNoKDYpCisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWwpICAgLy8gY2FsbCBzbG93X3BhdGhfcmVzb2x2
ZV9nbG9iYWw7CisgICAgZGlzcGF0Y2goNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKICMgR2l2ZXMgeW91IHRoZSBzY29wZSBp
biB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFs
IGNoZWNrcyBvbiB0aGUKQEAgLTk3Myw1NCArMTM0MSw2OSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWw6CiAjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1
c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAogIyB1c2UgdDMsIHNvIHlv
dSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgogbWFjcm8gZ2V0U2NvcGUoZGVCcnVp
amluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQotICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQwCi0gICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0Mgor
ICAgIC8vIG1hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykg
eworICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwICAgICAgICAg
ICAgICAgICAgIC8vIHNjb3BlT2JqPHQwPiA9IGNmci5TY29wZUNoYWluLlBheWxvYWQ7CisgICAg
bG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGVCcnVpamluSW5kZXg8dDI+ID0gW2RlQnJ1aWppbkluZGV4T3BlcmFuZF07CiAgICAg
Ci0gICAgYnRpeiB0MiwgLmRvbmUKKyAgICBidGl6IHQyLCAuZG9uZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ID09
IDApIGdvdG8gLmRvbmU7CiAgICAgCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAg
YmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAotICAg
IGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNvZGVCbG9jazx0MT4gPSBjZnIuQ29kZUJsb2NrOworICAgIGJpbmVxIENvZGVCbG9jazo6
bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AgICAgICAgIC8vIGlmIChjb2RlQmxv
Y2s8dDE+LmNvZGVUeXBlICE9IEZ1bmN0aW9uQ29kZSkgZ290byAubG9vcDsKKyAgICBidGJ6IENv
ZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AgICAgICAgICAgICAvLyBp
ZiAoIWNvZGVCbG9jazx0MT4ubmVlZHNGdWxsU2NvcGVDaGFpbikgZ290byAubG9vcDsKICAgICAK
LSAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKyAgICBs
b2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEgICAgICAgICAgICAg
ICAvLyBhY3RpdmF0aW9uUmVnPHQxPiA9IGNvZGVCbG9jazx0MT4uYWN0aXZhdGlvblJlZ2lzdGVy
OwogCi0gICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KLSAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlv
bgotICAgIHNjb3BlQ2hlY2sodDAsIHQxKQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0
W3QwXSwgdDAKKyAgICAvLyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29w
ZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0
aXZhdGlvbiAgICAvLyBpZiAoY2ZyW2FjdGl2YXRpb25SZWc8dDE+XS5UYWcgPT0gRW1wdHlWYWx1
ZVRhZykgZ290byAubm9BY3RpdmF0aW9uOworICAgIHNjb3BlQ2hlY2sodDAsIHQxKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlQ2hlY2soc2NvcGVPYmo8
dDA+LCBhY3RpdmF0aW9uUmVnPHQxPik7CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRb
dDBdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gc2NvcGVP
Ymo8dDA+Lm5leHQ7CiAubm9BY3RpdmF0aW9uOgotICAgIHN1YmkgMSwgdDIKKyAgICBzdWJpIDEs
IHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
ZUJydWlqaW5JbmRleDx0Mj4tLTsKICAgICAKLSAgICBidGl6IHQyLCAuZG9uZQorICAgIGJ0aXog
dDIsIC5kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmIChkZUJydWlqaW5JbmRleDx0Mj4gPT0gMCkgZ290byAuZG9uZTsKIC5sb29wOgotICAgIHNj
b3BlQ2hlY2sodDAsIHQxKQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAK
LSAgICBzdWJpIDEsIHQyCi0gICAgYnRpbnogdDIsIC5sb29wCisgICAgc2NvcGVDaGVjayh0MCwg
dDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzY29wZUNo
ZWNrKHNjb3BlT2JqPHQwPiwgYWN0aXZhdGlvblJlZzx0MT4pOworICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc2NvcGVP
Ymo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5leHQ7CisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBkZUJydWlqaW5JbmRleDx0
Mj4tLTsKKyAgICBidGlueiB0MiwgLmxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ICE9IDApIGdvdG8gLmxvb3A7
CiAKIC5kb25lOgorICAgIC8vIH0gRU5EIG1hY3JvIGdldFNjb3BlLgogZW5kCiAKKy8vIGJ5dGVj
b2RlOiByZXNvbHZlX3NraXAgZHN0KHIpIGdsb2JhbE9iamVjdChjKSBwcm9wZXJ0eShpZCkgc3Ry
dWN0dXJlKHNJRCkgb2Zmc2V0KG4pIG9yYWNsZUNhY2hlSWQKKy8vIGZ1bmN0aW9uOiAKKy8vCisv
LyAgIFBlcmZvcm1zIGEgZHluYW1pYyBwcm9wZXJ0eSBsb29rdXAgZm9yIHRoZSBnaXZlbiBwcm9w
ZXJ0eSwgb24gdGhlIHByb3ZpZGVkCisvLyAgIGdsb2JhbCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUg
bWF0Y2hlcyB0aGUgU3RydWN0dXJlIG9mIHRoZSBnbG9iYWwgdGhlbiBwZXJmb3JtCisvLyAgIGEg
ZmFzdCBsb29rdXAgdXNpbmcgdGhlIGNhc2Ugb2Zmc2V0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRv
IGEgZnVsbCByZXNvbHZlIGFuZAorLy8gICBjYWNoZSB0aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zm
c2V0LgorLy8gICAgICAgICAKKy8vICAgVGhpcyB3YWxrcyB0aHJvdWdoIG4gbGV2ZWxzIG9mIHRo
ZSBzY29wZSBjaGFpbiB0byB2ZXJpZnkgdGhhdCBub25lIG9mIHRob3NlIGxldmVscworLy8gICBp
biB0aGUgc2NvcGUgY2hhaW4gaW5jbHVkZSBkeW5hbWljYWxseSBhZGRlZCBwcm9wZXJ0aWVzLgor
CiBfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCi0gICAgbG9hZHAg
SlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IHNwLmdsb2JhbERhdGE7CisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4gPSBn
bG9iYWxEYXRhPHQzPi5hY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIGdldFNjb3BlKAogICAgICAg
ICAyMFtQQ10sCiAgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGxv
YWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoCi0gICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTdXBlclNsb3cKLSAgICAgICAgZW5kKQotICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVz
b2x2ZUdsb2JhbER5bmFtaWNTbG93KQotICAgIGRpc3BhdGNoKDcpCisgICAgICAgIC8vIG1hY3Jv
IChzY29wZSwgc2NyYXRjaCkgeworICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9i
amVjdFtzY29wZV0sIHNjcmF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9i
ajxzY3JhdGNoPiA9IHNjb3BlLm9iamVjdDsKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdyAg
ICAvLyBpZiAob2JqPHNjcmF0Y2g+LnN0cnVjdHVyZSAhPSBhY3RpdmF0aW9uU3RydWN0dXJlPHQz
PikgZ290byAuc3VwZXJTbG93OworICAgICAgICAvLyB9IEVORCBtYWNyby4KKyAgICAgICAgZW5k
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnZXRTY29wZShvcGVyYW5kc1tvZmZzZXRdLCAuLi4pOwor
ICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmVHbG9iYWwoNywgLnNsb3cp
OworICAgIGRpc3BhdGNoKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
IAogLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKLSAgICBk
aXNwYXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZm9y
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19w
YXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BSZXNvbHZlR2xvYmFs
RHluYW1pY1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKLSAgICBkaXNwYXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlz
cGF0Y2goNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIF9sbGlu
dF9vcF9nZXRfc2NvcGVkX3ZhcjoKQEAgLTEwNjYsNiArMTQ0OSw3IEBAIG1hY3JvIGdldEdsb2Jh
bFZhcihzaXplKQogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbG9hZGkgKHNpemUgLSAxKSAq
IDRbUENdLCB0MworICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAgIG1s
YW0gZ2V0R2xvYmFsVmFyOiA8dDM+ID0gJWxkICB8IHBheWxvYWQ8dDE+ID0gJWxkXG4iLCByNC51
LmksIHIxLnUuaSk7CiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2go
c2l6ZSkKIGVuZApAQCAtMTE2NSw2ICsxNTQ5LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBtbGFtRG8gLy8gbWxhbVByaW50PSB0cnVlOwogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNs
b3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKQEAgLTEx
NzYsMTEgKzE1NjEsMjMgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAg
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCiAgICAg
ICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICBzdG9yZWkgc2Ny
YXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBtbGFtRG8g
Ly8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIiAgIG1sYW0gQVNNIHB1dEJ5SWQgcmVzdWx0PHQy
PiA9ICVsZFxuIiwgcjIudS5pKTsKICAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAg
ZW5kKQogZW5kCiAKKy8vIGJ5dGVjb2RlOiBwdXRfYnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkg
dmFsdWUocikgbm9wKG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRpcmVjdChiKQorLy8KKy8vICAg
R2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3M6IFNldHMgdGhlIHByb3BlcnR5IG5hbWVkIGJ5IGlkZW50
aWZpZXIKKy8vICAgcHJvcGVydHksIGJlbG9uZ2luZyB0byByZWdpc3RlciBiYXNlLCB0byByZWdp
c3RlciB2YWx1ZS4KKy8vCisvLyAgIFVubGlrZSBtYW55IG9wY29kZXMsIHRoaXMgb25lIGRvZXMg
bm90IHdyaXRlIGFueSBvdXRwdXQgdG8KKy8vICAgdGhlIHJlZ2lzdGVyIGZpbGUuCisvLworLy8g
ICBUaGUgImRpcmVjdCIgZmxhZyBzaG91bGQgb25seSBiZSBzZXQgdGhpcyBwdXRfYnlfaWQgaXMg
dG8gaW5pdGlhbGl6ZQorLy8gICBhbiBvYmplY3QgbGl0ZXJhbC4KKwogX2xsaW50X29wX3B1dF9i
eV9pZDoKICAgICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCkBAIC0xNDM3LDI1ICsxODM0
LDM0IEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAKICAgICBsb2Fk
aSA4W1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAgMVxuIik7CiAgICAgYmluZXEgdDAsIEludDMy
VGFnLCAub3AxTm90SW50CiAgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAg
bWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDJcbiIpOworICAgIG1s
YW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENvbXBhcmluZyBpZiAodDEgJWxkIGFuZCB0MiAl
bGQpOiBicmFuY2ggLi4uXG4iLCByMS51LmksIHI0LnUuaSk7CiAgICAgaW50ZWdlckNvbXBhcmUo
dDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBD
T01QQVJFIHN0ZXAgM1xuIik7CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gRElE
IE5PVCBicmFuY2hcbiIpOwogICAgIGRpc3BhdGNoKDQpCiAKIC5vcDFOb3RJbnQ6CisgICAgbWxh
bURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDRcbiIpOwogICAgIGJpYSB0
MCwgTG93ZXN0VGFnLCAuc2xvdwogICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3Ay
RG91YmxlCiAgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwogICAgIGNpMmQgdDMsIGZ0MQog
ICAgIGptcCAub3AxTm90SW50UmVhZHkKIC5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgbWxhbURv
IC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDVcbiIpOwogICAgIGZpaTJkIHQz
LCB0MiwgZnQxCiAub3AxTm90SW50UmVhZHk6CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBA
IG1sYW0gQ09NUEFSRSBzdGVwIDZcbiIpOwogICAgIGZpaTJkIHQxLCB0MCwgZnQwCiAgICAgZG91
YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCiAgICAgZGlzcGF0Y2goNCkKIAogLm9w
Mk5vdEludDoKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAg
N1xuIik7CiAgICAgY2kyZCB0MSwgZnQwCiAgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CiAg
ICAgZmlpMmQgdDMsIHQyLCBmdDEKQEAgLTE0NjMsOSArMTg2OSwxMiBAQCBtYWNybyBjb21wYXJl
KGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAgICAgZGlzcGF0Y2goNCkKIAogLmp1bXBUYXJn
ZXQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDhcbiIp
OworICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIEJSQU5DSEVEXG4iKTsKICAgICBk
aXNwYXRjaEJyYW5jaCgxMltQQ10pCiAKIC5zbG93OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAg
IEBAQCBtbGFtIENPTVBBUkUgc3RlcCA5XG4iKTsKICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgp
CiAgICAgZGlzcGF0Y2goMCkKIGVuZApAQCAtMTU0NywzMiArMTk1Niw1NSBAQCBfbGxpbnRfb3Bf
bmV3X2Z1bmM6CiAub3BOZXdGdW5jRG9uZToKICAgICBkaXNwYXRjaCg0KQogCittYWNybyBjYWxs
VGFyZ2V0RnVuY3Rpb24oY2FsbExpbmtJbmZvKQorICAgIGlmIENfTE9PUAorICAgICAgICBjeHhD
YWxsSlNGdW5jdGlvbiBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbY2FsbExp
bmtJbmZvXSAgICAgLy8gY2FsbCBjYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXQ7CisgICAg
ZWxzZQorICAgICAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtj
YWxsTGlua0luZm9dICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldDsK
KyAgICAgICAgLy8gUmVsb2FkIHRoZSByZXR1cm4gUEMgZnJvbSB3aGVyZSB3ZSBzdGFzaGVkIGl0
LCBhbmQgZ28gdGhlcmU6CisgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAg
Z290byAqcGM7CisgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3BhdGNoQWZ0ZXJDYWxsKCk7CisgICAgZW5kCitl
bmQKIAogbWFjcm8gZG9DYWxsKHNsb3dQYXRoKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxv
YWRpIDE2W1BDXSwgdDEKLSAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwg
dDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cENhbGxTbG93KQotICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICBsb2FkaSAxMltQ
Q10sIHQzCi0gICAgYWRkcCAyNCwgUEMKLSAgICBsc2hpZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIs
IHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCi0gICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKLSAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxv
YWRPZmZzZXRbdDNdCi0gICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0
M10KLSAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgotICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCi0gICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCi0gICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkg
Q2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQotICAgIHN0b3JlaSBDZWxsVGFnLCBTY29w
ZUNoYWluICsgVGFnT2Zmc2V0W3QzXQotICAgIG1vdmUgdDMsIGNmcgotICAgIGNhbGwgTExJbnRD
YWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KCkKKyAgICAvLyBtYWNybyBkb0NhbGwoc2xvd1BhdGgpIHsKKyAgICBsb2FkaSA0W1BDXSwgdDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY0lkPHQwPiA9IHBjWzFd
OworICAgIGxvYWRpIDE2W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsTGlua0luZm88dDE+ID0gcGNbNF07CisgICAgbG9hZHAgTExJbnRDYWxsTGlua0lu
Zm86OmNhbGxlZVt0MV0sIHQyICAgICAgICAgICAgIC8vIGNhbGxlZTx0Mj4gPSBjYWxsTGlua0lu
Zm88dDE+LmNhbGxlZTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDMsIC5vcENhbGxTbG93KSAvLyBsb2FkKGZ1bmNJZDx0MD4gPT0+IGZ1bmM8dDM+LCAu
Li4pOworICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNvZGUoKT8pIGdv
dG8gLnNsb3c7CisgICAgbG9hZGkgMTJbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBwY1szXTsKKworICAgIGFkZHAgMjQsIFBDICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyArPSAyNCBpLmUuIHBvaW50
IHRvIHRoZSByZXR1cm4gYWRkcmVzcy4KKworICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciArIG9m
ZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9IHNpemVvZiBjdXJyZW50IGZyYW1lOworICAgIGxz
aGlmdGkgMywgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZz
ZXQ8dDM+ID0gb2Zmc2V0PHQzPiA8PCAzOworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlu
cyB0aGUgbmV3IHZhbHVlIG9mIGNmciAgICAvLyBuZXdGcmFtZTx0Mz4gPSBvZmZzZXQ8dDM+ICsg
Y2ZyOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV3RnJhbWU6CisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNh
bGxlZTx0Mj4uc2NvcGVDaGFpbjsKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZz
ZXRbdDNdICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZS5QYXlsb2FkID0gY2Fs
bGVlPHQyPjsKKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXSAg
ICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4uUGF5bG9hZCA9IHNjb3BlPHQwPjsK
KyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbnVtQXJnczx0Mj4gPSAuLi47CisgICAgbWxhbURvICAvLyBpZiAobWxhbV9QUklOVEYpIHBy
aW50ZigiXG4gbWxhbSA6OiBQUklOVCBkb0NhbGwoKSB8IGNmci5Bcmd1bWVudENvdW50LlRhZyA9
IHBjICVwO1xuXG4iLCB2UEMpOworICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldFtjZnJdICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBwYzsgLy8gU3Rh
c2ggdGhlIHJldHVybiBQQy4KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10gICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlckZyYW1lID0gY2ZyOworICAg
IHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAvLyBu
ZXdGcmFtZTx0Mz4uQXJndW1lbnRDb3VudC5QYXlsb2FkID0gbnVtQXJnczx0Mj47CisgICAgc3Rv
cmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10gICAgICAgICAgICAgIC8vIG5ld0Zy
YW1lPHQzPi5DYWxsZWUuVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVD
aGFpbiArIFRhZ09mZnNldFt0M10gICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4u
VGFnID0gQ2VsbFRhZzsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJc
biBtbGFtIDo6IEJFRk9SRSBwdXNoIHwgY2ZyKCVwKS0+dlBDKCkgPSAlcDtcblxuIiwgY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmN1cnJlbnRWUEMoKSk7CisgICAgbW92ZSB0MywgY2ZyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKKyAg
ICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IEFGVEVSIHB1
c2ggfCBjZnIoJXApLT52UEMoKSA9ICVwO1xuXG4iLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y3Vy
cmVudFZQQygpKTsKKyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgVk1JbnNwZWN0b3I6
OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgID4+PiBQVVNIRUQgdG8gbmV3ICIsIHZQQywgImRvQ2Fs
bCIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICAvLyBDYWxsIHRoZSB0YXJnZXQgYXMgaWYg
aXQncyBhIGNvbXBpbGVkIG1ldGhvZDoKKyAgICAjIG1sYW0gY2FsbCBMTEludENhbGxMaW5rSW5m
bzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdICAgICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvPHQxPi5t
YWNoaW5lQ29kZVRhcmdldDsKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24odDEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxsTGlua0luZm88dDE+
KTsKIAogLm9wQ2FsbFNsb3c6Ci0gICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dQYXRoKQorICAg
IHNsb3dQYXRoRm9yQ2FsbCg2LCBzbG93UGF0aCkgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
YWxsIHNsb3dQYXRoOworICAgIC8vIH0gRU5EIGRvQ2FsbC4KIGVuZAogCiAKQEAgLTE1OTgsMTIg
KzIwMzAsMjUgQEAgX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKICAgICBkaXNwYXRjaCgy
KQogCiAKKy8vIGJ5dGVjb2RlOiByZXQgcmVzdWx0UmVnSWQKKy8vIGZ1bmN0aW9uOiByZXR1cm4g
Y2ZyW3Jlc3VsdFJlZ0lkXTsKKy8vCisvLyAgIFJldHVybiByZWdpc3RlciByZXN1bHQgYXMgdGhl
IHJldHVybiB2YWx1ZSBvZiB0aGUgY3VycmVudAorLy8gICBmdW5jdGlvbiBjYWxsLCB3cml0aW5n
IGl0IGludG8gZnVuY3Rpb25SZXR1cm5WYWx1ZS4KKy8vICAgSW4gYWRkaXRpb24sIHVud2luZCBv
bmUgY2FsbCBmcmFtZSBhbmQgcmVzdG9yZSB0aGUgc2NvcGUKKy8vICAgY2hhaW4sIGNvZGUgYmxv
Y2sgaW5zdHJ1Y3Rpb24gcG9pbnRlciBhbmQgcmVnaXN0ZXIgYmFzZQorLy8gICB0byB0aG9zZSBv
ZiB0aGUgY2FsbGluZyBmdW5jdGlvbi4KKwogX2xsaW50X29wX3JldDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbWxhbURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAi
bWxhbSBGLkEuQSIpOwogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCi0gICAgbG9h
ZGkgNFtQQ10sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQotICAg
IGRvUmV0dXJuKCkKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJh
bWUsICJtbGFtIEYuQS5CIik7CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAg
ICAgLy8gcmVzdWx0SWQ8dDI+ID0gb3BlcmFuZHNbcmVzdWx0UmVnSWRdOworICAgIG1sYW1EbyAv
LyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkMiKTsKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKGNmcltyZXN1bHRJZDx0Mj5dID09PiB0YWc8dDE+LCBwYXlsb2FkPHQwPik7CisgICAgbWxh
bURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAibWxhbSBGLkEuRCIpOwor
ICAgIGRvUmV0dXJuKCkgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvUmV0dXJuKCk7CiAK
IAogX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKQEAgLTE2OTAsNiArMjEzNSwxMiBAQCBfbGxp
bnRfb3BfbmV4dF9wbmFtZToKICAgICBkaXNwYXRjaCgwKQogCiAKKy8vIGJ5dGVjb2RlOiBjYXRj
aCBleChyKQorLy8KKy8vICAgUmV0cmlldmVzIHRoZSBWTSdzIGN1cnJlbnQgZXhjZXB0aW9uIGFu
ZCBwdXRzIGl0IGluIHJlZ2lzdGVyCisvLyAgIGV4LiBUaGlzIGlzIG9ubHkgdmFsaWQgYWZ0ZXIg
YW4gZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZCwKKy8vICAgYW5kIHVzdWFsbHkgZm9ybXMgdGhl
IGJlZ2lubmluZyBvZiBhbiBleGNlcHRpb24gaGFuZGxlci4KKwogX2xsaW50X29wX2NhdGNoOgog
ICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBv
bGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxs
IGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQpAQCAtMTY5NywxOCArMjE0OCwx
OCBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNh
bGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKICAgICAjIGNvZGUgbXVz
dCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFu
ZCBoYXZlCiAgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3cuCi0gICAgbW92ZSB0MCwgY2ZyCi0gICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQzCi0gICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9y
VGhyb3dbdDNdLCBQQwotICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9h
ZE9mZnNldFt0M10sIHQwCi0gICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdP
ZmZzZXRbdDNdLCB0MQotICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBh
eWxvYWRPZmZzZXRbdDNdCi0gICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6
ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFtjZnIsIHQyLCA4XQorICAgIG1vdmUgdDAsIGNmciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gY2F0Y2hlckZyYW1l
PHQwPjsKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxz
cD4uZ2xvYmFsRGF0YTsKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvd1t0M10sIFBDICAgICAgICAgICAgIC8vIHBjID0gZ2xvYmFsRGF0YS50YXJnZXRJ
bnRlcnByZXRlclBDRm9yVGhyb3c7CisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQwPiA9IGds
b2JhbERhdGEuZXhjZXB0aW9uLlBheWxvYWQ7CisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNl
cHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MSAgICAgICAgICAgICAgICAgICAvLyB0YWc8dDE+ID0g
Z2xvYmFsRGF0YS5leGNlcHRpb24uVGFnOworICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4
Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YS5l
eGNlcHRpb24uUGF5bG9hZCA9IDA7CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFs
RGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAvLyBnbG9iYWxEYXRhLmV4Y2Vw
dGlvbi5UYWcgPSBFbXB0eVZhbHVlVGFnOworICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhSZWdJZDx0Mj4g
PSBvcGVyYW5kc1swXTsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltleFJlZ0lkPHQyPl0uUGF5bG9h
ZCA9IHBheWxvYWQ8dDA+OworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2V4UmVnSWQ8dDI+XS5UYWcg
PSB0YWc8dDE+OwogICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJl
IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgot
ICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAK
IAogX2xsaW50X29wX2VuZDoKQEAgLTE3MjIsMTUgKzIxNzMsMTcgQEAgX2xsaW50X29wX2VuZDoK
IAogCiBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZToKKyAgICBtbGFtRG8g
Ly8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1s
YW0gX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmVcblxuIik7CiAgICAgIyBX
aGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJ
bnRTbG93UGF0aHMpLCBzbwogICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJp
bHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgogICAgICMgVGhpcyBlc3NlbnRp
YWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCi0gICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCi0gICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpj
YWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQxICAgICAgICAgICAgICAgICAvLyBnbG9iYWxEYXRhPHQxPiA9IGppdFN0YWNr
RnJhbWU8c3A+Lmdsb2JhbERhdGE7CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVG
b3JUaHJvd1t0MV0sIHQwICAgICAgICAgICAvLyBjYWxsRnJhbWU8dDA+ID0gZ2xvYmFsRGF0YTx0
MT4uY2FsbEZyYW1lRm9yVGhyb3c7CiAgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3dbdDFdCiAKIAogX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6
CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioq
KioqKioqKioqKiBtbGFtIF9sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lXG5cbiIp
OwogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKICAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKICAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNh
bGxGcmFtZUZvclRocm93W3QxXSwgdDAKQEAgLTE3MzgsMTYgKzIxOTEsMTggQEAgX2xsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CiAKIAogbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xp
bmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCi0gICAgc3RvcmVwIDAsIENvZGVCbG9ja1tj
ZnJdCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAKLSAgICBsb2FkaSBTY29wZUNoYWlu
ICsgUGF5bG9hZE9mZnNldFt0MF0sIHQxCi0gICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4g
KyBUYWdPZmZzZXRbY2ZyXQotICAgIHN0b3JlaSB0MSwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZz
ZXRbY2ZyXQorICAgIC8vIEluaXQgY2ZyW0NvZGVCbG9jaywgU2NvcGVDaGFpbiwgUmV0dXJuUENd
OgorICAgIHN0b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIuQ29kZUJsb2NrID0gMDsKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVyRnJhbWU8dDA+ID0gY2ZyLkNhbGxlckZy
YW1lOworICAgIG1sYW1EdW1wIHQwCisgICAgbG9hZGkgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZz
ZXRbdDBdLCB0MSAgICAgICAgICAgIC8vIHNjb3BlPHQxPiA9IGNhbGxlckZyYW1lPHQwPi5TY29w
ZUNoYWluLlBheWxvYWQ7CisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZz
ZXRbY2ZyXSAgICAgICAgIC8vIGNmci5TY29wZUNoYWluLlRhZyA9IENlbGxUYWc7CisgICAgc3Rv
cmVpIHQxLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdICAgICAgICAgIC8vIGNmci5T
Y29wZUNoYWluLlBheWxvYWQgPSBzY29wZTx0MT47CiAgICAgaWYgWDg2CiAgICAgICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA0W3NwXSwgdDMgIyBBZGRpdGlvbmFsIG9mZnNl
dCBmb3IgcmV0dXJuIGFkZHJlc3MKICAgICAgICAgc3RvcmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0
b3BDYWxsRnJhbWVbdDNdCiAgICAgICAgIHBlZWsgMCwgdDEKLSAgICAgICAgc3RvcmVwIHQxLCBS
ZXR1cm5QQ1tjZnJdCisgICAgICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0MT47CiAgICAgICAgIG1vdmUgY2ZyLCB0
MiAgIyB0MiA9IGVjeAogICAgICAgICBzdWJwIDE2IC0gNCwgc3AKICAgICAgICAgbG9hZGkgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQpAQCAtMTc1NywyNiArMjIxMiw0OSBAQCBtYWNy
byBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgICAgIGFkZHAgMTYgLSA0
LCBzcAogICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhICsgNFtzcF0sIHQz
CiAgICAgZWxzaWYgQVJNdjcKLSAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQzCi0gICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1l
W3QzXQotICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwodDMpCi0gICAgICAgIHN0b3JlcCB0MywgUmV0dXJuUENbY2ZyXQotICAgICAgICBt
b3ZlIGNmciwgdDAKLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0
MQotICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQotICAgICAg
ICBtb3ZlIHQyLCBjZnIKLSAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0
MV0KLSAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDMpCi0gICAgICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgICAgICAvLyBTZXQg
Z2xvYmFsRGF0YS50b3BDYWxsRnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAgICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+
ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICAgICAgc3RvcmVwIGNmciwgSlNH
bG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVbdDNdICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9wQ2Fs
bEZyYW1lID0gY2ZyOworICAgICAgICBtb3ZlIHQwLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzYXZlZENhbGxlckZyYW1lPHQyPiA9IGNhbGxlckZyYW1lPHQwPjsK
KyAgICAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQzKSAgICAgICAgICAgICAg
Ly8gc2F2ZWRSZXR1cm5QQzx0Mz4gPSByZXR1cm5QQzsKKyAgICAgICAgc3RvcmVwIHQzLCBSZXR1
cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQzPjsK
KyAgICAgICAgLy8gUGFzcyBjdXJyZW50RnJhbWUgYXMgYW4gYXJnIHRvIHRoZSB0YXJnZXQ6Cisg
ICAgICAgIG1vdmUgY2ZyLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGFyZzA6IGFyZzA8dDA+ID0gY2ZyOworICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRo
IHIwID0gY3VycmVudEZyYW1lLCBjZnIgPSBvbGRGcmFtZTogV2h5Pz8/CisgICAgICAgIGxvYWRp
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEgICAgICAgICAgIC8vIGpzZnVuYzx0MT4g
PSBjZnIuQ2FsbGVlLlBheWxvYWQ7CisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0
YWJsZVt0MV0sIHQxICAgICAgICAgIC8vIGFyZzE6IGV4ZWN1dGFibGU8dDE+ID0ganNmdW5jPHQx
Pi5leGVjdXRhYmxlOworICAgICAgICBtb3ZlIHQyLCBjZnIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIgPSBzYXZlZENhbGxlckZyYW1lPHQyPjsKKyAgICAgICAgY2Fs
bCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgICAgICAgICAgLy8gY2FsbCBleGVj
dXRhYmxlPHQxPi5DYWxsT3JDb25zdHJ1Y3Q7CisKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4odDMpICAgICAgICAgICAgLy8gcmV0dXJuUEMgPSBzYXZlZFJldHVyblBD
PHQzPjsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAg
ICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOwor
ICAgIGVsc2lmIENfTE9PUAorICAgICAgICAvLyBTZXQgZ2xvYmFsRGF0YS50b3BDYWxsRnJhbWUg
PSBjdXJyZW50RnJhbWU7CisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xv
YmFsRGF0YTsKKyAgICAgICAgc3RvcmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVb
dDNdICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9wQ2FsbEZyYW1lID0gY2ZyOworICAgICAgICBt
bGFtRHVtcCBjZnIKKyAgICAgICAgbW92ZSB0MCwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc2F2ZWRDYWxsZXJGcmFtZTx0Mj4gPSBjYWxsZXJGcmFtZTx0MD47Cisg
ICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MykgICAgICAgICAgICAgIC8v
IHNhdmVkUmV0dXJuUEM8dDM+ID0gcmV0dXJuUEM7CisgICAgICAgIHN0b3JlcCB0MywgUmV0dXJu
UENbY2ZyXSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0Mz47Cisg
ICAgICAgIC8vIFBhc3MgY3VycmVudEZyYW1lIGFzIGFuIGFyZyB0byB0aGUgdGFyZ2V0OgorICAg
ICAgICBtb3ZlIGNmciwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
cmcwOiBhcmcwPHQwPiA9IGNmcjsKKyAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBy
MCA9IGN1cnJlbnRGcmFtZSwgY2ZyID0gb2xkRnJhbWU6IFdoeT8/PworICAgICAgICBsb2FkaSBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxICAgICAgICAgICAvLyBqc2Z1bmM8dDE+ID0g
Y2ZyLkNhbGxlZS5QYXlsb2FkOworICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVbdDFdLCB0MSAgICAgICAgICAvLyBhcmcxOiBleGVjdXRhYmxlPHQxPiA9IGpzZnVuYzx0MT4u
ZXhlY3V0YWJsZTsKKyAgICAgICAgbW92ZSB0MiwgY2ZyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gc2F2ZWRDYWxsZXJGcmFtZTx0Mj47CisgICAgICAgICMgbWxh
bSBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAgICAgICAgICAgICAvLyBjYWxs
IGV4ZWN1dGFibGU8dDE+LkNhbGxPckNvbnN0cnVjdDsKKyAgICAgICAgY3h4Q2FsbE5hdGl2ZSBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgLy8gY2FsbCBleGVjdXRhYmxlPHQxPi5D
YWxsT3JDb25zdHJ1Y3Q7CisKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1
cm4odDMpICAgICAgICAgICAgLy8gcmV0dXJuUEMgPSBzYXZlZFJldHVyblBDPHQzPjsKKyAgICAg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xv
YmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOwogICAgIGVsc2UgIAog
ICAgICAgICBlcnJvcgogICAgIGVuZAotICAgIGJpbmVxIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9u
ICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1ZVRhZywgLmV4Y2VwdGlvbgotICAgIHJldAorICAg
IGJpbmVxIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1
ZVRhZywgLmV4Y2VwdGlvbiAvLyBpZiAoZ2xvYmFsRGF0YTx0Mz4uZXhjZXB0aW9uLFRhZyAhPSBF
bXB0eVZhbHVlVGFnKSBnb3RvIC5leGNlcHRpb247CisgICAgcmV0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybjsKIC5leGNlcHRpb246CiAg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKSAjIFRoaXMgaXMgcmVhbGx5IG9u
bHkgbmVlZGVkIG9uIFg4NgotICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XSwgUEMKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDICAgICAg
ICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF90aHJvd19mcm9tX25hdGl2ZV9jYWxsKQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZQogZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTMzLDQ5ICszMyw3NyBAQCBjb25zdCBWYWx1ZVVuZGVmaW5l
ZCAgPSBUYWdCaXRUeXBlT3RoZXIgCiBjb25zdCBWYWx1ZU51bGwgICAgICAgPSBUYWdCaXRUeXBl
T3RoZXIKIAogIyBVdGlsaXRpZXMuCisKIG1hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCi0gICAgYWRk
cCBhZHZhbmNlLCBQQwotICAgIGptcCBbUEIsIFBDLCA4XQorICAgIGFkZHAgYWR2YW5jZSwgUEMg
ICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOworICAg
IGptcCBbUEIsIFBDLCA4XSAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogZW5kCiAKIG1hY3JvIGRpc3BhdGNoSW50KGFkdmFuY2UpCiAgICAgYWRkaSBhZHZhbmNlLCBQ
QwotICAgIGptcCBbUEIsIFBDLCA4XQorICAgIGptcCBbUEIsIFBDLCA4XSAgICAgICAgICAgICAg
ICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogZW5kCiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0
aW9uc1tQQl0sIFBCCi0gICAgam1wIFtQQiwgUEMsIDhdCisgICAgam1wIFtQQiwgUEMsIDhdICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiBlbmQKIAogbWFjcm8gY0Nh
bGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQotICAgIG1vdmUgYXJnMSwgdDUKLSAgICBtb3ZlIGFy
ZzIsIHQ0Ci0gICAgY2FsbCBmdW5jdGlvbgorICAgIGlmIFg4Nl82NAorICAgICAgICBtb3ZlIGFy
ZzEsIHQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzEgPSAuLi47CisgICAg
ICAgIG1vdmUgYXJnMiwgdDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMiA9
IC4uLjsKKyAgICAgICAgY2FsbCBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIEMgZnVuY3Rpb247CisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxT
bG93UGF0aCBmdW5jdGlvbiwgYXJnMSwgYXJnMgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKIGVuZAogCiAjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBw
cm9iYWJseSBiZSBpbW1lZGlhdGVzLgogbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KQotICAgIG1vdmUgYXJnMSwgdDUKLSAgICBtb3ZlIGFyZzIsIHQ0Ci0gICAg
bW92ZSBhcmczLCB0MQotICAgIG1vdmUgYXJnNCwgdDIKLSAgICBjYWxsIGZ1bmN0aW9uCisgICAg
aWYgWDg2XzY0CisgICAgICAgIG1vdmUgYXJnMSwgdDUKKyAgICAgICAgbW92ZSBhcmcyLCB0NAor
ICAgICAgICBtb3ZlIGFyZzMsIHQxCisgICAgICAgIG1vdmUgYXJnNCwgdDIKKyAgICAgICAgY2Fs
bCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBlcnJvcgorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKIGVuZAogCiBtYWNybyBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgp
CisgICAgIyBtbGFtIGlmIG5vdCBDX0xPT1AgIyBtbGFtCisgICAgIyAgICBsZWFwIFtQQiwgUEMs
IDhdLCBQQworICAgICMgICAgbW92ZSBQQiwgdDMKKyAgICAjIG1sYW0gZW5kCiAgICAgbGVhcCBb
UEIsIFBDLCA4XSwgUEMKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsZWEgW1BCLCBQQywgOF0gPT4g
UEMgJXBcbiIsIHJQQy51LnZwKTsKICAgICBtb3ZlIFBCLCB0MwogZW5kCiAKIG1hY3JvIHJlc3Rv
cmVTdGF0ZUFmdGVyQ0NhbGwoKQotICAgIG1vdmUgdDAsIFBDCi0gICAgbW92ZSB0MSwgY2ZyCisg
ICAgIyBtbGFtIGlmIG5vdCBDX0xPT1AgIyBtbGFtCisgICAgIyAgICBtb3ZlIHQwLCBQQyAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CisgICAgIyAgICBtb3Zl
IHQxLCBjZnIgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgorICAg
ICMgICAgbW92ZSB0MywgUEIKKyAgICAjICAgIHN1YnAgUEIsIFBDCisgICAgIyAgICB1cnNoaWZ0
cCAzLCBQQworICAgICMgbWxhbSBlbmQKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgcmVzdG9yZSBQ
QiAlcCBQQyAlcCA+Pj4gXG4iLCByQmFzZVBDLnUudnAsIHJQQy51LnZwKTsKKyAgICBtb3ZlIHQw
LCBQQyAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CisgICAg
bW92ZSB0MSwgY2ZyICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4K
ICAgICBtb3ZlIHQzLCBQQgorICAgIG1sYW1EbyAvLyBwcmludGYoIiByZXN0b3JlIFBCICVwIFBD
ICVwID4+PiBcbiIsIHJCYXNlUEMudS52cCwgclBDLnUudnApOwogICAgIHN1YnAgUEIsIFBDCiAg
ICAgdXJzaGlmdHAgMywgUEMKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgc3ViIFBCLCBQQyB8IHVy
c2hpZnQgMywgUEMgPT4gUEMgJXBcbiIsIHJQQy51LnZwKTsKIGVuZAogCiBtYWNybyBjYWxsU2xv
d1BhdGgoc2xvd1BhdGgpCkBAIC05OCwxMCArMTI2LDMwIEBAIGVuZAogCiAjIENhbGwgYSBzbG93
IHBhdGggZm9yIGNhbGwgY2FsbCBvcGNvZGVzLgogbWFjcm8gY2FsbENhbGxTbG93UGF0aChhZHZh
bmNlLCBzbG93UGF0aCwgYWN0aW9uKQorICAgICMgbW92ZSBBcmd1bWVudENvdW50LCB0MAorICAg
ICMgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBBcmd1bWVudENvdW50ID0+ICVwIFxuIiwgcjAu
dS52cCk7CisgICAgIyBhZGRpIFRhZ09mZnNldCwgY2ZyLCB0MAorICAgICMgbWxhbURvIC8vIHBy
aW50ZigiICAgVEVTVCBUYWdPZmZzZXRbY2ZyICVwXSA9PiAlcCBcbiIsIGNhbGxGcmFtZSwgcjAu
dS52cCk7CisgICAgIyBtb3ZlIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQsIHQwCisgICAgIyBt
bGFtRG8gLy8gcHJpbnRmKCIgICBURVNUIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQgPT4gJXAg
XG4iLCByMC51LnZwKTsKKyAgICAjIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XSwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgbW92ZSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2NmciAlcF0gPT4gJXAgXG4iLCBjYWxsRnJhbWUsIHIwLnUudnApOworICAg
ICMgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCB0MAorICAgICMgbWxhbURv
IC8vIHByaW50ZigiICAgVEVTVCBsb2FkIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyICVw
XSA9PiAlcCBcbiIsIGNhbGxGcmFtZSwgcjAudS52cCk7CisgICAgIyBtb3ZlIENhbGxlckZyYW1l
LCB0MAorICAgICMgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBDYWxsZXJGcmFtZSA9PiAlcCBc
biIsIHIwLnUudnApOworICAgICMgbW92ZSBDYWxsZXJGcmFtZVtjZnJdLCB0MAorICAgICMgbWxh
bURvIC8vIHByaW50ZigiICAgVEVTVCBtb3ZlIENhbGxlckZyYW1lW2NmciAlcF0gPT4gJXAgXG4i
LCBjYWxsRnJhbWUsIHIwLnUudnApOworICAgICMgbG9hZGkgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAK
KyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgbG9hZCBDYWxsZXJGcmFtZVtjZnIgJXBd
ID0+ICVwIFxuIiwgY2FsbEZyYW1lLCByMC51LnZwKTsKKwogICAgIGFkZGkgYWR2YW5jZSwgUEMs
IHQwCisgICAgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBCRUZPUkUgY2ZyICVwIGNhbGxlckZy
YW1lICVwIFxuIiwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwogICAgIHN0
b3JlaSB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgbWxhbURvIC8vIHBy
aW50ZigiICAgVEVTVCBBRlRFUiBjZnIgJXAgY2FsbGVyRnJhbWUgJXAgXG4iLCBjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQog
ICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBB
RlRFUiBjQ2FsbDIgUEIgJXAgUEMgJXAgPj4+IFxuIiwgckJhc2VQQy51LnZwLCByUEMudS52cCk7
CiAgICAgbW92ZSB0MSwgY2ZyCiAgICAgYWN0aW9uKHQwKQogZW5kCkBAIC0xMjQsMjQgKzE3Miwz
MyBAQCBlbmQKIAogIyBJbmRleCBhbmQgdmFsdWUgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJz
LiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdmFsdWUpCisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9y
VmFyaWFibGVcbiIpOwogICAgIGJwZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsIC5jb25zdGFudAorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlIC52YXJpYWJsZVxuIik7CiAgICAgbG9hZHAgW2NmciwgaW5kZXgsIDhdLCB2YWx1
ZQorICAgIG1sYW1EdW1wIHZhbHVlCiAgICAgam1wIC5kb25lCiAuY29uc3RhbnQ6CisgICAgIyBt
bGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9yVmFyaWFibGUgLmNvbnN0YW50XG4i
KTsKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKICAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2YWx1ZQog
ICAgIHN1YnAgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIGluZGV4CiAgICAgbG9hZHAgW3Zh
bHVlLCBpbmRleCwgOF0sIHZhbHVlCisgICAgbWxhbUR1bXAgdmFsdWUKIC5kb25lOgorICAgICMg
bWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIC5kb25lXG4iKTsK
IGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoaW5kZXgsIHZhbHVlLCBz
bG93KQorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
SW50MzJcbiIpOwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHZhbHVlKQogICAg
IGJwYiB2YWx1ZSwgdGFnVHlwZU51bWJlciwgc2xvdwogZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKGluZGV4LCB2YWx1ZSwgc2xvdykKKyAgICAjIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxcbiIpOwogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoaW5kZXgsIHZhbHVlKQorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbDogdmFsdWUgJXAgdGFnTWFzayAlcFxuIiwgcjQudS52
cCwgdGFnTWFzay51LnZwKTsKICAgICBidHBueiB2YWx1ZSwgdGFnTWFzaywgc2xvdwogZW5kCiAK
QEAgLTE4MCw1OCArMjM3LDg2IEBAIGVuZAogCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9u
cwogCisvLyBieXRlY29kZTogZW50ZXIKKy8vCisvLyAgIEluaXRpYWxpemVzIGxvY2FsIHZhcmlh
YmxlcyB0byB1bmRlZmluZWQuIElmIHRoZSBjb2RlIGJsb2NrIHJlcXVpcmVzCisvLyAgIGFuIGFj
dGl2YXRpb24sIGVudGVyX3dpdGhfYWN0aXZhdGlvbiBpcyB1c2VkIGluc3RlYWQuCisvLyAgIFRo
aXMgb3Bjb2RlIGFwcGVhcnMgb25seSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4K
KwogX2xsaW50X29wX2VudGVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJsb2NrPiA9IGNmci5Db2Rl
QmxvY2sKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8
c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgYnRpeiB0MiwgLm9wRW50ZXJE
b25lCi0gICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAKKyAgICBidGl6IHQyLCAub3BFbnRlckRv
bmUgICAgICAgICAgICAgICAgICAgLy8gaWYgKG51bVZhcnM8dDI+ID09IDApIGdvdG8gLmRvbmU7
CisgICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAgICAgICAgICAgICAgICAgIC8vIGpzVW5kZWZp
bmVkPHQwPiA9IFVuZGVmaW5lZDsKIC5vcEVudGVyTG9vcDoKLSAgICBzdWJpIDEsIHQyCi0gICAg
c3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0KLSAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisgICAg
c3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbnVtVmFyczx0Mj4t
LTsKKyAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgLy8gICBjZnJb
bnVtVmFyczx0Mj5dID0ganNVbmRlZmluZWQ8dDA+OworICAgIGJ0aW56IHQyLCAub3BFbnRlckxv
b3AgICAgICAgICAgICAgICAgICAvLyBpZiAobnVtVmFyczx0Mj4gIT0gMCkgZ290byAubG9vcDsK
IC5vcEVudGVyRG9uZToKLSAgICBkaXNwYXRjaCgxKQorICAgIGRpc3BhdGNoKDEpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNv
ZGU6IGNyZWF0ZV9hY3RpdmF0aW9uIGRzdChyKQorLy8KKy8vICAgSWYgdGhlIGFjdGl2YXRpb24g
b2JqZWN0IGZvciB0aGlzIGNhbGxmcmFtZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQsCisvLyAg
IHRoaXMgY3JlYXRlcyBpdCBhbmQgd3JpdGVzIGl0IGJhY2sgdG8gZHN0LgogCiBfbGxpbnRfb3Bf
Y3JlYXRlX2FjdGl2YXRpb246CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpcyA4W1BC
LCBQQywgOF0sIHQwCi0gICAgYnBuZXEgW2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVh
dGVBY3RpdmF0aW9uRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0
ZV9hY3RpdmF0aW9uKQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0MD4gPSBvcGVyYW5kPGRzdFJlZ0lk
PjsKKyAgICBicG5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFjdGl2YXRp
b25Eb25lIC8vIGlmIChjZnJbYWN0aXZhdGlvblJlZzx0MD5dICE9IEVtcHR5KSBnb3RvIC5kb25l
OworICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKSAg
ICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb247CiAub3BDcmVhdGVBY3Rp
dmF0aW9uRG9uZToKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwor
CiAKKy8vIGJ5dGVjb2RlOiBpbml0X2xhenlfcmVnIGRzdChyKQorLy8KKy8vICAgSW5pdGlhbGlz
ZXMgZHN0KHIpIHRvIEpTVmFsdWUoKS4KKy8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0
IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgogCiBfbGxpbnRfb3BfaW5pdF9sYXp5X3Jl
ZzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAg
ICBzdG9yZXAgVmFsdWVFbXB0eSwgW2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAgICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZDxk
c3RSZWdJZD47CisgICAgc3RvcmVwIFZhbHVlRW1wdHksIFtjZnIsIHQwLCA4XSAgICAgLy8gY2Zy
W2RzdDx0MD5dID0gRW1wdHk7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBjcmVhdGVfYXJndW1l
bnRzIGRzdChyKQorLy8KKy8vICAgQ3JlYXRlcyB0aGUgJ2FyZ3VtZW50cycgb2JqZWN0IGFuZCBw
bGFjZXMgaXQgaW4gYm90aCB0aGUKKy8vICAgJ2FyZ3VtZW50cycgY2FsbCBmcmFtZSBzbG90IGFu
ZCB0aGUgbG9jYWwgJ2FyZ3VtZW50cycKKy8vICAgcmVnaXN0ZXIsIGlmIGl0IGhhcyBub3QgYWxy
ZWFkeSBiZWVuIGluaXRpYWxpc2VkLgogCiBfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBicG5l
cSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQorICAgIGxvYWRp
cyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
PHQwPiA9IG9wZXJhbmQ8ZHN0UmVnSWQ+OworICAgIGJwbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVF
bXB0eSwgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZSAgLy8gaWYgKGNmcltkc3Q8dDA+XSAhPSBFbXB0
eSkgZ290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKSAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHM7CiAu
b3BDcmVhdGVBcmd1bWVudHNEb25lOgotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goMikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG9wX2NyZWF0ZV90aGlzIHRoaXMocikgcHJvdG8o
cikKKy8vCisvLyAgIEFsbG9jYXRlIGFuIG9iamVjdCBhcyAndGhpcycsIGZvciB1c2UgaW4gY29u
c3RydWN0aW9uLgorLy8gICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgogCiBfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MAotICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MgotICAgIGJ0cHogdDIsIC5vcENy
ZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoaXM8dDA+ID0gY2ZyLkNhbGxlZTsKKyAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIgICAgICAgLy8gaW5oZXJpdG9yPHQyPiA9
IHRoaXM8dDA+LmNhY2hlZEluaGVyaXRvcklEOworICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNT
bG93ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoaW5oZXJpdG9yID09IDApIGdvdG8g
LnNsb3c7CisgICAgLy8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwganNGaW5hbE9iamVjdC5jbGFzcywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRo
aXNTbG93KTsKICAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdykKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQotICAg
IHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBsb2FkaXMgOFtQ
QiwgUEMsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpc0lEPHQxPiA9
IG9wZXJhbmQ8dGhpc1JlZ0lkPjsKKyAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW3RoaXNJRDx0MT5dID0gdGhpczx0MD47CisgICAg
ZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykgICAgICAgICAgLy8gY2FsbCBz
bG93X3BhdGhfY3JlYXRlX3RoaXM7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRf
b3BfY29udmVydF90aGlzOgpAQCAtMjcxLDkgKzM1NiwxNiBAQCBfbGxpbnRfb3BfbW92OgogICAg
IGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwg
dDIpCiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwgOF0KKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIg
KioqIFNUT1JFIGNmclt0MCAlbGQgKiA4ID09PiAlbGRdID0gdDIgJXBcbiIsIHIwLnUuaSwgcjAu
dS5pICogOCwgcjIudS52cCk7CiAgICAgZGlzcGF0Y2goMykKIAogCisvLyBieXRlY29kZTogbm90
IGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3Jj
cmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0ZXIgc3JjIChj
b252ZXJ0ZWQgdG8KKy8vICAgYm9vbGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0
ZXIgZHN0LgorCiBfbGxpbnRfb3Bfbm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2Fk
aXMgMTZbUEIsIFBDLCA4XSwgdDAKQEAgLTM1MywyNSArNDQ1LDQ0IEBAIF9sbGludF9vcF9uZXFf
bnVsbDoKIG1hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGF0aCkKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQwCisgICAgbWxhbUR1
bXAgdDAKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDIKKyAgICBtbGFtRHVtcCB0MgorICAg
IG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVxIEJFRk9SRSBsb2FkaW5nIHQxXG4iKTsKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJp
Y3RFcSBBRlRFUiBsb2FkaW5nIHQxXG4iKTsKKyAgICBtbGFtRHVtcCB0MQorICAgIG1sYW1EbyAv
LyBwcmludGYoInN0cmljdEVxIEJFRk9SRSBsb2FkaW5nIHQwXG4iKTsKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MCkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSBBRlRF
UiBsb2FkaW5nIHQwXG4iKTsKKyAgICBtbGFtRHVtcCB0MAogICAgIG1vdmUgdDAsIHQyCiAgICAg
b3JwIHQxLCB0MgorICAgIG1sYW1EdW1wIHQyCiAgICAgYnRweiB0MiwgdGFnTWFzaywgLnNsb3cK
KyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSAuUzEgdDIgJiB0YWdNYXNrICE9IDBcbiIp
OwogICAgIGJwYWVxIHQwLCB0YWdUeXBlTnVtYmVyLCAubGVmdE9LCisgICAgbWxhbURvIC8vIHBy
aW50Zigic3RyaWN0RXEgLlMyIHQwIDwgdGFnVHlwZU51bWJlclxuIik7CiAgICAgYnRwbnogdDAs
IHRhZ1R5cGVOdW1iZXIsIC5zbG93CisgICAgbWxhbURvIC8vIHByaW50Zigic3RyaWN0RXEgLlMz
IHQwICYgdGFnVHlwZU51bWJlciA9PSAwXG4iKTsKIC5sZWZ0T0s6CisgICAgbWxhbURvIC8vIHBy
aW50Zigic3RyaWN0RXEgLmxlZnRPS1xuIik7CiAgICAgYnBhZXEgdDEsIHRhZ1R5cGVOdW1iZXIs
IC5yaWdodE9LCiAgICAgYnRwbnogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAucmlnaHRPSzoK
KyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSAucmlnaHRPS1xuIik7CisgICAgbWxhbUR1
bXAgcjAKKyAgICBtbGFtRHVtcCByMQogICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDAp
CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAgICBtbGFtRHVtcCB0MQogICAgIG9ycCBW
YWx1ZUZhbHNlLCB0MAorICAgIG1sYW1EdW1wIHQwCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwg
OF0KICAgICBkaXNwYXRjaCg0KQogCiAuc2xvdzoKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJp
Y3RFcSAuc2xvd1xuIik7CiAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQogICAgIGRpc3BhdGNo
KDQpCiBlbmQKQEAgLTQ4Niw1NSArNTk3LDc1IEBAIF9sbGludF9vcF9uZWdhdGU6CiAKIAogbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9w
ZXJhdGlvbiwgc2xvd1BhdGgpCi0gICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQwCi0gICAgbG9h
ZGlzIDE2W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgYnBiIHQwLCB0YWdUeXBl
TnVtYmVyLCAub3AxTm90SW50Ci0gICAgYnBiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AyTm90SW50
Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKLSAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3Rv
cmUodDEsIHQwLCAuc2xvdywgdDIpCi0gICAgZGlzcGF0Y2goNSkKKyAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgKioqIG1sYW0gYmluYXJ5T3BDdXN0b21TdG9yZVxuIik7CisgICAgbG9hZGlzIDI0W1BC
LCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0MD4gPSBv
cGVyYW5kc1tzcmMyUmVnSWRdOworICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDI+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSkgICAgICAgICAgICAgICAgICAgICAg
Ly8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDA+ID09PiBzcmMyPHQxPik7CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApICAgICAgICAgICAgICAgICAgICAgIC8vIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc3JjMUlkPHQyPiA9PT4gc3JjMTx0MD4pOworICAgIG1sYW1E
byAvLyBwcmludGYoIiBtbGFtIDo6IHNyYzE8dDA+ICVwIHNyYzI8dDE+ICVwXG4iLCByMC51LnZw
LCByMS51LnZwKTsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxhbSA6OiBiaW5hcnlPcEN1c3Rv
bVN0b3JlIDEgfCB0YWdUeXBlTnVtYmVyICVwXG4iLCB0YWdUeXBlTnVtYmVyLnUudnApOworICAg
IGJwYiB0MCwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludCAgICAgICAgICAgICAgICAgICAvLyBp
ZiAoc3JjMTx0MD4gaXMgTk9UIEludCkgZ290byAub3AxTm90SW50OworICAgIGJwYiB0MSwgdGFn
VHlwZU51bWJlciwgLm9wMk5vdEludCAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4g
aXMgTk9UIEludCkgZ290byAub3AyTm90SW50OworCisgICAgLy8gb3AxIGFuZCBvcDIgYXJlIGlu
dDMyOiBkbyBmYXN0IGludDMyIG9wZXJhdGlvbiwgYW5kIGVuZC4KKyAgICBsb2FkaXMgOFtQQiwg
UEMsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3Bl
cmFuZHNbZHN0UmVnSWRdOworICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MSwgdDAsIC5z
bG93LCB0MikgICAgICAgICAvLyB0MiA9IHQxIG9wZXJhdG9yIHQwOworICAgIG1sYW1EbyAvLyBw
cmludGYoIiAqKiogaW50IG9wIHIxID0gJWxkICglcCkgKyByMCAgJWxkICglcCkgPT0+IHIyICVs
ZCAoJXApXG4iLCByMS51LmksIHIxLnUudnAsIHIwLnUuaSwgcjAudS52cCwgcjIudS5pLCByMi51
LnZwKTsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3AxTm90SW50OgogICAgICMgRmlyc3Qg
b3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3Vs
ZCBiZSBhbnl0aGluZy4KLSAgICBidHB6IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwotICAgIGJw
YWVxIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AxTm90SW50T3AySW50Ci0gICAgYnRweiB0MSwgdGFn
VHlwZU51bWJlciwgLnNsb3cKLSAgICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0
MSwgZnQxCisgICAgLy8gb3AxIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgb3AyIGNvdWxkIGJl
IGFueXRoaW5nLgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLm9wMU5vdEludDpcbiIpOwor
ICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogYnRweiByMCA9ICVsZCAoJXApLCB0YWdUeXBlTnVt
YmVyICVsZCAoJXApOlxuIiwgcjAudS5pLCByMC51LnZwLCB0YWdUeXBlTnVtYmVyLnUuaSwgdGFn
VHlwZU51bWJlci51LnZwKTsKKyAgICBidHB6IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzE8dDA+IGlzIGNvbXBsZXggdHlwZSkgZ290byAu
c2xvdzsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGJwYWVxIHIxID0gJWxkICglcCksIHRh
Z1R5cGVOdW1iZXIgJWxkICglcCk6XG4iLCByMS51LmksIHIxLnUudnAsIHRhZ1R5cGVOdW1iZXIu
dS5pLCB0YWdUeXBlTnVtYmVyLnUudnApOworICAgIGJwYWVxIHQxLCB0YWdUeXBlTnVtYmVyLCAu
b3AxTm90SW50T3AySW50ICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4gPj0gdGFnVHlwZU51bWJl
cikgZ290byAub3AxTm90SW50T3AySW50OworICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5z
bG93ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4gaXMgY29tcGxleCB0eXBl
KSBnb3RvIC5zbG93OworICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHNyYzE8dDA+IGlzIGEg
ZG91YmxlLCBhbmQgc3JjMjx0MT4gaXMgYSBkb3VibGU6CisgICAgYWRkcCB0YWdUeXBlTnVtYmVy
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHQxICs9IHRhZ1R5cGVOdW1iZXI7
CisgICAgZnAyZCB0MSwgZnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENvbnZlcnQgc3JjPHQxPiB0byBhIGRvdWJsZTxmdDE+OwogICAgIGptcCAub3AxTm90SW50
UmVhZHkKIC5vcDFOb3RJbnRPcDJJbnQ6Ci0gICAgY2kyZCB0MSwgZnQxCisgICAgbWxhbURvIC8v
IHByaW50ZigiICoqKiAub3AxTm90SW50T3AySW50OlxuIik7CisgICAgLy8gSWYgd2UgZ2V0IGhl
cmUsIHRoZW4gc3JjMTx0MD4gbXVzdCBiZSBhIGRvdWJsZSAob3AxIG5vdCBpbnQsIGFuZCBub3Qg
Y29tcGxleCB0eXBlKToKKyAgICBjaTJkIHQxLCBmdDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29udmVydCBzcmMyPHQxPiB0byBhIGRvdWJsZTxmdDE+OwogLm9w
MU5vdEludFJlYWR5OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLm9wMU5vdEludFJlYWR5
OlxuIik7CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKICAgICBhZGRwIHRhZ1R5cGVOdW1i
ZXIsIHQwCi0gICAgZnAyZCB0MCwgZnQwCisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiByMCA9
ICVsZCAoJXApOlxuIiwgcjAudS5pLCByMC51LnZwKTsKKyAgICBmcDJkIHQwLCBmdDAgIyBtbGFt
IEZJWE1FCisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBkMCA9ICVlLCBkMSA9ICVlXG4iLCBy
MC51LmksIHIxLnUudnApOwogICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBmZDJw
IGZ0MCwgdDAKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGQwID0gJWUsIGQxID0gJWVcbiIs
IHIwLnUuaSwgcjEudS52cCk7CisgICAgZmQycCBmdDAsIHQwICMgbWxhbSBGSVhNRQogICAgIHN1
YnAgdGFnVHlwZU51bWJlciwgdDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRp
c3BhdGNoKDUpCiAKIC5vcDJOb3RJbnQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAub3Ay
Tm90SW50OlxuIik7CiAgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0
aGUgc2Vjb25kIGlzIGRlZmluaXRlbHkgbm90LgogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQy
CiAgICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKICAgICBjaTJkIHQwLCBmdDAKICAg
ICBhZGRwIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgZnAyZCB0MSwgZnQxCisgICAgZnAyZCB0MSwg
ZnQxICMgbWxhbSBGSVhNRQogICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAgICBmZDJw
IGZ0MCwgdDAKKyAgICBmZDJwIGZ0MCwgdDAgIyBtbGFtIEZJWE1FCiAgICAgc3VicCB0YWdUeXBl
TnVtYmVyLCB0MAogICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goNSkK
IAogLnNsb3c6CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAuc2xvdzpcbiIpOwogICAgIGNh
bGxTbG93UGF0aChzbG93UGF0aCkKICAgICBkaXNwYXRjaCg1KQogZW5kCiAKIG1hY3JvIGJpbmFy
eU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAgbWxh
bURvIC8vIHByaW50ZigiIG1sYW0gYmluYXJ5T3BcbiIpOwogICAgIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCiAgICAgICAgICAg
ICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQpAQCAtNTQ2LDYgKzY3Nyw3IEBA
IGVuZAogCiBfbGxpbnRfb3BfYWRkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBtbGFtRG8g
Ly8gcHJpbnRmKCIgbWxhbSBvcF9hZGRcbiIpOwogICAgIGJpbmFyeU9wKAogICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCiAgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCkBAIC01ODQsMTUg
KzcxNiwzMCBAQCBfbGxpbnRfb3BfZGl2OgogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQogICAgICAgICAgICAgIyBBc3N1bWUgdDMgaXMgc2NyYXRjaGFibGUuCiAgICAg
ICAgICAgICBidGl6IGxlZnQsIHNsb3cKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAq
KiogbGVmdCBpcyBOT1QgMFxuIik7CiAgICAgICAgICAgICBiaW5lcSBsZWZ0LCAtMSwgLm5vdE5l
ZzJUd29UaGUzMURpdkJ5TmVnMQorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBs
ZWZ0IGlzIC0xXG4iKTsKICAgICAgICAgICAgIGJpZXEgcmlnaHQsIC0yMTQ3NDgzNjQ4LCAuc2xv
dworICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiByaWdodCBpcyBOT1QgLTIxNDc0
ODM2NDggWyVwXVxuIiwgKHZvaWQqKS0yMTQ3NDgzNjQ4KTsKKyAgICAgICAgICAgIG1sYW1EdW1w
IHJpZ2h0CiAgICAgICAgIC5ub3ROZWcyVHdvVGhlMzFEaXZCeU5lZzE6CisgICAgICAgICAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgKioqIC5ub3ROZWcyVHdvVGhlMzFEaXZCeU5lZzE6XG4iKTsKICAg
ICAgICAgICAgIGJ0aW56IHJpZ2h0LCAuaW50T0sKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogcmlnaHQgaXMgMFxuIik7CiAgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cK
KyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogbGVmdCA+PSAwXG4iKTsKICAgICAg
ICAgLmludE9LOgorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAuaW50T0s6XG4i
KTsKICAgICAgICAgICAgIG1vdmUgbGVmdCwgdDMKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmlu
dGYoIiAqKiogbGVmdCBpczpcbiIpOworICAgICAgICAgICAgbWxhbUR1bXAgdDMKICAgICAgICAg
ICAgIG1vdmUgcmlnaHQsIHQwCisgICAgICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIHJp
Z2h0IGlzOlxuIik7CisgICAgICAgICAgICBtbGFtRHVtcCB0MAogICAgICAgICAgICAgY2RxaQor
ICAgICAgICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAuY2RxaTpcbiIpOworICAgICAgICAg
ICAgbWxhbUR1bXAgdDAKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogZG9pbmcg
ZGl2OlxuIik7CiAgICAgICAgICAgICBpZGl2aSB0MwogICAgICAgICAgICAgYnRpbnogdDEsIHNs
b3cKICAgICAgICAgICAgIG9ycCB0YWdUeXBlTnVtYmVyLCB0MApAQCAtODA2LDYgKzk1Myw4IEBA
IG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICAjIG1sYW1EbyAvLyBtbGFtQnJl
YWsoInJlc29sdmVHbG9iYWwiLDAsMCk7CisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgICBtbGFt
IDo6IHJlc29sdmVHbG9iYWwoKXwgZ28tPnN0cnVjdHVyZTx0MT4gJXAsIHBjIGNhY2hlIHN0cnVj
dHVyZSA8JXA+ICVwXG4iLCByMS51LnZwLCByQmFzZVBDLnUuaThwICsgclBDLnUuaSAqIDggKyAy
NCwgKih2b2lkKiopKHJCYXNlUEMudS5pOHAgKyByUEMudS5pICogOCArIDI0KSk7CiAgICAgYnBu
ZXEgdDEsIDI0W1BCLCBQQywgOF0sIHNsb3cKICAgICBsb2FkaXMgMzJbUEIsIFBDLCA4XSwgdDEK
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCkBAIC05NjMsMTMg
KzExMTIsMTggQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgIyB0byB0
YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0
aCwgd2hpY2ggaXMgd2hhdAogICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4K
ICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDAKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsb2Fk
aXMgMTZbUEIsIFBDLCA4XSwgdDAgPT0+IHQwICVsZCBbJXBdXG4iLCByMC51LmksIHIwLnUudnAp
OwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCisgICAgbWxhbURvIC8vIHByaW50ZigibG9h
ZGlzIDMyW1BCLCBQQywgOF0sIHQxID09PiB0MSAlbGQgWyVwXVxuIiwgcjEudS5pLCByMS51LnZw
KTsKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93
KQorICAgIG1sYW1EbyAvLyBwcmludGYoImxvYWRWYXIgdDAgPT0+IHQzICVsZCBbJXBdXG4iLCBy
NC51LmksIHI0LnUudnApOwogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MgorICAgIG1sYW1E
byAvLyBwcmludGYoIiAqKiogYWJvdXQgdG8gY2FsbCBnZXRQcm9wZXJ0eVN0b3JhZ2U6XG4iKTsK
ICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAg
ICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIG1sYW1EbyAv
LyBwcmludGYoIiAqKiogY29udGludWF0aW9uOiB0MyAlcCB0MSAlcFxuIiwgcjQudS52cCwgcjEu
dS52cCk7CiAgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93CiAgICAgICAgICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQogICAgICAg
ICAgICAgbG9hZHAgW3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCkBAIC05ODUsNiArMTEz
OSw3IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogZW5kCiAKIF9sbGludF9v
cF9nZXRfYnlfaWQ6CisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBsbGludF9vcF9nZXRfYnlf
aWRcbiIpOwogICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIApAQCAtMTI5MywxMCAr
MTQ0OCwxMCBAQCBtYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wCiAub3Ax
Tm90SW50T3AyTm90SW50OgogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAgICAg
YWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorICAgIGZwMmQgdDEsIGZ0
MSAjIG1sYW0gRklYTUUKIC5vcDFOb3RJbnRSZWFkeToKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIs
IHQwCi0gICAgZnAyZCB0MCwgZnQwCisgICAgZnAyZCB0MCwgZnQwICMgbWxhbSBGSVhNRQogICAg
IGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQogICAgIGRpc3BhdGNoKDQpCiAK
QEAgLTEzMDQsNyArMTQ1OSw3IEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJs
ZUNvbXAKICAgICBjaTJkIHQwLCBmdDAKICAgICBidHB6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xv
dwogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBmcDJkIHQxLCBmdDEKKyAgICBmcDJk
IHQxLCBmdDEgIyBtbGFtIEZJWE1FCiAgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBU
YXJnZXQpCiAgICAgZGlzcGF0Y2goNCkKIApAQCAtMTMyMiwxMyArMTQ3NywxNiBAQCBfbGxpbnRf
b3Bfc3dpdGNoX2ltbToKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBsb2FkaXMg
OFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQorICAg
IG1sYW1EdW1wIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFi
bGUsIHQzICAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKICAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYnBiIHQxLCB0
YWdUeXBlTnVtYmVyLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICAjIG1sYW0gbWxhbUJyZWFrCiAg
ICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQxCisgICAgbWxhbUR1bXAgdDEKICAg
ICBiaWFlcSB0MSwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9m
ZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZHAgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKICAgICBsb2Fk
aXMgW3QzLCB0MSwgNF0sIHQxCkBAIC0xMzk0LDI2ICsxNTUyLDQ1IEBAIF9sbGludF9vcF9uZXdf
ZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxs
TGlua0luZm8pCisgICAgaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxKU0Z1bmN0aW9uIExMSW50
Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtjYWxsTGlua0luZm9dICAgICAvLyBjYWxs
IGNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICBlbHNlCisgICAgICAgIGNhbGwg
TExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10gICAgIC8v
IGNhbGwgY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0OworICAgICAgICAvLyBSZWxvYWQg
dGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKKyAg
ICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKKyAgICAgICAg
ZGlzcGF0Y2hBZnRlckNhbGwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGlzcGF0Y2hBZnRlckNhbGwoKTsKKyAgICBlbmQKK2VuZAorCisKIG1hY3JvIGRvQ2Fs
bChzbG93UGF0aCkKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIGxvYWRwIDMyW1BC
LCBQQywgOF0sIHQxCi0gICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQy
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDMpCi0gICAgYnBuZXEgdDMsIHQyLCAu
b3BDYWxsU2xvdworICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGZ1bmNJZDx0MD4gPSBwY1sxXTsKKyAgICBsb2FkcCAzMltQ
QiwgUEMsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
TGlua0luZm88dDE+ID0gcGNbNF07CisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZVt0MV0sIHQyICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVlPHQyPiA9IGNhbGxMaW5rSW5m
bzx0MT4uY2FsbGVlOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWQoZnVuY0lkPHQwPiA9PT4gZnVuYzx0Mz4sIC4u
Lik7CisgICAgYnBuZXEgdDMsIHQyLCAub3BDYWxsU2xvdyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKGZ1bmM8dDM+ICE9IGNhbGxlZTx0Mj4gaS5lLiBpc0J5dGVjb2Rl
KCk/KSBnb3RvIC5zbG93OwogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MwotICAgIGFkZGkg
NiwgUEMKLSAgICBsc2hpZnRpIDMsIHQzCi0gICAgYWRkcCBjZnIsIHQzCi0gICAgbG9hZHAgSlNG
dW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKLSAgICBzdG9yZXAgdDIsIENhbGxlZVt0M10K
LSAgICBzdG9yZXAgdDAsIFNjb3BlQ2hhaW5bdDNdCi0gICAgbG9hZGlzIDE2IC0gNDhbUEIsIFBD
LCA4XSwgdDIKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQot
ICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQotICAgIHN0b3JlaSB0MiwgQXJndW1lbnRD
b3VudCArIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgbW92ZSB0MywgY2ZyCi0gICAgY2FsbCBMTElu
dENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCi0gICAgZGlzcGF0Y2hBZnRlckNh
bGwoKQorICAgIGFkZGkgNiwgUEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFBvaW50IFBDIHRvIHRoZSByZXR1cm4gYWRkcmVzcy4KKworICAgIC8v
IG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9IHNpemVv
ZiBjdXJyZW50IGZyYW1lOworICAgIGxzaGlmdGkgMywgdDMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBvZmZzZXQ8dDM+IDw8IDM7
CisgICAgYWRkcCBjZnIsIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbmV3RnJhbWU8dDM+ID0gb2Zmc2V0TXQzPiArIGNmcjsKKworICAgIC8vIElu
aXRpYWxpemUgdGhlIG5ld0ZyYW1lOgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFp
blt0Ml0sIHQwICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNhbGxlZTx0Mj4u
c2NvcGVDaGFpbjsKKyAgICBzdG9yZXAgdDIsIENhbGxlZVt0M10gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVlID0gY2FsbGVlPHQyPjsK
KyAgICBzdG9yZXAgdDAsIFNjb3BlQ2hhaW5bdDNdICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBuZXdGcmFtZTx0MD4uU2NvcGVDaGFpbiA9IHNjb3BlPHQwPjsKKyAgICBsb2Fk
aXMgMTYgLSA0OFtQQiwgUEMsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBudW1BcmdzPHQyPiA9IC4uLjsKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXSAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBw
YzsgLy8gU3Rhc2ggdGhlIHJldHVybiBQQy4KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0
M10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQ2FsbGVy
RnJhbWUgPSBjZnI7CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNl
dFt0M10gICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkFyZ3VtZW50Q291bnQuUGF5bG9h
ZCA9IG51bUFyZ3M8dDI+OworICAgIG1vdmUgdDMsIGNmciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKKworICAgIC8v
IENhbGwgdGhlIHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0aG9kOgorICAgICMgbWxh
bSBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0gICAgICAgIC8v
IGNhbGwgY2FsbExpbmtJbmZvPHQxPi5tYWNoaW5lQ29kZVRhcmdldDsKKyAgICAjIG1sYW0gZGlz
cGF0Y2hBZnRlckNhbGwoKQorICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0MSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2FsbFRhcmdldEZ1bmN0aW9uKGNhbGxMaW5rSW5mbzx0MT4p
OwogCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwoNiwgc2xvd1BhdGgpCkBAIC0x
NDU0LDYgKzE2MzEsNyBAQCBfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgogICAgIGxvYWRpcyA4
W1BCLCBQQywgOF0sIHQyCiAgICAgbG9hZHAgMTZbUEIsIFBDLCA4XSwgdDMKICAgICBzdG9yZXAg
dDAsIFtjZnIsIHQyLCA4XQorICAgIG1sYW1EdW1wIHQwCiAgICAgdmFsdWVQcm9maWxlKHQwLCB0
MykKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1ODQsMjMgKzE3
NjIsNTkgQEAgX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CiAKIG1hY3JvIG5h
dGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgIHN0b3Jl
cCAwLCBDb2RlQmxvY2tbY2ZyXQotICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEg
KyA4W3NwXSwgdDAKLSAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFtZVt0
MF0KLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MAotICAgIGxvYWRwIFNjb3BlQ2hhaW5b
dDBdLCB0MQotICAgIHN0b3JlcCB0MSwgU2NvcGVDaGFpbltjZnJdCi0gICAgcGVlayAwLCB0MQot
ICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXQotICAgIG1vdmUgY2ZyLCB0NSAgIyB0NSA9IHJk
aQotICAgIHN1YnAgMTYgLSA4LCBzcAotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0NCAjIHQ0ID0g
cnNpCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Q0XSwgdDEKLSAgICBtb3Zl
IHQwLCBjZnIgIyBSZXN0b3JlIGNmciB0byBhdm9pZCBsb2FkaW5nIGZyb20gc3RhY2sKLSAgICBj
YWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQotICAgIGFkZHAgMTYgLSA4LCBzcAot
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA4W3NwXSwgdDMKKworICAgIGlm
IFg4Nl82NCAjIG1sYW0KKyAgICAgICAgLy8gU2V0IGdsb2JhbERhdGEudG9wQ2FsbEZyYW1lID0g
Y3VycmVudEZyYW1lOworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhICsg
OFtzcF0sIHQwICAgICAvLyBnbG9iYWxEYXRhPHQwPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2Jh
bERhdGE7CisgICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3Qw
XSAgICAgIC8vIGdsb2JhbERhdGE8dDA+LnRvcENhbGxGcmFtZSA9IGNmcjsKKworICAgICAgICBs
b2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsZXJG
cmFtZTx0MD4gPSBjZnIuQ2FsbGVyRnJhbWU7CisgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bdDBd
LCB0MSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQxPiA9IGNhbGxlckZyYW1lPHQw
Pi5TY29wZUNoYWluOworICAgICAgICBzdG9yZXAgdDEsIFNjb3BlQ2hhaW5bY2ZyXSAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIuU2NvcGVDaGFpbiA9IHNjb3BlPHQxPjsKKworICAgICAgICBw
ZWVrIDAsIHQxCisgICAgICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0MT47CisgICAgICAgIG1vdmUgY2ZyLCB0NSAg
IyB0NSA9IHJkaQorICAgICAgICBzdWJwIDE2IC0gOCwgc3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBSZXNlcnZlIHN0YWNrIHNwYWNlLgorICAgICAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdDQgIyB0NCA9IHJzaSAgICAgICAgICAgICAgICAvLyBjYWxsZWU8dDQ+ID0gY2ZyLkNh
bGxlZTsKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Q0XSwgdDEgICAg
ICAgICAgLy8gZXhlY3V0YWJsZTx0MT4gPSBjYWxlZTx0ND4uZXhlY3V0YWJsZTsKKyAgICAgICAg
bW92ZSB0MCwgY2ZyICMgUmVzdG9yZSBjZnIgdG8gYXZvaWQgbG9hZGluZyBmcm9tIHN0YWNrICAv
LyBjZnIgPSBjYWxsZXJGcmFtZTx0MD47CisgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRv
RnVuY3Rpb25bdDFdICAgICAgICAgICAgIC8vIENhbGwgdGhlIGV4ZWN1dGFibGU7CisgICAgICAg
IGFkZHAgMTYgLSA4LCBzcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbGVh
c2Ugc3RhY2sgc3BhY2UuCisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEg
KyA4W3NwXSwgdDMgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xv
YmFsRGF0YTsKKworICAgIGVsc2lmIEFSTXY3CisgICAgICAgIGVycm9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisKKyAg
ICBlbHNpZiBDX0xPT1AKKyAgICAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2FsbGVyRnJhbWU8dDA+ID0gY2ZyLkNhbGxlckZyYW1lOworICAg
ICAgICBsb2FkcCBTY29wZUNoYWluW3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
Y29wZTx0MT4gPSBjYWxsZXJGcmFtZTx0MD4uU2NvcGVDaGFpbjsKKyAgICAgICAgc3RvcmVwIHQx
LCBTY29wZUNoYWluW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4g
PSBzY29wZTx0MT47CisKKyAgICAgICAgLy8gU2V0IGdsb2JhbERhdGEudG9wQ2FsbEZyYW1lID0g
Y3VycmVudEZyYW1lOworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDMgICAgICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IGppdFN0YWNrRnJhbWU8c3A+Lmdsb2Jh
bERhdGE7CisgICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3Qz
XSAgICAgIC8vIGdsb2JhbERhdGE8dDM+LnRvcENhbGxGcmFtZSA9IGNmcjsKKworICAgICAgICBt
b3ZlIHQwLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZlZENh
bGxlckZyYW1lPHQyPiA9IGNhbGxlckZyYW1lPHQwPjsKKyAgICAgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKHQzKSAgICAgICAgICAgICAgLy8gc2F2ZWRSZXR1cm5QQzx0Mz4gPSBy
ZXR1cm5QQzsKKyAgICAgICAgc3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQzPjsKKyAgICAgICAgLy8gUGFzcyBjdXJyZW50
RnJhbWUgYXMgYW4gYXJnIHRvIHRoZSB0YXJnZXQ6CisgICAgICAgIG1vdmUgY2ZyLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzA6IGFyZzA8dDA+ID0gY2ZyOwor
ICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHIwID0gY3VycmVudEZyYW1lLCBjZnIg
PSBvbGRGcmFtZTogV2h5Pz8/CisgICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGpzZnVuYzx0MT4gPSBjZnIuQ2FsbGVlOworICAgICAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MSAgICAgICAgICAvLyBhcmcxOiBl
eGVjdXRhYmxlPHQxPiA9IGpzZnVuYzx0MT4uZXhlY3V0YWJsZTsKKyAgICAgICAgbW92ZSB0Miwg
Y2ZyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gc2F2ZWRDYWxs
ZXJGcmFtZTx0Mj47CisgICAgICAgIGN4eENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVu
Y3Rpb25bdDFdICAgIC8vIGNhbGwgZXhlY3V0YWJsZTx0MT4uQ2FsbE9yQ29uc3RydWN0OworCisg
ICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQzKSAgICAgICAgICAgIC8v
IHJldHVyblBDID0gc2F2ZWRSZXR1cm5QQzx0Mz47CisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJh
bWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3Rh
Y2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5k
CisKICAgICBidHBueiBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvblt0M10sIC5leGNlcHRpb24KICAg
ICByZXQKKyAgICAKIC5leGNlcHRpb246CiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKHQxKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTEwLDIxICsxMTAs
MzYgQEAgZW5kCiAKICMgU29tZSBjb21tb24gdXRpbGl0aWVzLgogbWFjcm8gY3Jhc2goKQotICAg
IHN0b3JlaSB0MCwgMHhiYmFkYmVlZltdCi0gICAgbW92ZSAwLCB0MAotICAgIGNhbGwgdDAKKyAg
ICAvLyBtYWNybyBjcmFzaCgpIHsKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgY3h4Q3Jhc2gKKyAg
ICBlbHNlCisgICAgICAgIHN0b3JlaSB0MCwgMHhiYmFkYmVlZltdCisgICAgICAgIG1vdmUgMCwg
dDAKKyAgICAgICAgY2FsbCB0MAorICAgIGVuZAorICAgIC8vIH0gRU5EIGNyYXNoLgogZW5kCiAK
IG1hY3JvIGFzc2VydChhc3NlcnRpb24pCiAgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAvLyBt
YWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICAgICAgIGFzc2VydGlvbigub2spCiAgICAgICAg
IGNyYXNoKCkKICAgICAub2s6CisgICAgLy8gfSBFTkQgYXNzZXJ0LgogICAgIGVuZAogZW5kCiAK
KwogbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0
ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4KKyAgICBpZiBDX0xPT1AKKyAgICAg
ICAgIyBJbiBvdXIgY2FzZSwgd2UncmUgb25seSBwcmVzZXJ2aW5nIHRoZSBieXRlY29kZSB2UEMu
IAorICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgICAgIG1sYW1EbyAv
LyBwcmludGYoIiAgICoqKiBtbGFtIDo6IEdldHRpbmcgUmV0dXJuUEMgJXAgKioqXG4iLCByUmV0
VlBDLnUudnApOworICAgICAgICBtbGFtRG8gLy8gQVNTRVJUKHJSZXRWUEMudS52cCAhPSAwKTsK
KyAgICBlbHNpZiBBUk12NwogICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCiAg
ICAgZWxzaWYgWDg2IG9yIFg4Nl82NAogICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgpA
QCAtMTM0LDcgKzE0OSwxMyBAQCBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
ZGVzCiBlbmQKIAogbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNl
UmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcKKyAgICAjIG1sYW0gQkVHSU4gICAgCisgICAgaWYgQ19M
T09QCisgICAgICAgICMgSW4gb3VyIGNhc2UsIHdlJ3JlIG9ubHkgcmVzdG9yaW5nIHRoZSBieXRl
Y29kZSB2UEMuIAorICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgICAgICBtbGFt
RG8gLy8gcHJpbnRmKCIgICAqKiogbWxhbSA6OiBTZXR0aW5nIFJldHVyblBDICVwICoqKlxuIiwg
clJldFZQQy51LnZwKTsKKyAgICAgICAgbWxhbURvIC8vIEFTU0VSVChyUmV0VlBDLnUudnAgIT0g
MCk7CisgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKICAg
ICBlbHNpZiBYODYgb3IgWDg2XzY0CiAgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKQEAgLTE1
NCw3ICsxNzUsMTMgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNsb3dQYXRoKQog
ICAgICAgICBhZHZhbmNlLAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgbWFjcm8gKGNhbGxl
ZSkKLSAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBpZiBDX0xPT1AKKyAgICAg
ICAgICAgICAgICBjeHhDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAv
LyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0
aGVyZToKKyAgICAgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAgZ290byAq
cGM7CiAgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAgICAgIGVuZCkKIGVuZApA
QCAtMTc3LDEzICsyMDQsMTQgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
IGVuZAogCiBtYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKLSAgICBhc3NlcnQobWFjcm8g
KG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorICAg
IGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCBvayBlbmQpIC8vIGFzc2VydChpbmRleDxhMD4gPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCk7CiBlbmQKIAogbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJl
Z2lzdGVyKQotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIG1sYW1CcmVhaworICAgIGxvYWRwIENhbGxl
ZVtjZnJdLCB0YXJnZXRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVlPHJl
Zz4gPSBjZnIuQ2FsbGVlOworICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyIC8vZXhlY3V0YWJsZTxyZWc+ID0gSlNGdW5jdGlv
bjxyZWc+LmV4ZWN1dGFibGU7CisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlciAvLyBjb2RlQmxvY2s8
cmVnPiA9IEZ1bmN0aW9uRXhlY3V0YWJsZTxyZWc+LmNvZGVCbG9ja0ZvckNhbGw7IAogZW5kCiAK
IG1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVy
KQpAQCAtMjA0LDMyICsyMzIsNDkgQEAgbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIo
c291cmNlUgogICAgICMgTm90aGluZyB0byBkbyEKIGVuZAogCisKICMgRG8gdGhlIGJhcmUgbWlu
aW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUg
Q29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1Iu
CiBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xv
d1BhdGgsIHRyYWNlU2xvd1BhdGgpCi0gICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHQyKQorICAgIG1sYW1EbyAvLyBwcmludGYoIlxuXG4gICA9PT09PT09PT09PT09PT09PT09PT09
PT09PSBcbiAgICoqKiBtbGFtIDo6IEluIHByb2xvZ3VlICoqKlxuIik7CisgICAgcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKSAgICAgICAgICAgICAgICAgIC8vIGdldCByZXR1cm5Q
Qzx0Mj47CiAgICAgCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdl
IHNob3VsZCBPU1IuCi0gICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgc3RvcmVwIHQy
LCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5Q
QyA9IDx0Mj47CiAgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKICAgICAgICAgY2FsbFNsb3dQYXRo
KHRyYWNlU2xvd1BhdGgpCiAgICAgZW5kCi0gICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGNv
ZGVCbG9ja0dldHRlcih0MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQg
Y29kZUJsb2NrPHQxPjsKICAgICBpZiBKSVRfRU5BQkxFRAogICAgICAgICBiYWRkaXMgNSwgQ29k
ZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBFeGVjdXRpb25Db3VudGVyOjptX2NvdW50
ZXJbdDFdLCAuY29udGludWUKICAgICAgICAgY0NhbGwyKG9zclNsb3dQYXRoLCBjZnIsIFBDKQor
CisgICAgICAgIG1sYW1EbyAvLyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAq
KiogcHJvbG9ndWUgKHVwZGF0ZSBmcmFtZSkiKTsKKyAgICAgICAgIyBVcGRhdGUgdGhlIGN1cnJl
bnRGcmFtZVBvaW50ZXI6CiAgICAgICAgIG1vdmUgdDEsIGNmcgorCisgICAgICAgICMgdDAgbXVz
dCBlaXRoZXIgYmUgMCBvciBwb2ludHMgdG8gZXhlY3V0YWJsZSBjb2RlIGUuZy4gSklUdGVkIGNv
ZGUuCisgICAgICAgICMgSWYgaXQgaXMgMCwgdGhlbiB3ZSBkb24ndCBoYXZlIGEgbmF0aXZlIGNv
ZGUgdGFyZ2V0IHRvIGV4ZWN1dGUuCisgICAgICAgICMgR28gcmVjb3ZlciBvdXIgc3RhdGUgYW5k
IHN0YXJ0IGludGVycHJldGluZyB0aGlzIGZ1bmN0aW9uLgogICAgICAgICBidHB6IHQwLCAucmVj
b3ZlcgorCisgICAgICAgICMgSWYgaXQgaXMgbm90IDAsIHRoZW4sIHdlIGhhdmUgYSBuYXRpdmUg
ZnVuY3Rpb24gdG8gY2FsbCAoSklUdGVkIG9yCisgICAgICAgICMgb3RoZXJ3aXNlKS4gRG8gYSB0
YWlsY2FsbCB0byB0aGUgdGFyZ2V0IGNvZGUuCiAgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0s
IHQyCiAgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQogICAgICAg
ICBqbXAgdDAKKworICAgICAgICAjIElmIHdlIGdldCBoZXJlLCB0aGVuIHRoZSBvc3IgbG9naWMg
aGFzIGRldGVybWluZWQgdGhhdCB0aGVyZSBpc24ndCBhbnkKKyAgICAgICAgIyBKSVR0ZWQgY29k
ZSB0byBpbnZva2UgYXQgdGhpcyB0aW1lLiAgUmVmZXRjaCB0aGUgY3VycmVudCBjb2RlYmxvY2sg
KGFzCisgICAgICAgICMgaXQgbWF5IGhhdmUgY2hhbmdlZCksIGFuZCBmYWxsIHRocnUgdG8gLmNv
bnRpbnVlIHRvIGdvIGludGVycHJldCB0aGUKKyAgICAgICAgIyBmdW5jdGlvbi4KICAgICAucmVj
b3ZlcjoKICAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKICAgICBl
bmQKICAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCiAgICAgCi0gICAgIyBTZXQgdXAgdGhlIFBDLgor
ICAgICMgU2V0IHVwIHRoZSBQQy4gIFRoZSBjYWxsZXIgd2lsbCBkaXNwYXRjaC9qdW1wIHRvIHRo
aXMgYnl0ZWNvZGUgUEMgYWRkci4KICAgICBpZiBKU1ZBTFVFNjQKICAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIFBCCiAgICAgICAgIG1vdmUgMCwgUEMKQEAgLTI4
MCw2ICszMjUsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2Fu
IGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKICAgICBsc2hp
ZnRpIDMsIHQwCiAgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIG1sYW1EbyAvLyBWTUluc3BlY3Rv
cjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAqKiogc3RhY2sgY2hlY2siKTsKICAgICBicGFlcSBJ
bnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAs
IC5zdGFja0hlaWdodE9LCiAKICAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVk
IHRvIGNhbGwgYSBzbG93X3BhdGguCkBAIC0yODksNyArMzM1LDcgQEAgZW5kCiAKIG1hY3JvIGFs
bG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1
Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKICAgICBpZiBBTFdB
WVNfQUxMT0NBVEVfU0xPVwotICAgICAgICBqbXAgc2xvd0Nhc2UKKyAgICAgICAgam1wIHNsb3dD
YXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAuc2xv
d0Nhc2U7CiAgICAgZWxzZQogICAgICAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0KICAg
ICAgICAgICAgIEpTR2xvYmFsRGF0YTo6aGVhcCArCkBAIC0zMDMsMzAgKzM0OSwzNyBAQCBtYWNy
byBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgICAgICBNYXJrZWRC
bG9jazo6RnJlZUxpc3Q6OmhlYWQKIAogICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBn
bG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KLSAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxE
YXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNj
cmF0Y2gxICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGE0PiA9IGNmci5Db2Rl
QmxvY2s7CisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwg
c2NyYXRjaDEgICAvLyAgIGdsb2JhbERhdGE8YTQ+ID0gY29kZUJsb2NrPGE0Pi5nbG9iYWxEYXRh
OwogICAgICAgICAKLSAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
ICAgCi0gICAgICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJl
ZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKLSAgICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisg
ICAgICAgIC8vIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAKKyAgICAgICAg
bG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFtzY3JhdGNo
MV0sIHJlc3VsdCAvLyAgIHJlc3VsdDxhMz4gPSBnbG9iYWxEYXRhPGE0Pi5NeVNpemVDbGFzcy5G
aXJzdEZyZWVDZWxsOworICAgICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBpZiAoIXJlc3VsdDxhMz4gaS5lLiBubyBmcmVlIGNlbGwp
IGdvdG8gLnNsb3dDYXNlOwogICAgICAgICAKLSAgICAgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBm
cm9tIHRoZSBmcmVlIGxpc3QuCi0gICAgICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgotICAg
ICAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0
RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgICAgIC8vIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhl
IGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgbmV4dDxhNT4gPSByZXN1bHQ8YTM+LnB0cjsKKyAgICAgICAg
c3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXSAvLyAgIGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNl
bGwgPSBuZXh0PGE1PjsKICAgICAKLSAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCi0g
ICAgICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCi0gICAgICAg
IHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KLSAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlND
ZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCi0gICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9v
dXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0
LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMiAgICAg
ICAgICAgLy8gICBjbGFzc0luZm88YTU+ID0gZ2xvYmFsRGF0YTxhND4uY2xhc3NJbmZvT2Zmc2V0
OworICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICByZXN1bHQ8YTM+LnB0ciA9IGNsYXNzSW5mbzxhNT47CisgICAgICAgIHN0b3Jl
cCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XSAgICAgICAvLyAgIHJlc3Vs
dDxhMz4uc3RydWN0dXJlID0gc3RydWN0dXJlPGEyPjsKKyAgICAgICAgc3RvcmVwIDAsIEpTT2Jq
ZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XSAgICAgIC8vICAgcmVzdWx0PGEzPi5vdXRP
ZkxpbmVTdG9yYWdlID0gMDsKICAgICBlbmQKIGVuZAogCiBtYWNybyBkb1JldHVybigpCi0gICAg
bG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIK
KyAgICBtbGFtRG8gIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IFBSSU5U
IGRvUmV0dXJuKCkgfCByZXR1cm5QQzx0Mj4gPSBjZnIuUmV0dXJuUEM7XG5cbiIpOworICAgIG1s
YW1EbyAvLyBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkQuMSIp
OworICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcmV0dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDOworICAgIG1sYW1EbyAvLyBWTUlu
c3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkQuMiIpOworICAgIG1sYW1E
byAvLyByNC51LnZwID0gZnAudS52cDsgCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2Zy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSBjZnIuQ2FsbGVyRnJhbWU7Cisg
ICAgbWxhbURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUocjQudS5leGVjU3RhdGUsICJtbGFt
IEYuQS5ELjMiKTsKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKLSAg
ICByZXQKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShyNC51LmV4ZWNTdGF0
ZSwgIm1sYW0gRi5BLkQuNCIpOworICAgIG1sYW1EbyAvLyBwcmludGYoIm1sYW0gTExJTlQgZG9S
ZXR1cm5cbiIpOworICAgIHJldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZG8gcmV0dXJuOwogZW5kCiAKIApAQCAtMzM2LDE2ICszODksMjAg
QEAgX2xsaW50X2JlZ2luOgogCiAKIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIG1sYW1E
byAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiog
bWxhbSBfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZVxuXG4iKTsKICAgICBwcm9sb2d1ZShub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9l
bnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogCiAKIF9s
bGludF9ldmFsX3Byb2xvZ3VlOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50
ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfZXZhbF9wcm9sb2d1ZVxu
XG4iKTsKICAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQogCiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZToKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJcblxuID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09IFxuICAgKioqIG1sYW0gOjogSW4gbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUgKioqXG4iKTsKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRG
KSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENv
ZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2Fs
bCkKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDAp
CkBAIC0zNTMsNiArNDEwLDcgQEAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgog
ICAgIAogCiBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBtbGFt
RG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioq
IG1sYW0gX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWVcblxuIik7CiAgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQogLmZ1bmN0aW9uRm9y
Q29uc3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQpAQCAtMzYwLDEx
ICs0MTgsMTQgQEAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CiAgICAg
CiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBtbGFtRG8gLy8g
cHJpbnRmKCJcblxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09IFxuICAgKioqIG1sYW0gOjogSW4gbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2sgKioqXG4iKTsKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoq
KioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRl
ciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X3Nsb3dfcGF0
aF9jYWxsX2FyaXR5Q2hlY2spCiAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2s6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioq
KioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrXG5cbiIpOwogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zv
cl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVj
dEJlZ2luLCBfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogCkBAIC00ODcs
NiArNTQ4LDcgQEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgogCiAKIG1hY3JvIHdpdGhJ
bmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24pCisgICAg
bWxhbURvIC8vIHByaW50ZigiICoqKiB3aXRoSW5saW5lU3RvcmFnZVxuIik7CiAgICAgIyBJbmRp
Y2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5IHN0b3JhZ2UsIGFuZCB0aGF0IHRo
ZQogICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBpcyB1bnVzZWQuCiAgICAgY29udGlu
dWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQpAQCAtNTM1LDYgKzU5Nyw3IEBAIF9sbGlu
dF9vcF9sb29wX2lmX3RydWU6CiAgICAgbm9wCiBfbGxpbnRfb3BfanRydWU6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFxuXG4i
KTsKICAgICBqdW1wVHJ1ZU9yRmFsc2UoCiAgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBi
dGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qdHJ1ZSkK
QEAgLTU0NCw2ICs2MDcsNyBAQCBfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKICAgICBub3AKIF9s
bGludF9vcF9qZmFsc2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIG1sYW1EbyAvLyBpZiAo
bWxhbV9QUklOVEYpIHByaW50ZigiXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09IFxuXG4iKTsKICAgICBqdW1wVHJ1ZU9yRmFsc2UoCiAgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAogICAgICAg
ICBfbGxpbnRfc2xvd19wYXRoX2pmYWxzZSkKQEAgLTU1OSw2ICs2MjMsMTMgQEAgX2xsaW50X29w
X2psZXNzOgogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2psZXNzKQogCiAKKy8vIGJ5dGVjb2Rl
OiBqbmxlc3Mgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCisvLworLy8gICBDaGVja3Mg
d2hldGhlciByZWdpc3RlciBzcmMxIGlzIGxlc3MgdGhhbiByZWdpc3RlciBzcmMyLCBhcworLy8g
ICB3aXRoIHRoZSBFQ01BU2NyaXB0ICc8JyBvcGVyYXRvciwgYW5kIHRoZW4ganVtcHMgdG8gb2Zm
c2V0CisvLyAgIHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLCBpZiBhbmQgb25s
eSBpZiB0aGUgCisvLyAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KKwogX2xs
aW50X29wX2pubGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY29tcGFyZSgKQEAgLTYz
OSw2ICs3MTAsMTUgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBkaXNwYXRjaCgzKQog
CiAKKy8vIGJ5dGVjb2RlOiBjYWxsIGZ1bmMocikgYXJnQ291bnQobikgcmVnaXN0ZXJPZmZzZXQo
bikKKy8vCisvLyAgIFBlcmZvcm0gYSBmdW5jdGlvbiBjYWxsLgorLy8gICAgICAgICAgIAorLy8g
ICByZWdpc3Rlck9mZnNldCBpcyB0aGUgZGlzdGFuY2UgdGhlIGNhbGxGcmFtZSBwb2ludGVyIHNo
b3VsZCBtb3ZlCisvLyAgIGJlZm9yZSB0aGUgVk0gaW5pdGlhbGl6ZXMgdGhlIG5ldyBjYWxsIGZy
YW1lJ3MgaGVhZGVyLgorLy8gICAgICAgICAgIAorLy8gICBkc3QgaXMgd2hlcmUgb3BfcmV0IHNo
b3VsZCBzdG9yZSBpdHMgcmVzdWx0LgorCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY2FsbCkKQEAgLTc2NCwxMCArODQ0
LDEyIEBAIF9sbGludF9vcF9kZWJ1ZzoKIAogCiBfbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZToKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioq
KioqKioqKioqKioqIG1sYW0gX2xsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmVcblxuIik7CiAg
ICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZlRXhlY3V0YWJsZTo6bV9mdW5jdGlvbikKIAog
CiBfbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lOgorICAgIG1sYW1EbyAvLyBpZiAo
bWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxp
bnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lXG5cbiIpOwogICAgIG5hdGl2ZUNhbGxUcmFt
cG9saW5lKE5hdGl2ZUV4ZWN1dGFibGU6Om1fY29uc3RydWN0b3IpCiAKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw1MDQgQEAKICNpbmNs
dWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+
CiAKKy8vIG1sYW0gQkVHSU4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTExpbnRTbG93
UGF0aHMuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworI2RlZmluZSBtbGFtX1BSSU5URjAgbWxhbV9QUklOVEYKKyNkZWZp
bmUgbWxhbV9QUklOVEYwX0RGIDAgLy8gbWxhbV9QUklOVEYKKwordXNpbmcgbmFtZXNwYWNlIEpT
Qzo6TExJbnQ7CisKKy8vIFRoZSBzaGFwZSBvZiBvcGNvZGVzCisvLyA9PT09PT09PT09PT09PT09
PT09PQorLy8gSW4gdGhlIExMSW50IHN5c3RlbSwgb3Bjb2RlcyBtYW5pZmVzdCBpbiB2YXJpb3Vz
IGZvcm1zIHRoYXQgd29yayB0b2dldGhlci4KKy8vIFRoZXNlIGZvcm1zIGFyZToKKy8vICAgMS4g
VGhlIGVudW1lcmF0aW9uCisvLyAgICAgID09PT09PT09PT09PT09PQorLy8gICAgICBCeXRlY29k
ZSBvcGNvZGVzIGFyZSBlbnVtZXJhdGVkIGFzIE9wY29kZUlEJ3MgaW4gYnl0ZWNvZGUvT3Bjb2Rl
LmgKKy8vCisvLyAgICAgIFRoZSBMTGludCB1c2VzIHNvbWUgaGVscGVyIGdsdWUgY29kZS4gIFdp
dGggdGhlIEMgbG9vcCBpbnRlcnByZXRlciwKKy8vICAgICAgd2UgbmVlZCB0byByZXByZXNlbnQg
dGhlc2UgaGVscGVyIGdsdWUgY29kZSBhcyBwc2V1ZG8gb3Bjb2RlIGhhbmRsZXJzCisvLyAgICAg
IGFzIHdlbGwgdG8gYWxsb3cgdXMgdG8gZW1wbG95IGEgdW5pZmllZCBkaXNwYXRjaCBtZWNoYW5p
c20gdG8gaW52b2tlCisvLyAgICAgIHRoZXNlIGhlbHBlcnMgYXMgd2UgZG8gd2l0aCBvcGNvZGUg
aGFuZGxlcnMuICBIZW5jZSwgd2l0aCB0aGUgQyBsb29wLAorLy8gICAgICB3ZSBhY2Nlc3MgbmVl
ZCB0byBwcmVzZW50IHRoZSBnbHVlIGNvZGUgYXMgcHNldWRvIG9wY29kZXMgYXMgd2VsbC4KKy8v
ICAgICAgVGhlc2UgYXJlIGVudW1lcmF0ZWQgYXMgTExpbnRPcGNvZGVJRCdzIGluIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaC4KKy8vCisvLyAgICAgIE5PVEU6IFRoZSBPcGNvZGVJRHMgYXJl
IHVzZWQgaW4gQ29kZUJsb2NrcyBnZW5lcmF0ZWQgYnkgdGhlCisvLyAgICAgIEJ5dGVjb2RlQ29t
cGlsZXIsIGJ1dCB0aGUgTExJbnRPcGNvZGVJRHMgbmV2ZXIgd2lsbC4gIExMSW50T3Bjb2RlSURz
CisvLyAgICAgIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGludGVybmFsIHBsdW1iaW5nIG9mIHRoZSBp
bnRlcnByZXRlci4KKy8vCisvLyAgIDIuIFRoZSBoYW5kbGVyCisvLyAgICAgID09PT09PT09PT09
CisvLyAgICAgIFVsdGltYXRlbHksIHRoZSBpbnRlcnByZXRlciBuZWVkcyB0byBkaXNwYXRjaCB0
byBzb21lIGhhbmRsZXIgY29kZSB0bworLy8gICAgICBleGVjdXRlIHRoZSBhY3Rpb25zIG9mIHRo
ZSBvcGNvZGUgKG9yIHBzZXVkbyBvcGNvZGUpLiAgVGhlIGhhbmRsZXJzCisvLyAgICAgIGFyZSBw
cmVzZW50ZWQgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6CisvLworLy8gICAgICBhLiBn
bG9iYWwgbGFiZWxzIHdoZW4gd2UgY2FuIHVzZSBjb21wdXRlZCBnb3Rvcy4KKy8vICAgICAgYi4g
Y2FzZSBzdGF0ZW1lbnRzIGluIGEgQyBzd2l0Y2ggd2hlbiB3ZSBjYW5ub3QgdXNlIGNvbXB1dGVk
IGdvdG9zLgorLy8KKy8vICAgICAgV2hlbiB1c2luZyB0aGUgQVNNIGxvb3AsIHdlIHdpbGwgdXNl
IGNvbXB1dGVkIGdvdG9zLiAgVGhlcmUgaXMgbm8KKy8vICAgICAgcmVhc29uIHRvIHVzZSBhIEMg
c3dpdGNoIHN0YXRlbWVudCBpbiB0aGF0IGNhc2UuCisvLworLy8gICAgICBXaGVuIHVzaW5nIHRo
ZSBDIGxvb3AsIHdlIHdpbGwgdXNlIG9uZSBvZiB0aGUgYWJvdmUgMiBmb3Jtcy4gIEluCisvLyAg
ICAgIGFkZGl0aW9uLCBMTEludCBoZWxwZXIgZ2x1ZSBjb2RlIGFyZSBhbHNvIHJlcHJlc2VudGVk
IGFzIGJ5dGVjb2RlCisvLyAgICAgIGhhbmRsZXJzIChjb3JyZXNwb25kaW5nIHRvIHRoZWlyIHJl
c3BlY3RpdmUgTExJbnRPcGNvZGVJRHMpLCBhbmQKKy8vICAgICAgaGVuY2UsIHdpbGwgYmUgcHJl
c2VudGVkIGluIG9uZSBvZiB0aGUgYWJvdmUgMiBmb3JtcyBhcyB3ZWxsLgorLy8KKy8vIEhvdyBh
cmUgdGhlIG9wY29kZSBmb3JtcyBuYW1lZD8KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorLy8gSGVyZSBpcyBhIHRhYmxlIHRvIHNob3cgZXhhbXBsZXMgb2YgaG93IGVhY2ggb2Yg
dGhlIG1hbmlmZXN0YXRpb24gb2YgdGhlCisvLyBvcGNvZGVzIGFyZSBuYW1lZDoKKy8vCisvLyAg
IFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2RlICAgICAgICAgICAgSGVscGVyCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09ICAgICAgICAgICAgPT09PT09
CisvLyAgIExMaW50IGxhYmVsczogICAgICAgICAgICAgICAgbGxpbnRfb3BfZW50ZXIgICAgbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZQorLy8gICBPcGNvZGUgZW51bWVyYXRpb246ICAgICAgICAgIG9w
X2VudGVyICAgICAgICAgIG9wX2xsaW50X3Byb2dyYW0gKGZvciBDIGxvb3Agb25seSkKKy8vCisv
LyAgIFVzaW5nIGEgc3dpdGNoIHN0YXRlbWVudCBkaXNwYXRjaDoKKy8vICAgICBPcGNvZGUgZGlz
cGF0Y2ggaGFuZGxlcnM6ICBjYXNlIG9wX2VudGVyOiAgICBjYXNlIG9wX2xsaW50X3Byb2dyYW1f
cHJvbG9ndWU6IChmb3IgQyBsb29wIG9ubHkpCisvLyAgIFVzaW5nIGNvbXB1dGVkIGdvdG8nczoK
Ky8vICAgICBPcGNvZGUgZGlzcGF0Y2ggaGFuZGxlcnM6ICBoYW5kbGVfb3BfZW50ZXI6ICBoYW5k
bGVfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZTogKGZvciBDIGxvb3Agb25seSkKKy8vCisvLyAgIExM
SW50IGdsdWUgaGVscGVyIGVudHJ5cG9pbnRzOgorLy8gICAgIEFTTSBsb29wIGdsdWUgZW50cnk6
ICAgICAgIE4vQSAgICAgICAgICAgICAgIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOwor
Ly8gICAgIEMgbG9vcCBnbHVlIGVudHJ5OiAgICAgICAgIE4vQSAgICAgICAgICAgICAgIE9wY29k
ZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlWzFdOworLy8KKworLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisvLyBEZWZpbmUgdGhlIG9wY29kZSBkaXNwYXRjaCBtZWNoYW5pc20gd2hlbiB1c2luZyB0aGUg
QyBsb29wOgorLy8KKworLy8gVGhlc2UgYXJlIGZvciBidWlsZGluZyBhIEMgTG9vcCBpbnRlcnBy
ZXRlcjoKKyNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4KKyNkZWZpbmUgT0ZGTElORV9BU01fRU5E
CisKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bjb2RlKSBERUZJTkVfT1BD
T0RFKG9wY29kZSkKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorICAgICNkZWZp
bmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChsYWJlbCkgIGxhYmVsOgorI2Vsc2UKKyAgICAjZGVm
aW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBjYXNlIGxhYmVsOiBsYWJlbDoKKyNl
bmRpZgorCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKGxhYmVsKSAgIGxhYmVsOgor
CisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCitzdGF0aWMgZG91YmxlIEludHMyRG91YmxlKHVpbnQzMl90IGxvLCB1aW50MzJfdCBo
aSkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkdmFsOworICAgICAgICB1aW50NjRf
dCBpdmFsNjQ7CisgICAgfSB1OworICAgIHUuaXZhbDY0ID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihoaSkgPDwgMzIpIHwgbG87CisgICAgcmV0dXJuIHUuZHZhbDsKK30KKyNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTMyXzY0KQorCit9IC8vIG5hbWVzcGFjZSBMTGludAorCisvLyBtbGFtIEJFR0lOIERF
QlVHIHV0aWxpdGllcy4gIERvIHdlIHdhbnQgdG8ga2VlcCB0aGVzZSBhcm91bmQgaW4gc29tZSBm
b3JtPworZXh0ZXJuIGNvbnN0IGNoYXIqIGdldEdsdWVMYWJlbE5hbWUoTExJbnRPcGNvZGVJRCBv
cGNvZGUpOworCisvLyBnZXRHbHVlTGFiZWxOYW1lKCkgaXMgVU5VU0VELiAgV2Ugb25seSBrZXB0
IGl0IG1vbWVudGFyaWx5IHNvIHRoYXQgSSBjYW4gY2FsbCBpdCBmcm9tIGdkYi4KK2NvbnN0IGNo
YXIqIGdldEdsdWVMYWJlbE5hbWUoTExJbnRPcGNvZGVJRCBvcGNvZGUpCit7CisjZGVmaW5lIENI
RUNLX0xMSU5UX05BVElWRV9IRUxQRVIoX19uYW1lKSAgICAgXAorICAgIGlmIChvcGNvZGUgPT0g
X19uYW1lKSByZXR1cm4gI19fbmFtZTsKKyAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVS
KENIRUNLX0xMSU5UX05BVElWRV9IRUxQRVIpCisjdW5kZWYgQ0hFQ0tfTExJTlRfTkFUSVZFX0hF
TFBFUgorCisgICAgLy8gbWxhbSBCRUdJTiBERUJVRyBvbmx5CisjZGVmaW5lIE9QQ09ERV9JRF9F
TlVNKF9fb3Bjb2RlLCBsZW5ndGgpIFwKKyAgICBpZiAob3Bjb2RlID09IF9fb3Bjb2RlKSByZXR1
cm4gI19fb3Bjb2RlOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkKKyN1
bmRlZiBPUENPREVfSURfRU5VTQorICAgIC8vIG1sYW0gRU5EIERFQlVHIG9ubHkKKworI2lmIDAK
KyAgICA7CisjZW5kaWYKKyAgICByZXR1cm4gIjxub3QgYSBnbHVlIGZ1bmN0aW9uPiI7CisKK30K
KworCit2b2lkIG1sYW1UcmFwKCkgeworICAgIHByaW50ZigibWxhbVRyYXBcbiIpOworfQorCit2
b2lkIG1sYW1CcmVhayhjb25zdCBjaGFyKiBjb21tZW50LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSkgeworICAgIGlmIChsaW5lIDwgMCkgeworICAgICAgICBtbGFtVHJhcCgpOworICAgIH0K
KyAgICBpZiAobWxhbV9QUklOVEYwKSBwcmludGYoIkF0IG1sYW0gYnJlYWtwb2ludDogJXMgQCAl
czolZFxuIiwgY29tbWVudCwgZmlsZSwgbGluZSk7Cit9CisvLyBtbGFtIEVORCBERUJVRworCitl
eHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludEJhZE5hdGl2ZVJldHVy
bigpOwordm9pZCBsbGludEJhZE5hdGl2ZVJldHVybigpCit7CisgICAgLy8gVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIHBvcHVsYXRlIHRoZSByZXR1cm4gUEMgb2YgdGhlIHNpbXVsYXRlZCBuYXRp
dmUKKyAgICAvLyBjYWxsIGZyYW1lLiAgV2Ugc2hvdWxkIG5ldmVyIHJldHVybiB0byBoZXJlIHdo
ZW4gdXNpbmcgdGhlIEMgTG9vcC4KKyAgICAvLyBIZW5jZSwgd2UnbGwgbWFrZSBzb21lIG5vaXNl
IHdpdGggYSBjcmFzaCBpZiBzb21lb25lIG1ha2VzIHRoYXQgbWlzdGFrZS4KKyAgICBDUkFTSCgp
OworfQorCitKU1ZhbHVlIEludGVycHJldGVyOjpsbGludENMb29wRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnRmlsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTEludE9wY29kZUlEIGJvb3Rz
dHJhcE9wY29kZUlkLCBMTEludDo6RGF0YSogbGxpbnREYXRhKSB7CisKKyAgICAjZGVmaW5lIENB
U1QgcmVpbnRlcnByZXRfY2FzdAorICAgICNkZWZpbmUgU0lHTl9CSVQzMih4KSAoeCAmIDB4ODAw
MDAwMDApCisKKyAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBvdXIgYWRkcmVzcyB0
YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQorICAgIC8vIGhlcmUgYmVjYXVzZSBvdXIg
bGFiZWxzIGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9uLgorICAgIGlmIChV
TkxJS0VMWShmbGFnID09IEluaXRpYWxpemVBbmRSZXR1cm4pKSB7CisgICAgICAgIGlmICghbGxp
bnREYXRhLT5pc0luaXRlZCgpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gbGxpbnREYXRhLT5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPQorICAgICAg
ICAgICAgICAgICAgICBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihsbGludF90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lKTsKKworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMp
CisgICAgICAgICAgICBPcGNvZGUqIG9wY29kZU1hcCA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7
CisgICAgICAgICAgICAjZGVmaW5lIE9QQ09ERV9FTlRSWShfX29wY29kZSwgbGVuZ3RoKSBcCisg
ICAgICAgICAgICAgICAgb3Bjb2RlTWFwW19fb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JiZfX29wY29kZSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZ
KQorICAgICAgICAgICAgI3VuZGVmIE9QQ09ERV9FTlRSWQorCisgICAgICAgICAgICAjZGVmaW5l
IExMSU5UX09QQ09ERV9FTlRSWShfX29wY29kZSkgXAorICAgICAgICAgICAgICAgIG9wY29kZU1h
cFtfX29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCYmX19vcGNvZGUpOworCisgICAgICAg
ICAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVSKExMSU5UX09QQ09ERV9FTlRSWSkKKyAg
ICAgICAgICAgICN1bmRlZiBMTElOVF9PUENPREVfRU5UUlkKKyNlbHNlCisgICAgICAgICAgICBV
TlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyNlbmRpZgorICAgICAgICAgICAgbGxpbnREYXRhLT5z
ZXRJc0luaXRlZCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
fQorCisgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmds
b2JhbERhdGEoKS50b3BDYWxsRnJhbWUgPT0gY2FsbEZyYW1lKTsKKworICAgIC8vIERlZmluZSB0
aGUgcHNldWRvIHJlZ2lzdGVycyB1c2VkIGJ5IHRoZSBMTElOVCBDIExvb3AgYmFja2VuZDoKKyAg
ICBzdHJ1Y3QgQ0xvb3BSZWdpc3RlciB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGlu
dHB0cl90IGk7CisgICAgICAgICAgICB1aW50cHRyX3QgdTsKKyAgICAgICAgICAgIGludDMyX3Qg
aTMyOworICAgICAgICAgICAgdWludDMyX3QgdTMyOworICAgICAgICAgICAgaW50OF90IGk4Owor
ICAgICAgICAgICAgdWludDhfdCB1ODsKKyAgICAgICAgICAgIGludDhfdCogaThwOworICAgICAg
ICAgICAgdm9pZCogdnA7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWNTdGF0ZTsKKyAgICAg
ICAgICAgIHZvaWQqIGluc3RydWN0aW9uOworICAgICAgICAgICAgTmF0aXZlRnVuY3Rpb24gbmF0
aXZlRnVuYzsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlkOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgICAgICBpbnQ2NF90IGk2NDsKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRKU1ZhbHVlOworICAgICAgICAgICAgZG91YmxlIGNhc3RUb0RvdWJsZTsKKyNlbmRp
ZgorICAgICAgICB9IHU7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ0xvb3BEb3VibGVSZWdpc3RlciB7
CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGRvdWJsZSBkOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgICAgICB2b2lkKiBjYXN0VG9Wb2lkUHRyOworI2VuZGlmCisgICAgICAgIH0g
dTsKKyAgICB9OworCisgICAgQ0xvb3BSZWdpc3RlciByMCwgcjEsIHIyLCByNDsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIENMb29wUmVnaXN0ZXIgckJhc2VQQywgdGFnVHlwZU51bWJlciwgdGFn
TWFzazsKKyNlbmRpZgorICAgIENMb29wUmVnaXN0ZXIgclJldFZQQzsKKyAgICBDTG9vcERvdWJs
ZVJlZ2lzdGVyIGQwLCBkMTsKKworICAgIC8vIEluc3RhbnRpYXRlIHRoZSBwc2V1ZG8gSklUIHN0
YWNrIGZyYW1lIHVzZWQgYnkgdGhlIExMSU5UIEMgTG9vcCBiYWNrZW5kOgorICAgIEpJVFN0YWNr
RnJhbWUgaml0U3RhY2tGcmFtZTsKKworICAgIEpJVFN0YWNrRnJhbWUqIGNvbnN0IHNwID0gJmpp
dFN0YWNrRnJhbWU7CisgICAgc3AtPmdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCk7CisKKyAgICAvLyBBbGlhcyBmb3IgZ2xvYmFsRGF0YSBwdHIgaW4gdGhlIEpJVFN0YWNrRnJh
bWU6CisgICAgSlNHbG9iYWxEYXRhKiAmZ2xvYmFsRGF0YSA9IHNwLT5nbG9iYWxEYXRhOworCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIElu
c3RydWN0aW9uKiB2UEM7CisKKyAgICAvLyByUEMgaXMgYW4gYWxpYXMgZm9yIHZQQy4gIFNldCB1
cCB0aGUgYWxpYXM6CisgICAgQ0xvb3BSZWdpc3RlciYgclBDID0gKkNBU1Q8Q0xvb3BSZWdpc3Rl
cio+KCZ2UEMpOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB2UEMgPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQorICAgIHZQ
QyA9IDA7CisgICAgckJhc2VQQy51LnZwID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOworCisgICAgLy8gRm9yIHRoZSBBU00gbGxpbnQsIEpJVFN0dWJzIHRha2VzIGNhcmUgb2Yg
dGhpcyBpbml0aWFsaXphdGlvbi4gIFdlIGRvCisgICAgLy8gaXQgaGVyZSBmb3IgdGhlIEMgbG9v
cDoKKyAgICB0YWdUeXBlTnVtYmVyLnUuaSA9IDB4RkZGRjAwMDAwMDAwMDAwMDsKKyAgICB0YWdN
YXNrLnUuaSA9IDB4RkZGRjAwMDAwMDAwMDAwMjsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQor
CisgICAgLy8gckZQIGlzIGFuIGFsaWFzIGZvciBjYWxsRnJhbWUuICBTZXQgdXAgdGhpcyBhbGlh
czoKKyAgICBDTG9vcFJlZ2lzdGVyJiBmcCA9ICpDQVNUPENMb29wUmVnaXN0ZXIqPigmY2FsbEZy
YW1lKTsKKworICAgIC8vIFNpbXVsYXRlIGEgbmF0aXZlIHJldHVybiBQQyB3aGljaCBzaG91bGQg
bmV2ZXIgYmUgdXNlZDoKKyAgICByUmV0VlBDLnUudnAgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludEJhZE5hdGl2ZVJldHVybik7CisKKyAgICAvLyBJbnRlcnByZXRlciB2YXJpYWJsZXMgZm9y
IHZhbHVlIHBhc3NpbmcgYmV0d2VlbiBvcGNvZGVzIGFuZC9vciBoZWxwZXJzOgorICAgIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMgPSAwOworICAgIEpTVmFsdWUgZnVuY3Rpb25SZXR1cm5WYWx1
ZTsKKyAgICBMTEludE9wY29kZSBvcGNvZGU7CisKKyAgICBib29sIG1sYW1QcmludCA9IGZhbHNl
OyAvLyBGb3IgREVCVUcgb25seS4gIENsZWFuIHVwIHBsZWFzZS4KKyAgICBVTlVTRURfUEFSQU0o
bWxhbVByaW50KTsKKworICAgIFVOVVNFRF9QQVJBTShyZWdGaWxlKTsgLy8gbWxhbSBGSVhNRSBS
RU1PVkUgdGhpcyBsYXRlci4KKworICAgIGlmIChib290c3RyYXBPcGNvZGVJZCAhPSBsbGludF91
bnVzZWQpIHsKKyAgICAgICAgb3Bjb2RlID0gTExJbnQ6OkRhdGE6OmdldE9wY29kZShib290c3Ry
YXBPcGNvZGVJZCk7CisgICAgfQorCisgICAgI2RlZmluZSBVUERBVEVfQllURUNPREVfT0ZGU0VU
KCkKKworICAgICNpZiBFTkFCTEUoT1BDT0RFX1NUQVRTKQorICAgICAgICAjZGVmaW5lIFJFQ09S
RF9PUENPREVfU1RBVFMoX19vcGNvZGUpIFwKKyAgICAgICAgICAgIE9wY29kZVN0YXRzOjpyZWNv
cmRJbnN0cnVjdGlvbihfX29wY29kZSkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIFJFQ09S
RF9PUENPREVfU1RBVFMoX19vcGNvZGUpCisgICAgI2VuZGlmCisKKyAgICAvLyogbWxhbSBPQlNP
TEVURQorICAgICNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAjZGVmaW5lIEZFVENIX09Q
Q09ERSgpIGJpdHdpc2VfY2FzdDxMTEludE9wY29kZT4odlBDLT51Lm9wY29kZSkKKyAgICAjZWxz
ZSAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAjZGVmaW5lIEZFVENIX09QQ09ERSgpICpiaXR3
aXNlX2Nhc3Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLnUuaThwICsgclBDLnUuaSAqIDgpCisgICAg
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgLy8qLworCisgICAgLy8qIG1sYW0gT0JTT0xF
VEUKKyAgICAjZGVmaW5lIE5FWFRfSU5TVFJVQ1RJT04oKSBcCisgICAgICAgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgb3Bjb2RlID0gRkVUQ0hfT1BDT0RFKCk7
IFwKKyAgICAgICAgICAgIERJU1BBVENIX09QQ09ERSgpOyAgICAgICBcCisgICAgICAgIH0gd2hp
bGUgKGZhbHNlKQorICAgIC8vICovCisKKyAgICAvLyBtbGFtIEJFR0lOIFRFU1QgY29kZSB1c2Vk
IGluIERFRklORV9PUENPREUKKyAgICAjaWYgbWxhbV9QUklOVEYwCisgICAgI2RlZmluZSBtbGFt
RHVtcE9wY29kZShfX29wY29kZSkgXAorICAgICAgICAgICAgLyogbWxhbSAqLyBwcmludGYoIiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOyAgIFwKKyAgICAgICAgICAgIC8qIG1s
YW0gKi8gcHJpbnRmKCIgPT09ICVzXG4iLCAjX19vcGNvZGUpOyAgIFwKKyAgICAgICAgICAgIC8q
IG1sYW0gKi8gcHJpbnRmKCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAg
ICAjZWxzZQorICAgICNkZWZpbmUgbWxhbUR1bXBPcGNvZGUoX19vcGNvZGUpCisgICAgI2VuZGlm
CisgICAgLy8gbWxhbSBFTkQgVEVTVAorCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTG9vcCBkaXNwYXRjaCBtZWNoYW5p
c20gdXNpbmcgY29tcHV0ZWQgZ290byBzdGF0ZW1lbnRzOgorCisgICAgI2RlZmluZSBESVNQQVRD
SF9PUENPREUoKSBnb3RvICpvcGNvZGUKKworICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShfX29w
Y29kZSkgXAorICAgICAgICBfX29wY29kZTogXAorICAgICAgICAgICAgbWxhbUR1bXBPcGNvZGUo
X19vcGNvZGUpIFwKKyAgICAgICAgICAgIFJFQ09SRF9PUENPREVfU1RBVFMoX19vcGNvZGUpOyBc
CisgICAgICAgICAgICBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CisKKyAgICAvLyBEaXNwYXRj
aCB0byB0aGUgY3VycmVudCBQQydzIGJ5dGVjb2RlOgorICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
KworI2Vsc2UgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgLy89PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyAgICAvLyBMb29wIGRpc3BhdGNoIG1lY2hhbmlzbSB1c2luZyBhIEMgc3dpdGNo
IHN0YXRlbWVudDoKKworICAgICNkZWZpbmUgRElTUEFUQ0hfT1BDT0RFKCkgZ290byBkaXNwYXRj
aE9wY29kZQorCisgICAgI2RlZmluZSBERUZJTkVfT1BDT0RFKF9fb3Bjb2RlKSBcCisgICAgICAg
IGNhc2UgX19vcGNvZGU6IFwKKyAgICAgICAgICAgIG1sYW1EdW1wT3Bjb2RlKF9fb3Bjb2RlKSBc
CisgICAgICAgICAgICBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKTsgXAorICAgICAgICAg
ICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOworCisgICAgLy8gRGlzcGF0Y2ggdG8gdGhlIGN1
cnJlbnQgUEMncyBieXRlY29kZToKKyAgICBkaXNwYXRjaE9wY29kZTo7CisgICAgc3dpdGNoIChv
cGNvZGUpCisKKyNlbmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKworICAg
IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNvZGUgaGFuZGxlcnM6CisgICAgeworICAg
ICAgICAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29u
dGFpbnMgYWxsIG9mIHRoZQorICAgICAgICAvLyBieXRlY29kZSBoYW5kbGVycyBmb3IgdGhlIGlu
dGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tCisgICAgICAgIC8vIExvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtLgorICAgICAgICAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKKyAgICAgICAg
Ly8gSW4gdGhlIEFTTSBsbGludCwgZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpIGlzIGEgcGllY2Ug
b2YgZ2x1ZQorICAgICAgICAvLyBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGUgSklUIChzZWUgZGZn
L0RGR09wZXJhdGlvbnMuY3BwKS4KKyAgICAgICAgLy8gV2Ugc2ltdWxhdGUgaXQgaGVyZSB3aXRo
IGEgcHNlZHVvLW9wY29kZSBoYW5kbGVyLgorICAgICAgICBPRkZMSU5FX0FTTV9HTFVFX0xBQkVM
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBB
U00gcGFydCBwb3BzIHRoZSBmcmFtZToKKyAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKKworICAgICAgICAgICAgLy8gVGhlIHBhcnQgaW4gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoKToKKyAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0
ID0gZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgICAgICAgICAgcjEudS5pID0gcmVzdWx0LnRhZygpOworICAgICAgICAgICAgcjAudS5p
ID0gcmVzdWx0LnBheWxvYWQoKTsKKyNlbHNlCisgICAgICAgICAgICByMC51LmVuY29kZWRKU1Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisjZW5kaWYKKyAgICAgICAgICAgIGdvdG8g
ZG9SZXR1cm5IZWxwZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBtbGFtIE9CU09MRVRFIE9G
RkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfY3RpT3BUaHJvd05vdENhdWdodCkKKyAgICAgICAg
T0ZGTElORV9BU01fR0xVRV9MQUJFTChjdGlPcFRocm93Tm90Q2F1Z2h0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobWxhbV9QUklOVEYwKSBwcmludGYoIlxuICAgKioqKioqKioqKiBtbGFt
IDo6IGN0aU9wVGhyb3dOb3RDYXVnaHRcblxuIik7CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uOworICAgICAgICB9CisKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKKyAgICBkZWZhdWx0OgorICAgICAgICBwcmludGYoIiBtbGFtIDo6IElsbGVnYWwg
b3Bjb2RlICVwXG4iLCAodm9pZCopb3Bjb2RlKTsKKyAgICAgICAgbWxhbUJyZWFrKCJJbGxlZ2Fs
IG9wY29kZSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIEFTU0VSVChmYWxzZSk7Cisj
ZW5kaWYKKworICAgIH0gLy8gRU5EIGJ5dGVjb2RlIGhhbmRsZXIgY2FzZXMuCisKKyAgICAvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgIC8vIEJ5dGVjb2RlIGhlbHBlcnM6CisKKyAgICBkb0NhbGxIZWxw
ZXI6IHsgICAgICAgIAorICAgICAgICBBU1NFUlQoISFyUmV0VlBDLnUudnApOyAvLyBtbGFtIFRF
U1QgcmV0dXJuUEMKKyAgICAgICAgRElTUEFUQ0hfT1BDT0RFKCk7CisKKyAgICB9IC8vIEVORCBk
b0NhbGxIZWxwZXIuCisKKyAgICBkb1JldHVybkhlbHBlcjogeworICAgICAgICBpZiAobWxhbV9Q
UklOVEYwX0RGKSBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAgPDw8IFBPUFBF
RCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQorCisgICAgICAgIEFTU0VSVCghIWNhbGxGcmFtZSk7
CisgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIHsKKyNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUocjEudS5pLCByMC51
LmkpOyAgLy8gcmV0dXJuaW5nIEpTVmFsdWUodGFnLCBwYXlsb2FkKTsKKyNlbHNlCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHIwLnUuZW5jb2RlZEpTVmFsdWUpOworI2VuZGlm
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgbm9ybWFsIEFTTSBsbGludCBjYWxsIGltcGxl
bWVudGF0aW9uIHJldHVybnMgdG8gdGhlIGNhbGxlciBhcworICAgICAgICAvLyByZWNvcmRlZCBp
biBsciwgYW5kIGNhbGxlciAgd291bGQgZmV0Y2ggdGhlIHJldHVybiBhZGRyZXNzIGZyb20KKyAg
ICAgICAgLy8gQXJndW1lbnRDb3VudC50YWcoKSAoc2VlIHRoZSBkaXNwYXRjaEFmdGVyQ2FsbCgp
IG1hY3JvIHVzZWQgaW4KKyAgICAgICAgLy8gdGhlIGNhbGxUYXJnZXRGdW5jdGlvbigpIG1hY3Jv
KS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRm9yIHRoZSBDIGxvb3AsIHdlIGRvbid0IGhhdmUg
dGhlIEpJVCBzdHViIHRvIHRoaXMgd29yayBmb3IgdXMuICBTbywKKyAgICAgICAgLy8gd2UgbmVl
ZCB0byBpbXBsZW1lbnQgdGhlIGVxdWl2YWxlbnQgb2YgZGlzcGF0Y2hBZnRlckNhbGwoKSBoZXJl
CisgICAgICAgIC8vIGJlZm9yZSBkaXNwYXRjaGluZyB0byB0aGUgUEMuCisKKyAgICAgICAgdlBD
ID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAvLyBCYXNlZCBvbiBMb3dMZXZlbEludGVycHJldGVyNjQuYXNtJ3MgZGlzcGF0Y2hBZnRlckNh
bGwoKToKKworICAgICAgICAvLyBXaGVuIHJldHVybmluZyBmcm9tIGEgbmF0aXZlIHRyYW1wb2xp
bmUgY2FsbCwgdW5saWtlIHRoZSBhc3NlbWJseQorICAgICAgICAvLyBMTEludCwgd2UgY2FuJ3Qg
c2ltcGx5IHJldHVybiB0byB0aGUgY2FsbGVyLiAgSW4gb3VyIGNhc2UsIHdlIGdyYWIKKyAgICAg
ICAgLy8gdGhlIGNhbGxlcidzIFZQQyBhbmQgcmVzdW1lIGV4ZWN1dGlvbiB0aGVyZS4gIEhvd2V2
ZXIsIHRoZSBjYWxsZXIncworICAgICAgICAvLyBWUEMgcmV0dXJuZWQgYnkgY2FsbEZyYW1lLT5j
dXJyZW50VlBDKCkgaXMgaW4gdGhlIGZvcm0gb2YgdGhlIHJlYWwKKyAgICAgICAgLy8gYWRkcmVz
cyBvZiB0aGUgdGFyZ2V0IGJ5dGVjb2RlLCBidXQgdGhlIDY0LWJpdCBMTEludCBpbnRlcnByZXRl
cgorICAgICAgICAvLyBleHBlY3RzIHRoZSBWUEMgdG8gYmUgYSBieXRlY29kZSBvZmZzZXQuICBI
ZW5jZSwgd2UgbmVlZCB0byBtYXAKKyAgICAgICAgLy8gaXQgYmFjayB0byBhIGJ5dGVjb2RlIG9m
ZnNldCBiZWZvcmUgd2UgZGlzcGF0Y2ggdmlhIHRoZSB1c3VhbAorICAgICAgICAvLyBkaXNwYXRj
aCBtZWNoYW5pc20gKE5FWFRfSU5TVFJVQ1RJT04oKSk6CisKKyAgICAgICAgY29kZUJsb2NrID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAg
ICAgIHJQQy51LnZwID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7CisgICAgICAgIHJQQy51Lmkg
PSByUEMudS5pOHAgLSByZWludGVycHJldF9jYXN0PGludDhfdCo+KGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgICAgIHJQQy51LmkgPj49IDM7CisKKyAgICAgICAgckJh
c2VQQy51LnZwID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCisKKyAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworCisgICAgfSAv
LyBFTkQgZG9SZXR1cm5IZWxwZXIuCisKKworICAgIC8vIEtlZXAgdGhlIGNvbXBpbGVyIGhhcHB5
IHNvIHRoYXQgaXQgZG9lc24ndCBjb21wbGFpbiBhYm91dCB1bnVzZWQKKyAgICAvLyBsYWJlbHMg
Zm9yIHRoZSBMTEludCBoZWxwZXJzOgorICAgICNkZWZpbmUgTExJTlRfT1BDT0RFX0VOVFJZKF9f
b3Bjb2RlKSBcCisgICAgICAgIFVOVVNFRF9QQVJBTSgmJl9fb3Bjb2RlKTsKKyAgICAgICAgRk9S
X0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihMTElOVF9PUENPREVfRU5UUlkpCisgICAgI3VuZGVm
IExMSU5UX09QQ09ERV9FTlRSWQorCisKKyAgICAjdW5kZWYgTkVYVF9JTlNUUlVDVElPTgorICAg
ICN1bmRlZiBERUZJTkVfT1BDT0RFCisgICAgI3VuZGVmIENIRUNLX0ZPUl9USU1FT1VUCisgICAg
I3VuZGVmIENBU1QKKyAgICAjdW5kZWYgU0lHTl9CSVQzMgorCit9IC8vIEludGVycHJldGVyOjps
bGludENMb29wRXhlY3V0ZSgpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZWxzZSAvLyAhRU5B
QkxFKExMSU5UX0NfTE9PUCkKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEZWZpbmUgdGhl
IG9wY29kZSBkaXNwYXRjaCBtZWNoYW5pc20gd2hlbiB1c2luZyBhbiBBU00gbG9vcDoKKy8vCisK
Ky8vIFRoZXNlIGFyZSBmb3IgYnVpbGRpbmcgYW4gaW50ZXJwcmV0ZXIgZnJvbSBnZW5lcmF0ZWQg
YXNzZW1ibHkgY29kZToKKyNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4gICBhc20gKAorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9FTkQgICAgICk7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKF9fb3Bjb2RlKSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGxpbnRfIyNfX29wY29kZSkK
KyNkZWZpbmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChfX29wY29kZSkgICBPRkZMSU5FX0FTTV9H
TE9CQUxfTEFCRUwoX19vcGNvZGUpCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZG
TElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKGxhYmVs
KSAiXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19Q
QVJBTShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgXAorICAg
ICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAorICAgIEhJREVf
U1lNQk9MKGxhYmVsKSAiXG4iICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZTUJPTF9TVFJJ
TkcobGFiZWwpICI6XG4iCisjZW5kaWYKKworI2RlZmluZSBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChsYWJlbCkgICBMT0NBTF9MQUJFTF9TVFJJTkcobGFiZWwpICI6XG4iCisKIC8vIFRoaXMgaXMg
YSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhl
IGFzc2VtYmx5IGNvZGUKIC8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20g
TG93TGV2ZWxJbnRlcnByZXRlci5hc20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisj
ZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDI3ICszMCwyOCBA
QAogCiAjaWYgRU5BQkxFKExMSU5UKQogCi0jaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAi
TExJbnRPcGNvZGUuaCIKKworCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAKICNkZWZpbmUg
TExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxs
aW50XyMjb3Bjb2RlKCk7CiAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wpOwogI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKIAotZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2JlZ2luKCk7Ci1leHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7Ci1leHRlcm4gIkMi
IHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2
YWxfcHJvbG9ndWUoKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUoKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaygpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2soKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2lu
dCgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xp
bmUoKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
KCk7Ci0KLS8vIE5hdGl2ZSBjYWxsIHRyYW1wb2xpbmVzCi1leHRlcm4gIkMiIHZvaWQgbGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X25hdGl2ZV9j
b25zdHJ1Y3RfdHJhbXBvbGluZSgpOworI2RlZmluZSBERUNMQVJFX0xMSU5UX05BVElWRV9IRUxQ
RVIobmFtZSkgZXh0ZXJuICJDIiB2b2lkIG5hbWUoKTsKKyAgICBGT1JfRUFDSF9MTElOVF9OQVRJ
VkVfSEVMUEVSKERFQ0xBUkVfTExJTlRfTkFUSVZFX0hFTFBFUikKKyN1bmRlZiBERUNMQVJFX0xM
SU5UX05BVElWRV9IRUxQRVIKKworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisK
Ky8vIG1sYW0gQkVHSU4gZGVidWcKK25hbWVzcGFjZSBKU0MgeworSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBtbGFtVHJhcCgpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBtbGFtQnJlYWsoY29uc3Qg
Y2hhciogY29tbWVudCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisvLyBtbGFtIEVORCBkZWJ1ZwogCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHdv
cmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksOCBAQCBkZWYgYXJtVjdMb3dlclJlZ2lzdGVyUmV1
c2UobGlzdCkKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4g
ImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0Iiwg
ImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCiAgICAgICAgICAgICAgICAgImNwZXEiLCAiY3Bu
ZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJj
cGx0IiwgImNwbHRlcSIsCi0gICAgICAgICAgICAgICAgInRpbyIsICJ0aXMiLCAidGl6IiwgInRp
bnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAidHBzIiwgInRweiIsICJ0
cG56IiwKKyAgICAgICAgICAgICAgICAjIG1sYW0gVU5VU0VEICJ0aW8iLCAidGlzIiwgInRpeiIs
ICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiLCAidHBvIiwgInRwcyIsICJ0cHoi
LCAidHBueiIsCisgICAgICAgICAgICAgICAgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0YnMiLCAi
dGJ6IiwgInRibnoiLCAidHBzIiwgInRweiIsICJ0cG56IiwKICAgICAgICAgICAgICAgICAiY2Jl
cSIsICJjYm5lcSIsICJjYmEiLCAiY2JhZXEiLCAiY2JiIiwgImNiYmVxIiwgImNiZ3QiLCAiY2Jn
dGVxIiwgImNibHQiLCAiY2JsdGVxIgogICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAyCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9k
ZS5vcGVyYW5kc1sxXQpAQCAtOTQwLDkgKzk0MSw5IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAg
ICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgogICAgICAgICAgICAgZW1pdEFybVY3
VGVzdChvcGVyYW5kcykKICAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbLTFd
LmFzbUxhYmVsfSIKLSAgICAgICAgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCi0gICAgICAg
ICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQotICAgICAgICAgICAgJGFzbS5wdXRzICJidnMg
I3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gImJ0
aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRBcm1WN1Rl
c3Qob3BlcmFuZHMpCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgJGFzbS5wdXRzICJidnMgI3tv
cGVyYW5kc1stMV0uYXNtTGFiZWx9IgogICAgICAgICB3aGVuICJidGlzIiwgImJ0cHMiLCAiYnRi
cyIKICAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCiAgICAgICAgICAgICAkYXNt
LnB1dHMgImJtaSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCkBAIC05ODIsOCArOTgzLDggQEAg
Y2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJsdCIpCiAgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiLCAiY2JsdGVxIgogICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKLSAgICAgICAgd2hlbiAidGlv
IiwgInRibyIsICJ0cG8iCi0gICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAi
dnMiKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRpbyIsICJ0Ym8iLCAidHBvIgorICAg
ICAgICAjIG1sYW0gVU5VU0VEICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCiAg
ICAgICAgIHdoZW4gInRpcyIsICJ0YnMiLCAidHBzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVz
dFNldChvcGVyYW5kcywgIm1pIikKICAgICAgICAgd2hlbiAidGl6IiwgInRieiIsICJ0cHoiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHdvcmtpbmcg
Y29weSkKQEAgLTkzLDkgKzkzLDE2IEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICBAYW5ub3Rh
dGlvbiA9IG5pbAogICAgICAgICBAY29kZU9yaWdpbiA9IG5pbAogICAgICAgICBAaW50ZXJuYWxD
b21tZW50ID0gbmlsCisgICAgICAgIEBzb3VyY2VJbnN0cnVjdGlvbiA9IG5pbAogICAgICAgICBy
ZXN1bHQKICAgICBlbmQKICAgICAKKyAgICAjIFB1dHMgYSBDIFN0YXRlbWVudCBpbiB0aGUgb3V0
cHV0IHN0cmVhbS4KKyAgICBkZWYgcHV0YygqbGluZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBz
dGF0ZSA9PSA6YXNtCisgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiICAgICIgKyBsaW5l
LmpvaW4oJycpLCBsYXN0Q29tbWVudCkpCisgICAgZW5kCisgICAgCiAgICAgZGVmIGZvcm1hdER1
bXAoZHVtcFN0ciwgY29tbWVudCwgY29tbWVudENvbHVtbnM9JHByZWZlcnJlZENvbW1lbnRTdGFy
dENvbHVtbikKICAgICAgICAgaWYgY29tbWVudC5sZW5ndGggPiAwCiAgICAgICAgICAgICAiJS0j
e2NvbW1lbnRDb2x1bW5zfXMgJXMiICUgW2R1bXBTdHIsIGNvbW1lbnRdCkBAIC0xNTEsNyArMTU4
LDExIEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICBAbnVtR2xvYmFsTGFiZWxzICs9IDEKICAg
ICAgICAgcHV0c05ld2xpbmVTcGFjZXJJZkFwcHJvcHJpYXRlKDpnbG9iYWwpCiAgICAgICAgIEBp
bnRlcm5hbENvbW1lbnQgPSAkZW5hYmxlTGFiZWxDb3VudENvbW1lbnRzID8gIkdsb2JhbCBMYWJl
bCAje0BudW1HbG9iYWxMYWJlbHN9IiA6IG5pbAotICAgICAgICBAb3V0cC5wdXRzKGZvcm1hdER1
bXAoIk9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTCgje2xhYmVsTmFtZX0pIiwgbGFzdENvbW1lbnQp
KQorICAgICAgICBpZiAvXEFsbGludF9vcF8vLm1hdGNoKGxhYmVsTmFtZSkKKyAgICAgICAgICAg
IEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wXyN7JH4u
cG9zdF9tYXRjaH0pIiwgbGFzdENvbW1lbnQpKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBA
b3V0cC5wdXRzKGZvcm1hdER1bXAoIk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwoI3tsYWJlbE5hbWV9
KSIsIGxhc3RDb21tZW50KSkKKyAgICAgICAgZW5kCiAgICAgICAgIEBuZXdsaW5lU3BhY2VyU3Rh
dGUgPSA6bm9uZSAjIEFmdGVyIGEgZ2xvYmFsIGxhYmVsLCB3ZSBjYW4gdXNlIGFub3RoZXIgc3Bh
Y2VyLgogICAgIGVuZAogICAgIApAQCAtMTcxLDYgKzE4MiwxNCBAQCBjbGFzcyBBc3NlbWJsZXIK
ICAgICAgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgogICAgIGVu
ZAogICAgIAorICAgIGRlZiBzZWxmLmNMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAg
ICIje2xhYmVsTmFtZX0iCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYuY0xvY2FsTGFiZWxS
ZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICAgICAiI3tsYWJlbE5hbWV9IgorICAgIGVuZAorICAg
IAogICAgIGRlZiBjb2RlT3JpZ2luKHRleHQpCiAgICAgICAgIGNhc2UgQGNvbW1lbnRTdGF0ZQog
ICAgICAgICB3aGVuIDpub25lCkBAIC0xOTYsNiArMjE1LDkgQEAgY2xhc3MgQXNzZW1ibGVyCiAg
ICAgZGVmIGFubm90YXRpb24odGV4dCkKICAgICAgICAgQGFubm90YXRpb24gPSB0ZXh0CiAgICAg
ZW5kCisgICAgZGVmIHNvdXJjZUluc3RydWN0aW9uKHRleHQpCisgICAgICAgIEBzb3VyY2VJbnN0
cnVjdGlvbiA9IHRleHQKKyAgICBlbmQKIGVuZAogCiBhc21GaWxlID0gQVJHVi5zaGlmdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlz
aW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRz
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTQgQEAgcmVxdWlyZSAiY29uZmlnIgog
cmVxdWlyZSAiYXJtdjciCiByZXF1aXJlICJhc3QiCiByZXF1aXJlICJ4ODYiCityZXF1aXJlICJj
bG9vcCIKIAogQkFDS0VORFMgPQogICAgIFsKICAgICAgIlg4NiIsCiAgICAgICJYODZfNjQiLAot
ICAgICAiQVJNdjciCisgICAgICJBUk12NyIsCisgICAgICJDX0xPT1AiCiAgICAgXQogCiAjIEtl
ZXAgdGhlIHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBi
YWNrZW5kcyB0aGF0IG1pZ2h0IGJlCkBAIC00Miw3ICs0NCw4IEBAIFdPUktJTkdfQkFDS0VORFMg
PQogICAgIFsKICAgICAgIlg4NiIsCiAgICAgICJYODZfNjQiLAotICAgICAiQVJNdjciCisgICAg
ICJBUk12NyIsCisgICAgICJDX0xPT1AiCiAgICAgXQogCiBCQUNLRU5EX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQpAQCAtNzYsMTIg
Kzc5LDE4IEBAIGNsYXNzIExhYmVsUmVmZXJlbmNlCiAgICAgZGVmIGFzbUxhYmVsCiAgICAgICAg
IEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKICAgICBlbmQKKyAgICBkZWYg
Y0xhYmVsCisgICAgICAgIEFzc2VtYmxlci5jTGFiZWxSZWZlcmVuY2UobmFtZVsxLi4tMV0pCisg
ICAgZW5kCiBlbmQKIAogY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQogICAgIGRlZiBhc21MYWJl
bAogICAgICAgICBBc3NlbWJsZXIubG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIitu
YW1lWzEuLi0xXSkKICAgICBlbmQKKyAgICBkZWYgY0xhYmVsCisgICAgICAgIEFzc2VtYmxlci5j
TG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgICBlbmQK
IGVuZAogCiBjbGFzcyBTa2lwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2Nsb29wLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwODUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImNvbmZpZyIKK3JlcXVpcmUgImFz
dCIKK3JlcXVpcmUgIm9wdCIKKworZGVmIGNsb29wTWFwVHlwZSh0eXBlKQorICAgIGNhc2UgdHlw
ZQorICAgIHdoZW4gOmludDsgICAgICAgICAgICAiLnUuaSIKKyAgICB3aGVuIDp1aW50OyAgICAg
ICAgICAgIi51LnUiCisgICAgd2hlbiA6aW50MzI7ICAgICAgICAgICIudS5pMzIiCisgICAgd2hl
biA6dWludDMyOyAgICAgICAgICIudS51MzIiCisgICAgd2hlbiA6aW50ODsgICAgICAgICAgICIu
dS5pOCIKKyAgICB3aGVuIDp1aW50ODsgICAgICAgICAgIi51LnU4IgorICAgIHdoZW4gOmludDhQ
dHI7ICAgICAgICAiLnUuaThwIgorICAgIHdoZW4gOnZvaWRQdHI7ICAgICAgICAiLnUudnAiCisg
ICAgIyBtbGFtIHdoZW4gOmluc3RydWN0aW9uOyAgICAiLnUuaW5zdHJ1Y3Rpb24iCisgICAgd2hl
biA6bmF0aXZlRnVuYzsgICAgICIudS5uYXRpdmVGdW5jIgorICAgIHdoZW4gOmRvdWJsZTsgICAg
ICAgICAiLnUuZCIKKyAgICB3aGVuIDpjYXN0VG9Eb3VibGU7ICAgIi51LmNhc3RUb0RvdWJsZSIK
KyAgICB3aGVuIDpjYXN0VG9Wb2lkUHRyOyAgIi51LmNhc3RUb1ZvaWRQdHIiCisgICAgZWxzZTsK
KyAgICAgICAgcmFpc2UgIlVuc3VwcG9ydGVkIHR5cGUiCisgICAgZW5kCitlbmQKKworCitjbGFz
cyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgICAgZGVmIGR1bXAKKyAgICAgICAgQG5h
bWUKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTppbnQpCisgICAgICAgIEBuYW1lICsg
Y2xvb3BNYXBUeXBlKHR5cGUpCisgICAgZW5kCitlbmQKKworQ19MT09QX1NDUkFUQ0hfRlBSID0g
U3BlY2lhbFJlZ2lzdGVyLm5ldygiZDgiKQorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIGR1
bXAKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAg
ICAgICAgICAgInIwIgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAg
ICJyMSIKKyAgICAgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAicjIiCisgICAgICAg
IHdoZW4gInQzIgorICAgICAgICAgICAgInI0IgorICAgICAgICB3aGVuICJ0NCIKKyAgICAgICAg
ICAgICJyUEMiCisgICAgICAgIHdoZW4gInQ2IgorICAgICAgICAgICAgInJCYXNlUEMiCisgICAg
ICAgIHdoZW4gImNzcjEiCisgICAgICAgICAgICAidGFnVHlwZU51bWJlciIKKyAgICAgICAgd2hl
biAiY3NyMiIKKyAgICAgICAgICAgICJ0YWdNYXNrIgorICAgICAgICB3aGVuICJjZnIiCisgICAg
ICAgICAgICAiZnAiCisgICAgICAgIHdoZW4gImxyIgorICAgICAgICAgICAgInJSZXRWUEMiCisg
ICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAgICAgICBlbHNlCisgICAgICAg
ICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIENfTE9PUCBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTpp
bnQpCisgICAgICAgIGR1bXAgKyBjbG9vcE1hcFR5cGUodHlwZSkKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBGUFJlZ2lzdGVySUQKKyAgICBkZWYgZHVtcAorICAgICAgICBjYXNlIG5hbWUKKyAgICAg
ICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgICAgICAgImQwIgorICAgICAgICB3aGVuICJmdDEi
CisgICAgICAgICAgICAiZDEiCisgICAgICAgIHdoZW4gImZ0MiIKKyAgICAgICAgICAgICJkMiIK
KyAgICAgICAgd2hlbiAiZnQzIgorICAgICAgICAgICAgImQzIgorICAgICAgICB3aGVuICJmdDQi
CisgICAgICAgICAgICAiZDQiCisgICAgICAgIHdoZW4gImZ0NSIKKyAgICAgICAgICAgICJkNSIK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZv
ciBDX0xPT1AgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisg
ICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBkdW1wICsgY2xvb3BNYXBUeXBlKHR5
cGUpCisgICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIiN7dmFsdWV9IgorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAgICAg
ICAgIyBUaGVyZSBpcyBhIGNhc2Ugb2YgYSB2ZXJ5IGxhcmdlIHVuc2lnbmVkIG51bWJlciAoMHg4
MDAwMDAwMDAwMDAwMDAwKQorICAgICAgICAjIHdoaWNoIHdlIHdpc2ggdG8gZW5jb2RlLiAgVW5m
b3J0dW5hdGVseSwgdGhlIEMvQysrIGNvbXBpbGVyCisgICAgICAgICMgY29tcGxhaW50cyBpZiB3
ZSBleHByZXNzIHRoYXQgbnVtYmVyIGFzIGEgcG9zaXRpdmUgZGVjaW1hbCBpbnRlZ2VyLgorICAg
ICAgICAjIEhlbmNlLCBmb3IgcG9zaXRpdmUgdmFsdWVzLCB3ZSBqdXN0IGNvbnZlcnQgdGhlIG51
bWJlciBpbnRvIGhleCBmb3JtCisgICAgICAgICMgdG8ga2VlcCB0aGUgY29tcGlsZXIgaGFwcHku
CisgICAgICAgICMKKyAgICAgICAgIyBIb3dldmVyLCBmb3IgbmVnYXRpdmUgdmFsdWVzLCB0aGUg
dG9fcygxNikgaGV4IGNvbnZlcnNpb24gbWV0aG9kIGRvZXMKKyAgICAgICAgIyBub3Qgc3RyaXAg
dGhlICItIiBzaWduIHJlc3VsdGluZyBpbiBhIG1lYW5pbmdsZXNzICIweC0uLi4iIHZhbHVlU3Ry
LgorICAgICAgICAjIFRvIHdvcmthcm91bmQgdGhpcywgd2Ugc2ltcGx5IGRvbid0IGVuY29kZSBu
ZWdhdGl2ZSBudW1iZXJzIGFzIGhleC4KKyAgICAgICAgdmFsdWVTdHIgPSAodmFsdWUgPCAwKSA/
ICIje3ZhbHVlfSIgOiAiMHgje3ZhbHVlLnRvX3MoMTYpfSIKKworICAgICAgICBjYXNlIHR5cGUK
KyAgICAgICAgd2hlbiA6aW50ODsgICAgInN0YXRpY19jYXN0PGludDhfdD4oI3t2YWx1ZVN0cn0p
IgorICAgICAgICB3aGVuIDppbnQzMjsgICAic3RhdGljX2Nhc3Q8aW50MzJfdD4oI3t2YWx1ZVN0
cn0pIgorICAgICAgICB3aGVuIDppbnQ7ICAgICAic3RhdGljX2Nhc3Q8aW50cHRyX3Q+KCN7dmFs
dWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6dWludDg7ICAgInN0YXRpY19jYXN0PHVpbnQ4X3Q+KCN7
dmFsdWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6dWludDMyOyAgInN0YXRpY19jYXN0PHVpbnQzMl90
Pigje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOnVpbnQ7ICAgICJzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KCN7dmFsdWVTdHJ9KSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIk5v
dCBpbXBsZW1lbnRlZCBpbW1lZGlhdGUgb2YgdHlwZTogI3t0eXBlfSIgCisgICAgICAgIGVuZAor
ICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgZHVtcAorICAgICAgICAiWyN7
YmFzZS5kdW1wfSwgI3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0
eXBlPTppbnQpCisgICAgICAgIGNhc2UgdHlwZQorICAgICAgICB3aGVuIDppbnQ4OyAgICAgICAg
IGludDhNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50MzI7ICAgICAgICBpbnQzMk1lbVJlZgorICAg
ICAgICB3aGVuIDppbnQ7ICAgICAgICAgIGludE1lbVJlZgorICAgICAgICB3aGVuIDp1aW50ODsg
ICAgICAgIHVpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4gOnVpbnQzMjsgICAgICAgdWludDMyTWVt
UmVmCisgICAgICAgIHdoZW4gOnVpbnQ7ICAgICAgICAgdWludE1lbVJlZgorICAgICAgICAjIG1s
YW0gd2hlbiA6aW5zdHJ1Y3Rpb247IGludE1lbVJlZgorICAgICAgICB3aGVuIDpvcGNvZGU7ICAg
ICAgIG9wY29kZU1lbVJlZgorICAgICAgICB3aGVuIDpuYXRpdmVGdW5jOyAgIG5hdGl2ZUZ1bmNN
ZW1SZWYKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgQWRkcmVz
cyB0eXBlOiAje3R5cGV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgcG9pbnRlckV4
cHIKKyAgICAgICAgaWYgYmFzZS5pc19hPyBSZWdpc3RlcklEIGFuZCBiYXNlLm5hbWUgPT0gInNw
IiAKKyAgICAgICAgICAgIG9mZnNldFZhbHVlID0gIiN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAg
ICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFsdWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGds
b2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSIKKyAgICAgICAgZWxzaWYgb2Zmc2V0LnZhbHVl
ID09IDAKKyAgICAgICAgICAgICIje2Jhc2UuY2xWYWx1ZSg6aW50OFB0cil9IgorICAgICAgICBl
bHNpZiBvZmZzZXQudmFsdWUgPiAwCisgICAgICAgICAgICAiI3tiYXNlLmNsVmFsdWUoOmludDhQ
dHIpfSArICN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFz
ZS5jbFZhbHVlKDppbnQ4UHRyKX0gLSAjey1vZmZzZXQudmFsdWV9IgorICAgICAgICBlbmQKKyAg
ICBlbmQKKyAgICBkZWYgaW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90Kj4oI3twb2lu
dGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiBpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8
aW50MTZfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MzJNZW1SZWYK
KyAgICAgICAgIipDQVNUPGludDMyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAg
ZGVmIGludE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50cHRyX3QqPigje3BvaW50ZXJFeHByfSki
CisgICAgZW5kCisgICAgZGVmIHVpbnQ4TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50OF90Kj4o
I3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50MTZNZW1SZWYKKyAgICAgICAg
IipDQVNUPHVpbnQxNl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50
MzJNZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQzMl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAg
IGVuZAorICAgIGRlZiB1aW50TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50cHRyX3QqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIG5hdGl2ZUZ1bmNNZW1SZWYKKyAgICAgICAg
IipDQVNUPE5hdGl2ZUZ1bmN0aW9uKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRl
ZiBvcGNvZGVNZW1SZWYKKyAgICAgICAgIipDQVNUPExMSW50T3Bjb2RlKj4oI3twb2ludGVyRXhw
cn0pIgorICAgIGVuZAorICAgIGRlZiBkYmxNZW1SZWYKKyAgICAgICAgIipDQVNUPGRvdWJsZSo+
KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBk
ZWYgZHVtcAorICAgICAgICAiWyN7YmFzZS5kdW1wfSwgI3tvZmZzZXQuZHVtcH0sICN7aW5kZXgu
ZHVtcH0gPDwgI3tzY2FsZVNoaWZ0fV0iCisgICAgZW5kCisgICAgZGVmIGNsVmFsdWUodHlwZT06
aW50KQorICAgICAgICBjYXNlIHR5cGUKKyAgICAgICAgd2hlbiA6aW50ODsgICAgaW50OE1lbVJl
ZgorICAgICAgICB3aGVuIDppbnQzMjsgICBpbnQzMk1lbVJlZgorICAgICAgICB3aGVuIDppbnQ7
ICAgICBpbnRNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDg7ICAgdWludDhNZW1SZWYKKyAgICAg
ICAgd2hlbiA6dWludDMyOyAgdWludDMyTWVtUmVmCisgICAgICAgIHdoZW4gOnVpbnQ7ICAgIHVp
bnRNZW1SZWYKKyAgICAgICAgd2hlbiA6b3Bjb2RlOyAgb3Bjb2RlTWVtUmVmCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIEJhc2VJbmRleCB0eXBlOiAje3R5cGV9
IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgcG9pbnRlckV4cHIKKyAgICAgICAgaWYg
YmFzZS5pc19hPyBSZWdpc3RlcklEIGFuZCBiYXNlLm5hbWUgPT0gInNwIgorICAgICAgICAgICAg
b2Zmc2V0VmFsdWUgPSAiKCN7aW5kZXguY2xWYWx1ZSg6aW50MzIpfSA8PCAje3NjYWxlU2hpZnR9
KSArICN7b2Zmc2V0LmNsVmFsdWV9KSIKKyAgICAgICAgICAgICIoYXNzZXJ0KCN7b2Zmc2V0VmFs
dWV9ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxE
YXRhKSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7YmFzZS5jbFZhbHVlKDppbnQ4UHRy
KX0gKyAoI3tpbmRleC5jbFZhbHVlKDppbnQzMil9IDw8ICN7c2NhbGVTaGlmdH0pICsgI3tvZmZz
ZXQuY2xWYWx1ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBpbnQ4TWVtUmVmCisg
ICAgICAgICIqQ0FTVDxpbnQ4X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVm
IGludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnQxNl90Kj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorICAgIGRlZiBpbnQzMk1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50MzJfdCo+KCN7
cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50TWVtUmVmCisgICAgICAgICIqQ0FT
VDxpbnRwdHJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDhNZW1S
ZWYKKyAgICAgICAgIipDQVNUPHVpbnQ4X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisg
ICAgZGVmIHVpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDE2X3QqPigje3BvaW50ZXJF
eHByfSkiCisgICAgZW5kCisgICAgZGVmIHVpbnQzMk1lbVJlZgorICAgICAgICAiKkNBU1Q8dWlu
dDMyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIHVpbnRNZW1SZWYKKyAg
ICAgICAgIipDQVNUPHVpbnRwdHJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBk
ZWYgb3Bjb2RlTWVtUmVmCisgICAgICAgICIqQ0FTVDxMTEludE9wY29kZSo+KCN7cG9pbnRlckV4
cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUq
Pigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNz
CisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisg
ICAgZGVmIGNsVmFsdWUKKyAgICAgICAgZHVtcAorICAgIGVuZAorZW5kCisKKworIworIyBMZWEg
c3VwcG9ydC4KKyMKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBjbG9vcEVtaXRMZWEoZGVzdGlu
YXRpb24sIHR5cGUpCisgICAgICAgIGlmIGRlc3RpbmF0aW9uID09IGJhc2UKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tkZXN0aW5hdGlvbi5jbFZhbHVlKDppbnQ4UHRyKX0gKz0gI3tvZmZzZXQu
Y2xWYWx1ZSh0eXBlKX07IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7
ZGVzdGluYXRpb24uY2xWYWx1ZSg6aW50OFB0cil9ID0gI3tiYXNlLmNsVmFsdWUoOmludDhQdHIp
fSArICN7b2Zmc2V0LmNsVmFsdWUodHlwZSl9OyIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQK
KworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGNsb29wRW1pdExlYShkZXN0aW5hdGlvbiwgdHlw
ZSkKKyAgICAgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUg
emVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAg
ICAgICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmNsVmFsdWUoOmludDhQdHIpfSA9ICN7YmFz
ZS5jbFZhbHVlKDppbnQ4UHRyKX0gKyAoI3tpbmRleC5jbFZhbHVlfSA8PCAje3NjYWxlU2hpZnR9
KTsiCisgICAgZW5kCitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFk
ZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2Rl
IGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisgICAgZGVmIGdldE1vZGlmaWVkTGlzdENf
TE9PUAorICAgICAgICBteUxpc3QgPSBAbGlzdAorICAgICAgICAKKyAgICAgICAgIyBWZXJpZnkg
dGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGluc3RydWN0aW9ucyBhbmQgbGFiZWxzLgorICAgICAgICBt
eUxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgdW5sZXNzIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24gb3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBM
YWJlbCBvcgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBTa2lwCisgICAgICAgICAgICAgICAgcmFpc2Ug
IlVuZXhwZWN0ZWQgI3tub2RlLmluc3BlY3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG15TGlzdAor
ICAgIGVuZAorZW5kCisKK2RlZiBjbE9wZXJhbmRzKG9wZXJhbmRzKQorICAgIG9wZXJhbmRzLm1h
cHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCitlbmQKKworIyBtbGFtIEJFR0lOCitkZWYgbWxhbUR1
bXBPcGVyYXRpb24yQXJncyhvcGVyYW5kcywgdHlwZSwgb3BlcmF0b3IpCisgICAgY2FzZSB0eXBl
CisgICAgd2hlbiA6aW50MzI7ICB2ZiA9ICIlZCIKKyAgICB3aGVuIDppbnQ7ICAgIHZmID0gIiVs
ZCIKKyAgICB3aGVuIDp1aW50MzI7IHZmID0gIiV1IgorICAgIHdoZW4gOnVpbnQ7ICAgdmYgPSAi
JWx1IgorICAgIHdoZW4gOmRvdWJsZTsgdmYgPSAiJWUiCisgICAgZWxzZQorICAgICAgICByYWlz
ZSAiT29wcz8gdHlwZTogI3t0eXBlfSIKKyAgICBlbmQgICAgCisKKyAgICAkYXNtLnB1dGMgIiAg
ICAgICAgI2lmIG1sYW1fUFJJTlRGMCIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwi
XFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTsi
CisgICAgaWYgdHlwZSA9PSA6ZG91YmxlCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMwor
ICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIiAgICAgICN7b3BlcmF0b3J9
IHR5cGUgI3t0eXBlfSB8ICN7dmZ9ICN7b3BlcmF0b3J9ICN7dmZ9ID0+ICN7dmZ9IFxcblwiLCAj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9
LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBd
LmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSB1bmxl
c3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJp
bnRmKFwiICAgICAgI3tvcGVyYXRvcn0gdHlwZSAje3R5cGV9IHwgKCN7dmZ9ICN7b3BlcmF0b3J9
PSAje3ZmfSkgPT4gI3t2Zn0gXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICgje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9
ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGVyYXRvcn0gdHlwZSAje3R5cGV9
IHwgPCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9IFslcF0gI3tvcGVyYXRvcn0gPCN7b3BlcmFu
ZHNbMF0uZHVtcH0+ICN7dmZ9IFslcF0gPT4gPCN7b3BlcmFuZHNbMl0uZHVtcH0+ICN7dmZ9IFsl
cF1cXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNb
MV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikj
e29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9KSwgKHZvaWQqKSgje29w
ZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSh0eXBlKX0pKTsiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kcy5zaXplID09IDIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIg
ICAgICAje29wZXJhdG9yfSB0eXBlICN7dHlwZX0gfCA8I3tvcGVyYW5kc1sxXS5kdW1wfT4gI3t2
Zn0gWyVwXSAje29wZXJhdG9yfSA8I3tvcGVyYW5kc1swXS5kdW1wfT4gI3t2Zn0gWyVwXSkgPT4g
PCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9IFslcF1cXG5cIiwgI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9
LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBd
LmNsVmFsdWUodHlwZSl9KSwgKHZvaWQqKSgje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7
b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgIGVuZAor
ICAgIGVuZAorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAg
ICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJTlRGIgorZW5kCisjIG1sYW0gRU5ECisKK2RlZiBjbG9v
cEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQorICAgIG1sYW1EdW1wT3Bl
cmF0aW9uMkFyZ3Mob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQorICAgIGlmIG9wZXJhbmRzLnNp
emUgPT0gMworICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMl0uY2xWYWx1ZSh0eXBlKX0g
PSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0u
Y2xWYWx1ZSh0eXBlKX07IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRz
LnNpemUgPT0gMgorICAgICAgICByYWlzZSB1bmxlc3Mgbm90IG9wZXJhbmRzWzFdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0g
PSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ICN7b3BlcmF0b3J9ICN7b3BlcmFuZHNbMF0u
Y2xWYWx1ZSh0eXBlKX07IgorICAgIGVuZAorZW5kCisKK2RlZiBjbG9vcEVtaXRDb21wYXJlRG91
YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCBjb25kaXRpb24pCisgICAgJGFzbS5w
dXRjICJpZiAoaXNuYW4oI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfSkgfHwgaXNuYW4o
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSkiCisgICAgJGFzbS5wdXRjICIgICAgfHwg
KCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6ZG91YmxlKX0gI3tjb25kaXRpb259ICN7b3BlcmFuZHNb
MV0uY2xWYWx1ZSg6ZG91YmxlKX0pKSIKKyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFu
ZHNbMl0uY0xhYmVsfTsiCitlbmQKKworCitkZWYgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVy
YW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAjIFRoZSByZXN1bHQgaXMgYSBib29sZWFuLiAg
SGVuY2UsIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBiYXNlZCBvbiB0aGUgdHlwZQorICAgICMgb2Yg
dGhlIGFyZ3VtZW50cyBiZWluZyBjb21wYXJlZC4KKyAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNb
Ml0uY2xWYWx1ZX0gPSAoI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9
ICN7b3AyID0gb3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0pOyIKK2VuZAorCisjIG1sYW0gQkVH
SU4gREVCVUcgb25seQorZGVmIG1sYW1EdW1wQ29tcGFyZUFuZEJyYW5jaEFyZ3Mob3BlcmFuZHMs
IHR5cGUsIGNvbXBhcmF0b3IpCisgICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50LCA6aW50MzIs
IDppbnQ4CisgICAgICAgICRhc20ucHV0YyAiI2lmIG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNt
LnB1dGMgInByaW50ZihcIlxcbiBtbGFtIENPTVBBUkUgbGhzICVsZCAlcCAje2NvbXBhcmF0b3J9
IHJocyAlbGQgJXAgPT0+IHJlc3VsdCAlZFxcblxcblwiLCAoaW50cHRyX3QpI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sIChp
bnRwdHJfdCkje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKHR5cGUpfSwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJh
dG9yfSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICAkYXNtLnB1dGMg
IiNlbmRpZiAvLyBtbGFtX1BSSU5URiIKKyAgICB3aGVuIDp1aW50LCA6dWludDMyLCA6dWludDgK
KyAgICAgICAgJGFzbS5wdXRjICIjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICRhc20ucHV0YyAi
cHJpbnRmKFwiXFxuIG1sYW0gQ09NUEFSRSBsaHMgJWx1ICVwICN7Y29tcGFyYXRvcn0gcmhzICVs
dSAlcCA9PT4gcmVzdWx0ICVkXFxuXFxuXCIsICh1aW50cHRyX3QpI3tvcGVyYW5kc1swXS5jbFZh
bHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sICh1aW50cHRy
X3QpI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgKHZvaWQqKSN7b3BlcmFuZHNbMV0uY2xW
YWx1ZSh0eXBlKX0sICgje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0g
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSkpOyIKKyAgICAgICAgJGFzbS5wdXRjICIjZW5k
aWYgLy8gbWxhbV9QUklOVEYiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAgICRhc20ucHV0YyAi
I2lmIG1sYW1fUFJJTlRGIgorICAgICAgICAkYXNtLnB1dGMgInByaW50ZihcIlxcbiBtbGFtIENP
TVBBUkUgbGhzICVlICN7Y29tcGFyYXRvcn0gcmhzICVlID09PiByZXN1bHQgJWRcXG5cXG5cIiwg
I3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29wZXJhbmRz
WzFdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICAkYXNtLnB1dGMgIiNlbmRpZiAvLyBtbGFt
X1BSSU5URiIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJPb3BzOiB0eXBlID0gI3t0eXBlfSIK
KyAgICBlbmQKK2VuZAorIyBtbGFtIEVORCBERUJVRyBvbmx5CisKK2RlZiBjbG9vcEVtaXRDb21w
YXJlQW5kQnJhbmNoKG9wZXJhbmRzLCB0eXBlLCBjb21wYXJhdG9yKQorICAgICMgbWxhbUR1bXBD
b21wYXJlQW5kQnJhbmNoQXJncyhvcGVyYW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAkYXNt
LnB1dGMgImlmICgje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tv
cGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSkiCisgICAgJGFzbS5wdXRjICIgICAgZ290byAje29w
ZXJhbmRzWzJdLmNMYWJlbH07IgorZW5kCisKKworIyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250
YWluIGEgc3RyaW5nIHRoYXQgcHJvdmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1
ZSBlLmcuICI8IDAiLgorZGVmIGNsb29wR2VuZXJhdGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJh
bmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFsdWUo
dHlwZSkKKworICAgICMgVGhlIG9wZXJhbmRzIG11c3QgY29uc2lzdCBvZiAyIG9yIDMgdmFsdWVz
LgorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMiAjIEp1c3QgdGVzdCBvcDEgYWdh
aW5zdCB0aGUgY29uZGl0aW9uVGVzdC4KKyAgICAgICAgbGhzID0gb3AxCisgICAgd2hlbiAzICMg
TWFzayBvcDEgd2l0aCBvcDIgYmVmb3JlIHRlc3RpbmcgYWdhaW5zdCB0aGUgY29uZGl0aW9uVGVz
dC4KKyAgICAgICAgbGhzID0gIigje29wMX0gJiAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9
KSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0
IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisg
ICAgCisgICAgIiN7bGhzfSAje2NvbmRpdGlvblRlc3R9IgorZW5kCisKKyMgY29uZGl0aW9uVGVz
dCBzaG91bGQgY29udGFpbiBhIHN0cmluZyB0aGF0IHByb3ZpZGVzIGEgY29tcGFyYXRvciBhbmQg
YSBSSFMKKyMgdmFsdWUgZS5nLiAiPCAwIi4KK2RlZiBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYo
b3BlcmFuZHMsIHR5cGUsIGNvbmRpdGlvblRlc3QsIGJyYW5jaFRhcmdldCkKKyAgICBjb25kaXRp
b25FeHByID0gY2xvb3BHZW5lcmF0ZUNvbmRpdGlvbkV4cHJlc3Npb24ob3BlcmFuZHMsIHR5cGUs
IGNvbmRpdGlvblRlc3QpCisgICAgJGFzbS5wdXRjICJpZiAoI3tjb25kaXRpb25FeHByfSkiCisg
ICAgJGFzbS5wdXRjICIgICAgZ290byAje2JyYW5jaFRhcmdldH07IgorZW5kCisKK2RlZiBjbG9v
cEVtaXRUZXN0U2V0KG9wZXJhbmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgICMgVGhlIHJl
c3VsdCBpcyBhIGJvb2xlYW4gY29uZGl0aW9uLiAgSGVuY2UsIHRoZSByZXN1bHQgdHlwZSBpcyBh
bHdheXMgYW4KKyAgICAjIGludC4gIFRoZSBwYXNzZWQgaW4gdHlwZSBpcyBvbmx5IHVzZWQgZm9y
IHRoZSB2YWx1ZXMgYmVpbmcgdGVzdGVkIGluCisgICAgIyB0aGUgY29uZGl0aW9uIHRlc3QuCisg
ICAgY29uZGl0aW9uRXhwciA9IGNsb29wR2VuZXJhdGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJh
bmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1stMV0u
Y2xWYWx1ZX0gPSAoI3tjb25kaXRpb25FeHByfSk7IgorZW5kCisKK2RlZiBjbG9vcEVtaXRPcEFu
ZEJyYW5jaChvcGVyYW5kcywgb3BlcmF0b3IsIHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgY2Fz
ZSB0eXBlCisgICAgd2hlbiA6aW50OyAgIHRlbXBUeXBlID0gImludHB0cl90IgorICAgIHdoZW4g
OmludDMyOyB0ZW1wVHlwZSA9ICJpbnQzMl90IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVu
aW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKworICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFs
dWUodHlwZSkKKyAgICBvcDIgPSBvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpCisKKyAgICAkYXNt
LnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gdGVtcCA9ICN7b3AyfSAj
e29wZXJhdG9yfSAje29wMX07IgorICAgICRhc20ucHV0YyAiICAgIGlmICh0ZW1wICN7Y29uZGl0
aW9uVGVzdH0pIgorICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNM
YWJlbH07IgorICAgICRhc20ucHV0YyAiICAgICN7b3AyfSA9IHRlbXA7IgorICAgICRhc20ucHV0
YyAifSIKK2VuZAorCitkZWYgY2xvb3BBZGRPdmVyZmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUpCisg
ICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50MzIKKyAgICAgICAgdGVtcFR5cGUgPSAiaW50MzJf
dCIKKyAgICAgICAgc2lnbkJpdCA9ICJTSUdOX0JJVDMyIgorICAgIGVsc2UKKyAgICAgICAgcmFp
c2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKworICAgICRhc20ucHV0YyAiICAgICN7
dGVtcFR5cGV9IGEgPSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1
dGMgIiAgICAje3RlbXBUeXBlfSBiID0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfTsiCisg
ICAgJGFzbS5wdXRjICIgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOiIKKyAg
ICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDAgICAgICAgfCBzaWduKGIrYSkgPSAxIChwb3Mg
KyBwb3MgIT0gbmVnKSIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDEgICAgICAgfCBu
ZXZlciIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDAgICAgICAgfCBuZXZlciIKKyAg
ICAkYXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDEgICAgICAgfCBzaWduKGIrYSkgPSAwIChuZWcg
KyBuZWcgIT0gcG9zKSIKKyAgICAiKCgje3NpZ25CaXR9KGIpID09ICN7c2lnbkJpdH0oYSkpICYm
ICgje3NpZ25CaXR9KGIrYSkgIT0gI3tzaWduQml0fShhKSkpIgorZW5kCisKK2RlZiBjbG9vcFN1
Yk92ZXJmbG93VGVzdChvcGVyYW5kcywgdHlwZSkKKyAgICBjYXNlIHR5cGUKKyAgICB3aGVuIDpp
bnQzMgorICAgICAgICB0ZW1wVHlwZSA9ICJpbnQzMl90IgorICAgICAgICBzaWduQml0ID0gIlNJ
R05fQklUMzIiCisgICAgZWxzZQorICAgICAgICByYWlzZSAiVW5pbXBsZW1lbnRlZCB0eXBlIgor
ICAgIGVuZAorCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYSA9ICN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSh0eXBlKX07IgorICAgICRhc20ucHV0YyAiICAgICN7dGVtcFR5cGV9IGIgPSAj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWdu
KGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6IgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAg
ICAgMCAgICAgICB8IG5ldmVyIgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAgMSAgICAg
ICB8IHNpZ24oYi1hKSA9IDEgKHBvcyAtIG5lZyAhPSBwb3MpIgorICAgICRhc20ucHV0YyAiICAg
IC8vIDEgICAgICAgMCAgICAgICB8IHNpZ24oYi1hKSA9IDAgKG5lZyAtIHBvcyAhPSBwb3MpIgor
ICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAgMSAgICAgICB8IG5ldmVyIgorICAgICIoKCN7
c2lnbkJpdH0oYikgIT0gI3tzaWduQml0fShhKSkgJiYgKCN7c2lnbkJpdH0oYi1hKSA9PSAje3Np
Z25CaXR9KGEpKSkiCitlbmQKKworZGVmIGNsb29wTXVsT3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0
eXBlKQorICAgIGNhc2UgdHlwZQorICAgIHdoZW4gOmludDMyCisgICAgICAgIHRlbXBUeXBlID0g
InVpbnQzMl90IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIK
KyAgICBlbmQKKyAgICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSBhID0gI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYiA9ICN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX07IgorICAgICIoKGIgfCBhKSA+PiAxNSkiCitlbmQK
KworZGVmIGNsb29wRW1pdE9wQW5kQnJhbmNoSWZPdmVyZmxvdyhvcGVyYW5kcywgb3BlcmF0b3Is
IHR5cGUpCisgICAgJGFzbS5wdXRjICJ7IgorCisgICAgIyBFbWl0IHRoZSBvdmVyZmxvdyB0ZXN0
IGJhc2VkIG9uIHRoZSBvcGVyYW5kcyBhbmQgdGhlIHR5cGU6CisgICAgY2FzZSBvcGVyYXRvcgor
ICAgIHdoZW4gIisiOyBvdmVyZmxvd1Rlc3QgPSBjbG9vcEFkZE92ZXJmbG93VGVzdChvcGVyYW5k
cywgdHlwZSkKKyAgICB3aGVuICItIjsgb3ZlcmZsb3dUZXN0ID0gY2xvb3BTdWJPdmVyZmxvd1Rl
c3Qob3BlcmFuZHMsIHR5cGUpCisgICAgd2hlbiAiKiI7IG92ZXJmbG93VGVzdCA9IGNsb29wTXVs
T3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0eXBlKQorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVu
aW1wbGVtZW50ZWQgb3BlYXJ0b3IiCisgICAgZW5kCisKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAj
e292ZXJmbG93VGVzdH0geyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRG
IgorICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAg
ICAgcHJpbnRmKFwiICAgICAgUG90ZW50aWFsICN7b3BlcmF0b3J9IG92ZXJmbG93ISEhISEgXFxu
XCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgJGFzbS5wdXRjICIgICAg
ICAgICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICN7
b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgJGFzbS5wdXRjICIgICAgfSIKKyAgICAkYXNtLnB1
dGMgIiAgICAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9OyIKKyAg
ICAkYXNtLnB1dGMgIiAgICAgICAgI2lmIG1sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAg
ICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09XFxuXCIpOyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tv
cGVyYXRvcn0gcmVzdWx0ID0gJWQgXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0p
OyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgJGFzbS5wdXRjICIgICAgICAg
ICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAifSIKK2VuZAorCisjIG9wZXJh
bmRzOiBjYWxsVGFyZ2V0LCBjdXJyZW50RnJhbWUsIGN1cnJlbnRQQworZGVmIGNsb29wRW1pdENh
bGxTbG93UGF0aChvcGVyYW5kcykKKyAgICAkYXNtLnB1dGMgInsiCisgICAgJGFzbS5wdXRjICIg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPigje29wZXJhbmRzWzFdLmNsVmFs
dWUoOnZvaWRQdHIpfSk7IgorICAgICRhc20ucHV0YyAiICAgIEluc3RydWN0aW9uKiBwYyA9IENB
U1Q8SW5zdHJ1Y3Rpb24qPigje29wZXJhbmRzWzJdLmNsVmFsdWUoOnZvaWRQdHIpfSk7IgorICAg
ICRhc20ucHV0YyAiICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSAje29wZXJhbmRzWzBd
LmNMYWJlbH0oZXhlYywgcGMpOyIKKyAgICAkYXNtLnB1dGMgIiAgICBMTEludDo6ZGVjb2RlUmVz
dWx0KHJlc3VsdCwgcjAudS5pbnN0cnVjdGlvbiwgcjEudS5leGVjU3RhdGUpOyIKKyAgICAkYXNt
LnB1dGMgIiAgICBBU1NFUlQoY2FsbEZyYW1lICE9IDApOyAvLyBtbGFtIERFQlVHIFRFU1Qgb25s
eSIKKyAgICAkYXNtLnB1dGMgIiAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgJGFzbS5wdXRjICIg
ICAgcHJpbnRmKFwibWxhbSBBRlRFUiBleGVjICVwIHBjICVwXFxuXCIsIHIxLnUuZXhlY1N0YXRl
LCByMC51Lmluc3RydWN0aW9uKTsiCisgICAgJGFzbS5wdXRjICIgICAgI2VuZGlmIC8vbWxhbV9Q
UklOVEYiCisgICAgJGFzbS5wdXRjICJ9IgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgICAg
ZGVmIGxvd2VyQ19MT09QCisgICAgICAgIEBtbGFtX1BSSU5URiA9IGZhbHNlCisgICAgICAgICRh
c20uY29kZU9yaWdpbiBjb2RlT3JpZ2luU3RyaW5nIGlmICRlbmFibGVDb2RlT3JpZ2luQ29tbWVu
dHMKKyAgICAgICAgJGFzbS5zb3VyY2VJbnN0cnVjdGlvbiAiI3tvcGNvZGV9ICN7Y2xPcGVyYW5k
cyhvcGVyYW5kcyl9OyIgaWYgJGVuYWJsZVNvdXJjZUluc3RydWN0aW9uRHVtcAorICAgICAgICAk
YXNtLmFubm90YXRpb24gYW5ub3RhdGlvbiBpZiAkZW5hYmxlSW5zdHJBbm5vdGF0aW9ucworCisg
ICAgICAgICMgbWxhbSBCRUdJTgorICAgICAgICBpZiBAbWxhbV9QUklOVEYgYW5kIChvcGNvZGUg
IT0gIm1sYW1EbyIpIGFuZCAob3Bjb2RlICE9ICJtbGFtRHVtcCIpIGFuZCAob3Bjb2RlICE9ICJs
b2NhbEFubm90YXRpb24iKQorICAgICAgICAgICAgbWxhbUNvbW1lbnQgPSBhbm5vdGF0aW9uID8g
IlxcdFxcdC8vICN7YW5ub3RhdGlvbi5nc3ViKCJcIiIsICJcXFwiIil9IiA6ICIiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiNpZiBVU0UoSlNWQUxVRTMyXzY0KSIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiICAgIHByaW50ZihcIiAgICBbcGMgJXAgZnAgJXAgbHIgJXBdIEFTTSAje29wY29kZX0g
I3tjbE9wZXJhbmRzKG9wZXJhbmRzKX0lc1xcblwiLCB2UEMsIGNhbGxGcmFtZSwgclJldFZQQy51
LnZwLCBcIiN7bWxhbUNvbW1lbnR9XCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBwcmludGYoXCIg
ICAgW3BjICVwIHBiICVwIGZwICVwIGNscmZwICVwIGxyICVwXSBBU00gI3tvcGNvZGV9ICN7Y2xP
cGVyYW5kcyhvcGVyYW5kcyl9JXNcXG5cIiwgdlBDLCByQmFzZVBDLnUudnAsIGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpPzA6Y2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZSgpLCByUmV0VlBDLnUudnAsIFwiI3ttbGFtQ29tbWVudH1cIik7IgorICAgICAgICAgICAgJGFz
bS5wdXRjICIjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgIHByaW50ZihcIiAgICBbcGMgJXAgcGIgJXAgY3MgJXAgZnAgJXAgY2xyZnAgJXAgbHIg
JXBdIEFTTSAje29wY29kZX0gI3tjbE9wZXJhbmRzKG9wZXJhbmRzKX1cXG5cIiwgdlBDLCByQmFz
ZVBDLnUudnAsICghY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpICYmIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpP2NhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCk6MCwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCk/MDpj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCksIHJSZXRWUEMudS52cCk7IgorICAgICAgICBlbmQKKyAg
ICAgICAgIyBtbGFtIEVORAorCisgICAgICAgIGNhc2Ugb3Bjb2RlCisgICAgICAgIHdoZW4gImFk
ZGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIisi
KQorICAgICAgICB3aGVuICJhZGRwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9w
ZXJhbmRzLCA6aW50LCAiKyIpCisKKyAgICAgICAgd2hlbiAiYW5kaSIKKyAgICAgICAgICAgIGNs
b29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiJiIpCisgICAgICAgIHdoZW4gImFu
ZHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICImIikK
KworICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3Bl
cmFuZHMsIDppbnQzMiwgInwiKQorICAgICAgICB3aGVuICJvcnAiCisgICAgICAgICAgICBjbG9v
cEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICJ8IikKKworICAgICAgICB3aGVuICJ4b3Jp
IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICJeIikK
KyAgICAgICAgd2hlbiAieG9ycCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVy
YW5kcywgOmludCwgIl4iKQorCisgICAgICAgIHdoZW4gImxzaGlmdGkiCisgICAgICAgICAgICBj
bG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIjw8IikKKyAgICAgICAgd2hlbiAi
bHNoaWZ0cCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludCwg
Ijw8IikKKworICAgICAgICB3aGVuICJyc2hpZnRpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInJzaGlmdHAiCisg
ICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICI+PiIpCisKKyAg
ICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3Bl
cmFuZHMsIDp1aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInVyc2hpZnRwIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6dWludCwgIj4+IikKKworICAgICAgICB3
aGVuICJtdWxpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50
MzIsICIqIikKKyAgICAgICAgd2hlbiAibXVscCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJh
dGlvbihvcGVyYW5kcywgOmludCwgIioiKQorCisgICAgICAgIHdoZW4gInN1YmkiCisgICAgICAg
ICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIi0iKQorICAgICAgICB3
aGVuICJzdWJwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50
LCAiLSIpCisKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9ID0gLSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
MzIpfTsiCisgICAgICAgIHdoZW4gIm5lZ3AiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3Bl
cmFuZHNbMF0uY2xWYWx1ZSg6aW50KX0gPSAtI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsi
CisKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1swXS5jbFZhbHVlKDppbnQzMil9ID0gISN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsi
CisKKyAgICAgICAgd2hlbiAibG9hZGkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFu
ZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQzMk1lbVJlZn07IgorICAg
ICAgICAgICAgIyAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50MzIpfSA9ICN7
b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIKKyAgICAgICAgICAgIGlmIEBtbGFtX1BSSU5URgor
ICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwibWxhbSA6OiBsb2FkaSAje29wZXJh
bmRzWzFdLmNsVmFsdWUoOmludCl9ID0gJXAgZnJvbSBhZGRyICN7b3BlcmFuZHNbMF0udWludDMy
TWVtUmVmfSAlcFxcblwiLCAodm9pZCopI3tvcGVyYW5kc1sxXS5jbFZhbHVlfSwgJiN7b3BlcmFu
ZHNbMF0udWludDMyTWVtUmVmfSk7IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImxv
YWRpcyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQp
fSA9ICN7b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZHAiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29w
ZXJhbmRzWzBdLmludE1lbVJlZn07IgorICAgICAgICB3aGVuICJzdG9yZWkiCisgICAgICAgICAg
ICAjIG1sYW0gJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6aW50KX07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRz
WzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisgICAg
ICAgIHdoZW4gInN0b3JlcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5p
bnRNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAgIHdoZW4g
ImxvYWRiIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQ4TWVtUmVmfTsiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVp
bnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQpfSA9ICN7b3BlcmFuZHNbMF0uaW50OE1lbVJl
Zn07IgorICAgICAgICB3aGVuICJzdG9yZWIiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRj
ICIje29wZXJhbmRzWzFdLnVpbnQ4TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
KX0iCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0udWludDhNZW1SZWZ9ID0g
I3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQ4KX0iCisgICAgICAgIHdoZW4gImxvYWRoIgorICAg
ICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0g
PSAje29wZXJhbmRzWzBdLnVpbnQxNk1lbVJlZn07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIj
e29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS51aW50MTZNZW1SZWZ9
OyIKKyAgICAgICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJh
bmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5pbnQxNk1lbVJlZn07IgorICAg
ICAgICB3aGVuICJzdG9yZWgiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIqI3tvcGVy
YW5kc1sxXS51aW50MTZNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIioje29wZXJhbmRzWzFdLnVpbnQxNk1lbVJlZn0gPSAje29w
ZXJhbmRzWzBdLmNsVmFsdWUoOmludDE2KX07IgorICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSA9ICN7b3Bl
cmFuZHNbMF0uZGJsTWVtUmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlZCIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5kYmxNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZh
bHVlKDpkb3VibGUpfTsiCisKKyAgICAgICAgd2hlbiAiYWRkZCIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRvdWJsZSwgIisiKQorICAgICAgICB3aGVuICJkaXZk
IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6ZG91YmxlLCAiLyIp
CisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3Bl
cmFuZHMsIDpkb3VibGUsICItIikKKyAgICAgICAgd2hlbiAibXVsZCIKKyAgICAgICAgICAgIGNs
b29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRvdWJsZSwgIioiKQorCisgICAgICAgIHdoZW4g
InNxcnRkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRv
dWJsZSl9ID0gc3FydCgje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9KTsiCisgICAgICAg
IHdoZW4gImNpMmQiICAjIENvbnZlcnQgYW4gaW50IHZhbHVlIHRvIGl0cyBkb3VibGUgZXF1aXZh
bGVudC4KKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3Vi
bGUpfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisgICAgICAgICAgICAjICRh
c20ucHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgIHBy
aW50ZihcIiAgICAgICN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9ICVl
ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlfSAlZCAoMHgleClcXG5cIiwgI3tvcGVyYW5kc1sxXS5j
bFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9LCAje29wZXJh
bmRzWzBdLmNsVmFsdWUoOmludDMyKX0pOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAg
ICAgIHByaW50ZihcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c
XG5cXG5cIik7IgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlmIC8vIG1s
YW1fUFJJTlRGIgorICAgICAgICAgICAgCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPT0iKQorICAg
ICAgICB3aGVuICJiZG5lcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDpkb3VibGUsICIhPSIpCisgICAgICAgIHdoZW4gImJkZ3QiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPiIpOworICAg
ICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCA6ZG91YmxlLCAiPj0iKTsKKyAgICAgICAgd2hlbiAiYmRsdCIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI8Iik7Cisg
ICAgICAgIHdoZW4gImJkbHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDpkb3VibGUsICI8PSIpOworCisgICAgICAgIHdoZW4gImJkZXF1biIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3Bl
cmFuZHMsICI9PSIpCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAgICAgICAgICBjbG9vcEVt
aXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiIT0iKQorICAg
ICAgICB3aGVuICJiZGd0dW4iCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlRG91YmxlV2l0
aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiPiIpCisgICAgICAgIHdoZW4gImJkZ3RlcXVu
IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5j
aChvcGVyYW5kcywgIj49IikKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5jaChvcGVyYW5kcywgIjwiKQor
ICAgICAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3Vi
bGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsICI8PSIpCisKKyAgICAgICAgd2hlbiAi
YnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8ganVzdCBn
ZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgorICAgICAg
ICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAgICAgcmFpc2UgIkNf
TE9PUCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKwor
ICAgICAgICB3aGVuICJ0ZDJpIgorICAgICAgICAgICAgIyBtbGFtMzJiaXQgJGFzbS5wdXRjICIj
e29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3Vi
bGUpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50
KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9OyIKKworICAgICAgICB3aGVuICJi
Y2QyaSIgICMgb3BlcmFuZHM6IHNyY0RibCBkc3RJbnQgc2xvd1BhdGgKKyAgICAgICAgICAgICMg
bWxhbSBJZiB0aGluZ3MgZG9uJ3Qgd29yayBvdXQsIHN1c3BlY3QgdGhpczoKKyAgICAgICAgICAg
ICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGRvdWJsZSBkID0gI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICBjb25zdCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkKTsiCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIiAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAmJiBz
aWduYml0KGQpKSkgLy8gdHJ1ZSBmb3IgLTAuMCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAg
ICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgI3tvcGVyYW5kc1sxXS5jbFZhbHVlfSA9IGFzSW50MzI7IiAgICAgICAgICAgIAorICAg
ICAgICAgICAgJGFzbS5wdXRjICJ9IgorCisgICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBd
LmNsVmFsdWUoOmludCl9OyIKKyAgICAgICAgd2hlbiAic3hpMnAiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmludDMyKX07IgorICAgICAgICB3aGVuICJ6eGkycCIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUo
OnVpbnQzMil9OyIKKyAgICAgICAgd2hlbiAibm9wIgorICAgICAgICAgICAgJGFzbS5wdXRjICIv
LyBub3AiCisgICAgICAgIHdoZW4gImJiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJl
QW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIj09IikKKyAgICAgICAgd2hlbiAiYmllcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj09
IikKKyAgICAgICAgd2hlbiAiYnBlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRC
cmFuY2gob3BlcmFuZHMsIDppbnQsICI9PSIpCisKKyAgICAgICAgd2hlbiAiYmJuZXEiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIiE9IikK
KyAgICAgICAgd2hlbiAiYmluZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJh
bmNoKG9wZXJhbmRzLCA6aW50MzIsICIhPSIpCisgICAgICAgIHdoZW4gImJwbmVxIgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIiE9IikKKwor
ICAgICAgICB3aGVuICJiYmEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNo
KG9wZXJhbmRzLCA6dWludDgsICI+IikKKyAgICAgICAgd2hlbiAiYmlhIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQzMiwgIj4iKQorICAgICAg
ICB3aGVuICJicGEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJh
bmRzLCA6dWludCwgIj4iKQorCisgICAgICAgIHdoZW4gImJiYWVxIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQ4LCAiPj0iKQorICAgICAgICB3
aGVuICJiaWFlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFu
ZHMsIDp1aW50MzIsICI+PSIpCisgICAgICAgIHdoZW4gImJwYWVxIgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQsICI+PSIpCisKKyAgICAgICAg
d2hlbiAiYmJiIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5k
cywgOnVpbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImJpYiIKKyAgICAgICAgICAgIGNsb29wRW1p
dENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50MzIsICI8IikKKyAgICAgICAgd2hlbiAi
YnBiIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVp
bnQsICI8IikKKworICAgICAgICB3aGVuICJiYmJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENv
bXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAiYmli
ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWlu
dDMyLCAiPD0iKQorICAgICAgICB3aGVuICJicGJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENv
bXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50LCAiPD0iKQorCisgICAgICAgIHdoZW4gImJi
Z3QiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50
OCwgIj4iKQorICAgICAgICB3aGVuICJiaWd0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDMyLCAiPiIpCisgICAgICAgIHdoZW4gImJwZ3QiCisg
ICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50LCAiPiIp
CisKKyAgICAgICAgd2hlbiAiYmJndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI+PSIpCisgICAgICAgIHdoZW4gImJpZ3RlcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj49
IikKKyAgICAgICAgd2hlbiAiYnBndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOmludCwgIj49IikKKworICAgICAgICB3aGVuICJiYmx0IgorICAg
ICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI8IikK
KyAgICAgICAgd2hlbiAiYmlsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDppbnQzMiwgIjwiKQorICAgICAgICB3aGVuICJicGx0IgorICAgICAgICAg
ICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIjwiKQorCisgICAg
ICAgIHdoZW4gImJibHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDppbnQ4LCAiPD0iKQorICAgICAgICB3aGVuICJiaWx0ZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50MzIsICI8PSIpCisgICAg
ICAgIHdoZW4gImJwbHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDppbnQsICI8PSIpCisKKyAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAgICAg
IGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDgsICI9PSAwIiwgb3BlcmFu
ZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpeiIKKyAgICAgICAgICAgIGNsb29wRW1p
dFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPT0gMCIsIG9wZXJhbmRzWy0xXS5j
TGFiZWwpCisgICAgICAgIHdoZW4gImJ0cHoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5k
QnJhbmNoSWYob3BlcmFuZHMsIDppbnQsICI9PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKwor
ICAgICAgICB3aGVuICJidGJueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJ
ZihvcGVyYW5kcywgOmludDgsICIhPSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAg
d2hlbiAiYnRpbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFu
ZHMsIDppbnQzMiwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorICAgICAgICB3aGVuICJi
dHBueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmlu
dCwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorCisgICAgICAgICMgbWxhbSBVTlVTRUQg
d2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgICMg
bWxhbSBlbWl0Q1hYVGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgIyBt
bGFtICRhc20ucHV0YyAiYnZzICN7b3BlcmFuZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICMgbWxh
bSBVTlVTRUQgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgInZzIikgIyBC
cmFuY2ggaWYgb3ZlcmZsb3cuCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBjbG9v
cEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQ4LCAiPCAwIiwgb3BlcmFuZHNbLTFd
LmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RB
bmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkK
KyAgICAgICAgd2hlbiAiYnRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJ
ZihvcGVyYW5kcywgOmludCwgIjwgMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisKKyAgICAgICAg
d2hlbiAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gTG9jYWxMYWJlbFJl
ZmVyZW5jZSBvciBvcGVyYW5kc1swXS5pc19hPyBMYWJlbFJlZmVyZW5jZQorICAgICAgICAgICAg
ICAgICMgSGFuZGxlcyBqdW1wcyBsb2NhbCBvciBnbG9iYWwgbGFiZWxzLgorICAgICAgICAgICAg
ICAgICRhc20ucHV0YyAiZ290byAje29wZXJhbmRzWzBdLmNMYWJlbH07IgorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICMgSGFuZGxlcyBqdW1wcyB0byBzb21lIGEgY29tcHV0ZWQg
dGFyZ2V0LgorICAgICAgICAgICAgICAgICMgTk9URTogbXVzdCBiZSBhbiBvcGNvZGUgaGFuZGxl
ciBvciBhIGxsaW50IGdsdWUgaGVscGVyLgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAib3Bj
b2RlID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpvcGNvZGUpfTsiCisgICAgICAgICAgICAgICAg
JGFzbS5wdXRjICJESVNQQVRDSF9PUENPREUoKTsiCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
d2hlbiAiY2FsbCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQ1JBU0goKTsgLy8gZ2VuZXJpYyBj
YWxsIG5vdCBzdXBwb3J0ZWQhIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/Cisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgIHZvaWQgKCpmKSgpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KCN7b3BlcmFuZHNb
MF0uY0xhYmVsfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB2b2lkICgq
ZikoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPigje29wZXJhbmRzWzBdLmNsVmFsdWUo
OnZvaWRQdHIpfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4g
ImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRjICJwcmludGYoXCJcXG4gQlJFQUsgaW5zdHJ1
Y3Rpb246IE5lZWQgdG8gaW1wbGVtZW50LiAgXFxuXCIpOyIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiQ1JBU0goKTsgLy8gTm90IGhhbmRsZWQgeWV0LiIKKyAgICAgICAgd2hlbiAicmV0IgorICAg
ICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRvUmV0dXJuSGVscGVyOyIKKworICAgICAgICB3aGVu
ICJjYmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVp
bnQ4LCAiPT0iKQorICAgICAgICB3aGVuICJjaWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29t
cGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIj09IikKKyAgICAgICAgd2hlbiAiY3BlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAiPT0i
KQorCisgICAgICAgIHdoZW4gImNibmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiIT0iKQorICAgICAgICB3aGVuICJjaW5lcSIKKyAgICAg
ICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50MzIsICIhPSIpCisg
ICAgICAgIHdoZW4gImNwbmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChv
cGVyYW5kcywgOnVpbnQsICIhPSIpCisKKyAgICAgICAgd2hlbiAiY2JhIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiPiIpCisgICAgICAgIHdo
ZW4gImNpYSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1
aW50MzIsICI+IikKKyAgICAgICAgd2hlbiAiY3BhIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29t
cGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQsICI+IikKKworICAgICAgICB3aGVuICJjYmFlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50OCwgIj49
IikKKyAgICAgICAgd2hlbiAiY2lhZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
U2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPj0iKQorICAgICAgICB3aGVuICJjcGFlcSIKKyAgICAg
ICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAiPj0iKQorCisg
ICAgICAgIHdoZW4gImNiYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3Bl
cmFuZHMsIDp1aW50OCwgIjwiKQorICAgICAgICB3aGVuICJjaWIiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPCIpCisgICAgICAgIHdoZW4g
ImNwYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50
LCAiPCIpCisKKyAgICAgICAgd2hlbiAiY2JiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDgsICI8PSIpCisgICAgICAgIHdoZW4gImNpYmVxIgor
ICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIjw9
IikKKyAgICAgICAgd2hlbiAiY3BiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
U2V0KG9wZXJhbmRzLCA6dWludCwgIjw9IikKKworICAgICAgICB3aGVuICJjYmd0IgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludDgsICI+IikKKyAgICAg
ICAgd2hlbiAiY2lndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFu
ZHMsIDppbnQzMiwgIj4iKQorICAgICAgICB3aGVuICJjcGd0IgorICAgICAgICAgICAgY2xvb3BF
bWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludCwgIj4iKQorCisgICAgICAgIHdoZW4gImNi
Z3RlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQ4
LCAiPj0iKQorICAgICAgICB3aGVuICJjaWd0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI+PSIpCisgICAgICAgIHdoZW4gImNwZ3RlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQsICI+PSIp
CisKKyAgICAgICAgd2hlbiAiY2JsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRT
ZXQob3BlcmFuZHMsIDppbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImNpbHQiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI8IikKKyAgICAgICAg
d2hlbiAiY3BsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMs
IDppbnQsICI8IikKKworICAgICAgICB3aGVuICJjYmx0ZXEiCisgICAgICAgICAgICBjbG9vcEVt
aXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAiY2ls
dGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludDMy
LCAiPD0iKQorICAgICAgICB3aGVuICJjcGx0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAiPD0iKQorCisgICAgICAgICMgbWxhbSBVTlVTRUQg
d2hlbiAidGlvIiwgInRibyIsICJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGNsb29w
RW1pdFRlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisKKyAgICAgICAgd2hlbiAidGJzIgorICAgICAg
ICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDgsICI8IDAiKQorICAgICAgICB3
aGVuICJ0aXMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50MzIs
ICI8IDAiKQorICAgICAgICB3aGVuICJ0cHMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0
KG9wZXJhbmRzLCA6aW50LCAiPCAwIikKKworICAgICAgICB3aGVuICJ0YnoiCisgICAgICAgICAg
ICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIj09IDAiKQorICAgICAgICB3aGVu
ICJ0aXoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50MzIsICI9
PSAwIikKKyAgICAgICAgd2hlbiAidHB6IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChv
cGVyYW5kcywgOmludCwgIj09IDAiKQorCisgICAgICAgIHdoZW4gInRibnoiCisgICAgICAgICAg
ICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIiE9IDAiKQorICAgICAgICB3aGVu
ICJ0aW56IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDMyLCAi
IT0gMCIpCisgICAgICAgIHdoZW4gInRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0
KG9wZXJhbmRzLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiY2RxaSIKKyAgICAgICAg
ICAgICMgU2lnbiBleHRlbmQgdGhlIDMyIGJpdCBpbnQgdG8gYSBmdWxsIHdvcmQ6CisgICAgICAg
ICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpbnQ2NF90IHRl
bXAgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihyMC51LmkpOyAvLyBzaWduIGV4dGVuZCB0aGUgbG93
IDMyYml0IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgcjAudS5pMzIgPSB0ZW1wOyAvLyBs
b3cgd29yZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIHIxLnUuaTMyID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHRlbXApID4+IDMyOyAvLyBoaWdoIHdvcmQiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIn0iCisgICAgICAgIHdoZW4gImlkaXZpIgorICAgICAgICAgICAgIyBEaXZpZGUgcjEs
cjAgKEVEWCxFQVgpIGJ5IHRoZSBzcGVjaWZpZWQgYXJnLCBhbmQgc3RvcmUgdGhlIHJlbWFpbmRl
ciBpbiByMSwKKyAgICAgICAgICAgICMgYW5kIHF1b3RpZW50IGluIHIwOgorICAgICAgICAgICAg
JGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgaW50NjRfdCBkaXZpZGVu
ZCA9IChzdGF0aWNfY2FzdDxpbnQ2NF90PihyMS51LnUzMikgPDwgMzIpIHwgcjAudS51MzI7Igor
ICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgaW50NjRfdCBkaXZpc29yID0gI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICByMS51LmkzMiA9
IGRpdmlkZW5kICUgZGl2aXNvcjsgLy8gcmVtYWluZGVyIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgcjAudS5pMzIgPSBkaXZpZGVuZCAvIGRpdmlzb3I7IC8vIHF1b3RpZW50IgorICAgICAg
ICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1syXS5jbFZhbHVlKDpkb3VibGUpfSA9IEludHMyRG91YmxlKCN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludDMyKX0sICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dWlu
dDMyKX0pOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgICNpZiBtbGFtX1BSSU5U
RiIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIlxcblxcbiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cIik7IgorICAgICAgICAg
ICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMl0uY2xWYWx1ZSg6ZG91YmxlKX0gJWUgPSBJbnRzMkRvdWJsZSgje29wZXJhbmRzWzBdLmNs
VmFsdWUoOnVpbnQzMil9IDB4JWx4LCAje29wZXJhbmRzWzFdLmNsVmFsdWUoOnVpbnQzMil9IDB4
JWx4fSlcXG5cIiwgI3tvcGVyYW5kc1syXS5jbFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDp1aW50MzIpfSwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50MzIpfSk7Igor
ICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgICAgICAgICAjICRh
c20ucHV0YyAiICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgICAgIHdoZW4gImZk
MmlpIgorICAgICAgICAgICAgJGFzbS5wdXRjICJEb3VibGUySW50cygje29wZXJhbmRzWzBdLmNs
VmFsdWUoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLmNsVmFsdWV9LCAje29wZXJhbmRzWzJdLmNs
VmFsdWV9KTsiCisgICAgICAgIHdoZW4gImZwMmQiICAjIENvcHkgYSBiaXQtZW5jb2RlZC1kb3Vi
bGUgaW4gYW4gaW50cHRyIHRvIGEgZG91YmxlIHN0b3JhZ2UuCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmNhc3RUb0RvdWJsZSl9OyIKKyAgICAgICAgICAgICMgaWYgQG1sYW1fUFJJTlRGCisgICAg
ICAgICAgICAjICAgICAkYXNtLnB1dGMgInByaW50ZihcIiAgICN7b3BlcmFuZHNbMV0uY2xWYWx1
ZSg6ZG91YmxlKX0gPSAlZVxcblwiLCAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9KTsi
CisgICAgICAgICAgICAjIGVuZAorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgI2lm
IG1sYW1fUFJJTlRGIgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwi
XFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTsi
CisgICAgICAgICAgICAjICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICAje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSAlZSA9ICN7b3BlcmFuZHNbMF0uY2xW
YWx1ZSg6dWludCl9IDB4JWx4XFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludCl9KTsiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgICNlbmRp
ZiAvLyBtbGFtX1BSSU5URiIKKworICAgICAgICB3aGVuICJmZDJwIiAgIyBDb3B5IGEgZG91Ymxl
IGFzIGEgYml0LWVuY29kZWQtZG91YmxlIGludG8gYW4gaW50cHRyIHN0b3JhZ2UuCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dm9pZFB0cil9ID0gI3tvcGVy
YW5kc1swXS5jbFZhbHVlKDpjYXN0VG9Wb2lkUHRyKX07IgorICAgICAgICB3aGVuICJsZWFpIgor
ICAgICAgICAgICAgb3BlcmFuZHNbMF0uY2xvb3BFbWl0TGVhKG9wZXJhbmRzWzFdLCA6aW50MzIp
CisgICAgICAgIHdoZW4gImxlYXAiCisgICAgICAgICAgICBvcGVyYW5kc1swXS5jbG9vcEVtaXRM
ZWEob3BlcmFuZHNbMV0sIDppbnQpCisKKyAgICAgICAgd2hlbiAiYmFkZGlvIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKyIsIDppbnQzMikK
KyAgICAgICAgd2hlbiAiYnN1YmlvIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJ
Zk92ZXJmbG93KG9wZXJhbmRzLCAiLSIsIDppbnQzMikKKyAgICAgICAgd2hlbiAiYm11bGlvIgor
ICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKiIs
IDppbnQzMikKKworICAgICAgICB3aGVuICJiYWRkaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRP
cEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJi
YWRkaXoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6
aW50MzIsICI9PSAwIikKKyAgICAgICAgd2hlbiAiYmFkZGlueiIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAg
IHdoZW4gImJhZGRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRz
LCAiKyIsIDppbnQsICI8IDAiKQorICAgICAgICB3aGVuICJiYWRkcHoiCisgICAgICAgICAgICBj
bG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50LCAiPT0gMCIpCisgICAgICAg
IHdoZW4gImJhZGRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5k
cywgIisiLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiYnN1YmlzIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMsICItIiwgOmludDMyLCAiPCAwIikKKyAg
ICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3Bl
cmFuZHMsICItIiwgOmludDMyLCAiPT0gMCIpCisgICAgICAgIHdoZW4gImJzdWJpbnoiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIi0iLCA6aW50MzIsICIhPSAw
IikKKworICAgICAgICB3aGVuICJib3JyaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJy
YW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJib3JyaXoi
CisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIs
ICI9PSAwIikKKyAgICAgICAgd2hlbiAiYm9ycmlueiIKKyAgICAgICAgICAgIGNsb29wRW1pdE9w
QW5kQnJhbmNoKG9wZXJhbmRzLCAifCIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAgIHdoZW4g
ImN4eENyYXNoIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyIKKworICAgICAgICB3
aGVuICJjeHhDYWxsSlNGdW5jdGlvbiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiclJldFZQQy51
LnZwID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRCYWROYXRpdmVSZXR1cm4pOyIgIyBtbGFt
IGZvciBURVNUIHJldHVyblBDIG9ubHkKKyAgICAgICAgICAgICRhc20ucHV0YyAib3Bjb2RlID0g
TExJbnQ6OkRhdGE6OmdldE9wY29kZShzdGF0aWNfY2FzdDxMTEludE9wY29kZUlEPigje29wZXJh
bmRzWzBdLmNsVmFsdWUoOmludCl9KSk7IgorICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRv
Q2FsbEhlbHBlcjsiCisKKyAgICAgICAgd2hlbiAiY3h4Q2FsbE5hdGl2ZSIKKyAgICAgICAgICAg
IGlmIEBtbGFtX1BSSU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiXFxu
KioqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gY3h4Q2FsbE5hdGl2ZSgpXFxuXFxuXCIpOyIK
KyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgJGFzbS5wdXRjICJuYXRpdmVGdW5jID0gI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDpuYXRpdmVGdW5jKX07IgorICAgICAgICAgICAgJGFzbS5wdXRj
ICJmdW5jdGlvblJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG5hdGl2ZUZ1bmMocjAudS5l
eGVjU3RhdGUpKTsiCisgICAgICAgICAgICBpZiBAbWxhbV9QUklOVEYKKyAgICAgICAgICAgICAg
ICAkYXNtLnB1dGMgInByaW50ZihcIlxcbioqKioqKioqKioqKioqKioqKioqKioqKiBtbGFtIGN4
eENhbGxOYXRpdmUoKSBSRVRVUk5lZFxcblxcblwiKTsiCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI2lmIFVTRShKU1ZBTFVFMzJfNjQpIgorICAgICAgICAgICAgJGFz
bS5wdXRjICIgICAgcjEudS5pID0gZnVuY3Rpb25SZXR1cm5WYWx1ZS50YWcoKTsiICAgICAgICAg
IyBGSVhNRTogV2UncmUgYXNzdW1pbmcgYSBjZXJ0YWluIGVuZGlhbm5lc3MgaGVyZS4KKyAgICAg
ICAgICAgICRhc20ucHV0YyAiICAgIHIwLnUuaSA9IGZ1bmN0aW9uUmV0dXJuVmFsdWUucGF5bG9h
ZCgpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vsc2UgLy8gVVNFX0pTVkFMVUU2NCkiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiAgICByMC51LmVuY29kZWRKU1ZhbHVlID0gSlNWYWx1ZTo6
ZW5jb2RlKGZ1bmN0aW9uUmV0dXJuVmFsdWUpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vu
ZGlmIC8vIFVTRV9KU1ZBTFVFNjQpIiAgICAgICAgICAgIAorCisgICAgICAgIHdoZW4gImN4eENh
bGxTbG93UGF0aCIKKyAgICAgICAgICAgIGNsb29wRW1pdENhbGxTbG93UGF0aChvcGVyYW5kcykK
KworICAgICAgICB3aGVuICJjeHhUcmFjZSIKKyAgICAgICAgICAgICRhc20ucHV0Y1RyYWNlTGFz
dEdsb2JhbExhYmVsCisKKyAgICAgICAgd2hlbiAibWxhbUJyZWFrIgorICAgICAgICAgICAgJGFz
bS5wdXRjICJtbGFtQnJlYWsoXCJtbGFtQnJlYWtcIiwgX19GSUxFX18sIF9fTElORV9fKTsiCisg
ICAgICAgIHdoZW4gIm1sYW1EbyIKKyAgICAgICAgICAgICRhc20uYW5ub3RhdGlvbiBuaWwKKyAg
ICAgICAgICAgIGlmIEBtbGFtX1BSSU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiI3th
bm5vdGF0aW9ufSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJtbGFtRHVtcCIKKyAg
ICAgICAgICAgICRhc20uYW5ub3RhdGlvbiBuaWwKKyAgICAgICAgICAgIGlmIEBtbGFtX1BSSU5U
RgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiICoqKiAje29wZXJhbmRzWzBd
LmNsVmFsdWV9ID0gJWxkICVwXFxuXCIsICN7b3BlcmFuZHNbMF0uY2xWYWx1ZX0sICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6dm9pZFB0cil9KTsiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbG93ZXJEZWZhdWx0CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSRwcmVmZXJyZWRDb21tZW50U3RhcnRDb2x1
bW4gPSA3MAorJHByZWZlcnJlZENvbW1lbnRTdGFydENvbHVtbiA9IDYyCiAKIAogIyBUdXJucyBv
biBkdW1waW5nIG9mIHRoZSBjb3VudCBvZiBsYWJlbHMuCkBAIC01NCw0ICs1NCw0IEBAICRlbmFi
bGVDb2RlT3JpZ2luQ29tbWVudHMgPSB0cnVlCiAjICAgICJcdG1vdmwgNTIoJXJjeCksICVlY3hc
biIgICAvLyB0MjxzaXplX3Q+ID0gdDI8Q29kZUJsb2NrPi5tX251bVZhcnMKICMgICAgIC4uLgog
IwotJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMgPSBmYWxzZQorJGVuYWJsZUluc3RyQW5ub3RhdGlv
bnMgPSB0cnVlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsy
MTEsOSBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAiYm56IiwKICAgICAgImxlYWkiLAog
ICAgICAibGVhcCIsCisgICAgICJtbGFtQnJlYWsiLCAgICAgICMgbm8gb3BlcmFuZHMgLi4uIGZv
ciBkZWJ1Z2dpbmcgb25seQorICAgICAibWxhbURvIiwgICAgICAgICAjIG5vIG9wZXJhbmRzCisg
ICAgICJtbGFtRHVtcCIsICAgICAgICMgb3BlcmFuZHM6IHZhbHVlVG9EdW1wCiAgICAgXQogCiBY
ODZfSU5TVFJVQ1RJT05TID0KQEAgLTIyNyw3ICsyMzAsMTYgQEAgQVJNdjdfSU5TVFJVQ1RJT05T
ID0KICAgICAgIm9yaXMiCiAgICAgXQogCi1JTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElP
TlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCitDWFhfSU5TVFJVQ1RJ
T05TID0KKyAgICBbCisgICAgICJjeHhDcmFzaCIsICAgICAgICAgICAjIG5vIG9wZXJhbmRzCisg
ICAgICJjeHhDYWxsSlNGdW5jdGlvbiIsICAjIG9wZXJhbmRzOiBjYWxsZWUKKyAgICAgImN4eENh
bGxOYXRpdmUiLCAgICAgICMgb3BlcmFuZHM6IGNhbGxlZQorICAgICAiY3h4Q2FsbFNsb3dQYXRo
IiwgICAgIyBvcGVyYW5kczogY2FsbFRhcmdldCwgY3VycmVudEZyYW1lLCBjdXJyZW50UEMKKyAg
ICAgImN4eFRyYWNlIiwgICAgICAgICAgICMgbm8gb3BlcmFuZHMKKyAgICBdCisKK0lOU1RSVUNU
SU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNU
UlVDVElPTlMgKyBDWFhfSU5TVFJVQ1RJT05TCiAKIElOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcg
Y29weSkKQEAgLTgzNSwxMCArODM1LDEwIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJibHRlcSIK
ICAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKLSAgICAgICAg
d2hlbiAiYnRpbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkK
LSAgICAgICAgd2hlbiAiYnRwbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOnB0cikKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJidGlvIgorICAgICAgICAjIG1s
YW0gVU5VU0VEICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgICAgICMg
bWxhbSBVTlVTRUQgd2hlbiAiYnRwbyIKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgiam8iLCA6cHRyKQogICAgICAgICB3aGVuICJidGlzIgogICAgICAgICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQogICAgICAgICB3aGVuICJidHBzIgpA
QCAtODUxLDggKzg1MSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQogICAgICAgICB3aGVuICJidHBueiIKICAgICAgICAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpwdHIpCi0gICAgICAgIHdoZW4gImJ0Ym8i
Ci0gICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgICAgICAj
IG1sYW0gVU5VU0VEIHdoZW4gImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiYnRicyIKICAgICAgICAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJ0Ynoi
CkBAIC05NjcsMjQgKzk2NywyNCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BsdGVx
IgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6cHRyKQotICAg
ICAgICB3aGVuICJ0aW8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmlu
dCkKKyAgICAgICAgIyBtbGFtIFVOVVNFRCB3aGVuICJ0aW8iCisgICAgICAgICMgbWxhbSBVTlVT
RUQgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCiAgICAgICAgIHdoZW4gInRpcyIK
ICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQogICAgICAgICB3aGVu
ICJ0aXoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKICAgICAg
ICAgd2hlbiAidGlueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmlu
dCkKLSAgICAgICAgd2hlbiAidHBvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
byIsIDpwdHIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidHBvIgorICAgICAgICAjIG1s
YW0gVU5VU0VEICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOnB0cikKICAgICAgICAgd2hl
biAidHBzIgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpwdHIpCiAgICAg
ICAgIHdoZW4gInRweiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6cHRy
KQogICAgICAgICB3aGVuICJ0cG56IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
bnoiLCA6cHRyKQotICAgICAgICB3aGVuICJ0Ym8iCi0gICAgICAgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGJvIgorICAg
ICAgICAjIG1sYW0gVU5VU0VEICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCiAg
ICAgICAgIHdoZW4gInRicyIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6
Ynl0ZSkKICAgICAgICAgd2hlbiAidGJ6IgpAQCAtMTAyNyw2ICsxMDI3LDggQEAgY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLng4NkFk
ZHJlc3NPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKICAg
ICAgICAgd2hlbiAibGVhcCIKICAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgo
OnB0cil9ICN7b3BlcmFuZHNbMF0ueDg2QWRkcmVzc09wZXJhbmQoOnB0cil9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOnB0cil9IgorICAgICAgICB3aGVuICJtbGFtQnJlYWsiLCAibWxhbURv
IiwgIm1sYW1EdW1wIgorICAgICAgICAgICAgIyBEbyBub3RoaW5nCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGxvd2VyRGVmYXVsdAogICAgICAgICBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyNTUw
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSAiVk1JbnNwZWN0b3IuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzg3
LDE4ICs3ODgsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgog
ICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbik7CiAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVk
Q2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOworICAgICAgICAvLyBtbGFtIEJFR0lOIERFQlVH
CisgICAgICAgIC8vQ2FsbEZyYW1lQ2xvc3VyZSYgbWxhbUNsb3N1cmUgPSBjYWNoZWRDYWxsLmNs
b3N1cmUoKTsKKyAgICAgICAgLy9WTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG1sYW1DbG9zdXJlLm5l
d0NhbGxGcmFtZSwgIm1sYW0gQSIpOworICAgICAgICAvLyBtbGFtIEVORAogICAgICAgICBmb3Ig
KDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewogICAgICAgICAg
ICAgaWYgKCFhcnJheS0+Y2FuR2V0SW5kZXgoaykpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBKU1ZhbHVlIHYgPSBhcnJheS0+Z2V0SW5kZXgoayk7CisgICAgICAgICAgICAv
L1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxhbSBC
Iik7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKKyAgICAgICAg
ICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3VyZS5uZXdDYWxsRnJhbWUsICJt
bGFtIEMiKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgdik7CisgICAg
ICAgICAgICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1l
LCAibWxhbSBEIik7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVt
YmVyKGspKTsKKyAgICAgICAgICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3Vy
ZS5uZXdDYWxsRnJhbWUsICJtbGFtIEUiKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJn
dW1lbnQoMiwgdGhpc09iaik7CisgICAgICAgICAgICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUo
bWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxhbSBGIik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CisgICAgICAgICAgICAv
L1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxhbSBH
Iik7CiAgICAgICAgICAgICBpZiAocmVzdWx0LnRvQm9vbGVhbigpKQogICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBmaWx0ZXJJbmRleCsrLCB2KTsKKyAg
ICAgICAgICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3VyZS5uZXdDYWxsRnJh
bWUsICJtbGFtIEgiKTsKICAgICAgICAgfQogICAgICAgICBpZiAoayA9PSBsZW5ndGgpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAxMjU1
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIG1sYW0gZXZhbHVhdGVfbWxh
bUNvbXBsZXRpb24KIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CkBAIC03Miw3ICs3Myw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUMKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
OwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3Jh
bSwgZXhlYywgc2NvcGVDaGFpbiwgdGhpc09iaik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlX21sYW1QKHByb2dyYW0sIGV4ZWMsIHNjb3BlQ2hhaW4s
IHRoaXNPYmopOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChF
eGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUo
KSwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CiAKKyAgICBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0
ZV9tbGFtQ29tcGxldGlvbihFeGVjU3RhdGUqIGUsIFNjb3BlQ2hhaW5Ob2RlKiBzLCBjb25zdCBT
b3VyY2VDb2RlJiBjLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSwgSlNWYWx1ZSogZXhj
ZXB0aW9uID0gMCkgeworICAgICAgICByZXR1cm4gZXZhbHVhdGUoZSwgcywgYywgdGhpc1ZhbHVl
LCBleGNlcHRpb24pOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBD
b21wbGV0aW9uX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOCBAQCB2b2lk
IEV4ZWN1dGFibGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsCiAKIHZvaWQgRXhlY3V0YWJsZUJh
c2U6OmNsZWFyQ29kZSgpCiB7Ci0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gI2lmIEVOQUJMRShK
SVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgIG1faml0Q29kZUZvckNh
bGwuY2xlYXIoKTsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKQEAg
LTUxNCw4ICs1MTUsMTAgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
cgogICAgIEFTU0VSVCgoaml0VHlwZSA9PSBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpID09ICFt
X2NvZGVCbG9ja0ZvckNhbGwpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb247CiAgICAgT3duUHRy
PEZ1bmN0aW9uQ29kZUJsb2NrPiBuZXdDb2RlQmxvY2sgPSBwcm9kdWNlQ29kZUJsb2NrRm9yKHNj
b3BlQ2hhaW5Ob2RlLCAhIW1fY29kZUJsb2NrRm9yQ2FsbCA/IE9wdGltaXppbmdDb21waWxhdGlv
biA6IEZpcnN0Q29tcGlsYXRpb24sIENvZGVGb3JDYWxsLCBleGNlcHRpb24pOwotICAgIGlmICgh
bmV3Q29kZUJsb2NrKQorICAgIGlmICghbmV3Q29kZUJsb2NrKSB7CisgICAgICAgIHByaW50Zigi
XG5cbiBtbGFtIEVYQ0VQVElPTiBAICVzICVzOiVkXG5cbiIsIF9fRlVOQ1RJT05fXywgX19GSUxF
X18sIF9fTElORV9fKTsKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CiAKICAgICBu
ZXdDb2RlQmxvY2stPnNldEFsdGVybmF0aXZlKHN0YXRpY19wb2ludGVyX2Nhc3Q8Q29kZUJsb2Nr
PihtX2NvZGVCbG9ja0ZvckNhbGwucmVsZWFzZSgpKSk7CiAgICAgbV9jb2RlQmxvY2tGb3JDYWxs
ID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQg
Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSopOwogCi0jaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgSklUQ29kZSYgZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9qaXRDb2RlRm9yQ2FsbCk7CkBAIC0yMDAsMTggKzE5OSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwg
bV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0KTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBtX3ByZXY7CiAgICAgICAgIEV4ZWN1
dGFibGVCYXNlKiBtX25leHQ7CiAKLSNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlIG1f
aml0Q29kZUZvckNhbGw7CiAgICAgICAgIEpJVENvZGUgbV9qaXRDb2RlRm9yQ29uc3RydWN0Owog
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2s7Ci0jZW5kaWYKICAgICB9OwogCiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CkBAIC0yMzYsNyArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9D
X0xPT1ApIC8vIG1sYW0KICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFnbG9i
YWxEYXRhLmNhblVzZUpJVCgpKTsKQEAgLTI2MSw2ICsyNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoSklUKQorLy8gbWxhbSAjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5rLCBKSVRDb2RlIGNvbnN0
cnVjdFRodW5rLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoIWdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsMTIgKzM3MSwxMyBAQCBOYXRpdmVFeGVjdXRh
YmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGCiAgICAgQVNTRVJUKGNhblVzZUpJVCgpKTsKICAg
ICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWIodGhpcywgZnVuY3Rpb24sIGludHJp
bnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNp
YykgOiAwLCBpbnRyaW5zaWMpOwogfQotI2Vsc2UKKworI2Vsc2UgLy8gIUVOQUJMRShKSVQpCiBO
YXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7CiAgICAgcmV0dXJu
IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsK
IH0KLSNlbmRpZgorI2VuZGlmIC8vICFFTkFCTEUoSklUKQogCiBKU0dsb2JhbERhdGE6OkNsaWVu
dERhdGE6On5DbGllbnREYXRhKCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRl
ICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQu
aCIKIApAQCAtMTQyLDYgKzE0MywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2Jq
ZWN0KiB0aGlzCiAgICAgbV9nbG9iYWxTY29wZUNoYWluLnNldChnbG9iYWxEYXRhKCksIHRoaXMs
IFNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUoMCwgdGhpcywgJmdsb2JhbERhdGEoKSwgdGhpcywgdGhp
c1ZhbHVlKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpLT5pbml0KDAsIDAs
IG1fZ2xvYmFsU2NvcGVDaGFpbi5nZXQoKSwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsK
KyAgICAvLyBtbGFtIEJFR0lOCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6
OmR1bXBGcmFtZShKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpLCAiICA+Pj4gUFVTSEVEIHRv
IG5ldyAiLCAwLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlm
CisgICAgLy8gbWxhbSBFTkQKIAogICAgIG1fZGVidWdnZXIgPSAwOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6
U3BlY3VsYXRpdmVKSVQ7CiAjZW5kaWYKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50OjpEYXRh
OworICAgICAgICAvLyBtbGFtIEJFR0lOCisgICAgICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3Rv
cjsKKyAgICAgICAgLy8gbWxhbSBFTkQKIAogICAgIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtMTY2LDYgKzE2OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBleHBsaWNp
dCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOwogICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcg
bG9uZyk7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nKTsKKyAg
ICAgICAgLy8gbWxhbSBCRUdJTiAuLi4gbmVlZCB0byBtYWtlIHRoaXMgYSBzcGVjaWFsIHByaXZp
bGVnZWQgb3BlcmF0aW9uLgorICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBp
bnQzMl90IHBheWxvYWQpOworICAgICAgICAvLyBtbGFtIEVORAogCiAgICAgICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90
aGVyKSBjb25zdDsKQEAgLTI3Miw2ICsyNzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3Rh
dGUqKSBjb25zdDsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisKKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgICAgICAvLyBUaGUgTExJTlQgQyBMb29wIG5lZWRzIHRvIGFjY2VzcyB0aGUg
dGFnIGFuZCBwYXlsb2FkIGRpcmVjdGx5LgorICAgIHB1YmxpYzoKKyNlbmRpZgogICAgICAgICAv
KgogICAgICAgICAgKiBPbiAzMi1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVFMzJfNjQpIHNob3Vs
ZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKICAgICAgICAgICogZm9ybSBm
b3IgaW1tZWRpYXRlcy4KQEAgLTI5Miw2ICszMDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAqLwogICAgICAgICB1aW50MzJfdCB0YWcoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCBw
YXlsb2FkKCkgY29uc3Q7CisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIHByaXZhdGU6
CisjZW5kaWYKKwogI2VsaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLyoKICAgICAgICAgICog
T24gNjQtYml0IHBsYXRmb3JtcyBVU0UoSlNWQUxVRTY0KSBzaG91bGQgYmUgZGVmaW5lZCwgYW5k
IHdlIHVzZSBhIE5hTi1lbmNvZGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEyNTUwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHUuYXNCaXRzLnBheWxvYWQgPSBpOwogICAgIH0KIAorICAgIC8vIG1sYW0gQkVHSU4gRklYTUUg
Li4uIG5lZWQgdG8gbWFrZSB0aGlzIGEgc3BlY2lhbCBwcml2aWxlZ2VkIG9wZXJhdGlvbi4KKyAg
ICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQor
ICAgIHsKKyAgICAgICAgdS5hc0JpdHMudGFnID0gdGFnOworICAgICAgICB1LmFzQml0cy5wYXls
b2FkID0gcGF5bG9hZDsKKyAgICB9CisgICAgLy8gbWxhbSBFTkQgKi8KKwogICAgIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0lu
dDMyKCkgfHwgaXNEb3VibGUoKTsKQEAgLTMyMyw3ICszMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIHBheWxvYWQoKTsKICAgICB9CiAKLSNlbHNlIC8vIFVTRShKU1ZBTFVF
MzJfNjQpCisjZWxzZSAvLyAhVVNFKEpTVkFMVUUzMl82NCkKIAogICAgIC8vIEpTVmFsdWUgbWVt
YmVyIGZ1bmN0aW9ucy4KICAgICBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgdm9pZCBP
cHRpb25zOjppbml0aWFsaXplKCkKICAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8g
YXV0byBpbmRlbnRhdGlvbgogI2VuZGlmCiAgICAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkg
Ly8gbWxhbQorICAgIHVzZUpJVCgpID0gZmFsc2U7CisgICAgdXNlREZHSklUKCkgPSBmYWxzZTsK
KyNlbmRpZiAvLyBtbGFtCisKICAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2hlcmUgbmVlZGVkIGFu
ZCBtYWtlIGNvcnJlY3Rpb25zIHRvIHRoZSBvcHRpb25zOgogICAgIEFTU0VSVCh0aHJlc2hvbGRG
b3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpID49IHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJX
YXJtVXAoKSk7CiAgICAgQVNTRVJUKHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+
PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0MDEs
NyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShKU0dsb2JhbERhCiAgICAgfQogCiAj
aWYgRU5BQkxFKFlBUlJfSklUKQorLy8gI2Vycm9yIG1sYW0gWWF5ISBHb3QgWUFSUl9KSVQKICAg
ICBpZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNh
blVzZVJlZ0V4cEpJVCgpKSB7CiAgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgY2hh
clNpemUsIGdsb2JhbERhdGEsIG1fcmVnRXhwSklUQ29kZSwgWWFycjo6TWF0Y2hPbmx5KTsKICNp
ZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1
ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5h
dGUuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC04OSw2ICs5MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVj
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rv
cjo6ZHVtcEZyYW1lKGV4ZWMsICIgKioqIHJlZ0V4cFByb3RvRnVuY0V4ZWMoKSIpOworICAgICNl
bmRpZgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZSZWdFeHBPYmplY3Q6OnNfaW5mbykpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0MiwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCisvLyBtbGFtIEJFR0lOIHRlc3QKK3Vuc2lnbmVkIEJ5
dGVUZXJtOjptbGFtQnl0ZVRlcm1JZCA9IDA7CisvLyBtbGFtIEVORCB0ZXN0CisKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlPgogY2xhc3MgSW50ZXJwcmV0ZXIgewogcHVibGljOgpAQCAtNzI4
LDYgKzczMiw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVy
bTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQpOwogICAgICAgICBBU1NFUlQodGVy
bS5hdG9tLnF1YW50aXR5Q291bnQgPT0gMSk7CiAKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisg
ICAgICAgIHByaW50ZigiICoqKiBiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VFbmQodGVybSAlcCwg
Y29udGV4dCAlcClcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgY29udGV4dCk7CisgICAgICAgICNl
bmRpZgogICAgICAgICBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlKiBiYWNrVHJhY2sgPSBy
ZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2UqPihjb250ZXh0LT5m
cmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20u
cXVhbnRpdHlUeXBlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxMyBA
QAogI2lmbmRlZiBZYXJySW50ZXJwcmV0ZXJfaAogI2RlZmluZSBZYXJySW50ZXJwcmV0ZXJfaAog
CisjaW5jbHVkZSAiY29uZmlnLmgiIC8vIG1sYW0KICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29k
ZS5oPgogCisjZGVmaW5lIG1sYW1fUFJJTlRGX3JlZ2V4IG1sYW1fUFJJTlRGCisKIG5hbWVzcGFj
ZSBXVEYgewogY2xhc3MgQnVtcFBvaW50ZXJBbGxvY2F0b3I7CiB9CkBAIC0xMDYsNiArMTA5LDEw
IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgYm9vbCBtX2NhcHR1cmUgOiAxOwogICAgIGJvb2wg
bV9pbnZlcnQgOiAxOwogICAgIHVuc2lnbmVkIGlucHV0UG9zaXRpb247CisgICAgLy8gbWxhbSBC
RUdJTiB0ZXN0CisgICAgdW5zaWduZWQgbWxhbUlkOworICAgIHN0YXRpYyB1bnNpZ25lZCBtbGFt
Qnl0ZVRlcm1JZDsKKyAgICAvLyBtbGFtIEVORCB0ZXN0CiAKICAgICBCeXRlVGVybShVQ2hhciBj
aCwgaW50IGlucHV0UG9zLCB1bnNpZ25lZCBmcmFtZUxvY2F0aW9uLCBDaGVja2VkPHVuc2lnbmVk
PiBxdWFudGl0eUNvdW50LCBRdWFudGlmaWVyVHlwZSBxdWFudGl0eVR5cGUpCiAgICAgICAgIDog
ZnJhbWVMb2NhdGlvbihmcmFtZUxvY2F0aW9uKQpAQCAtMTI4LDYgKzEzNSwxMCBAQCBzdHJ1Y3Qg
Qnl0ZVRlcm0gewogICAgICAgICBhdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAg
ICAgICAgYXRvbS5xdWFudGl0eUNvdW50ID0gcXVhbnRpdHlDb3VudC51bnNhZmVHZXQoKTsKICAg
ICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxhbV9QUklOVEZf
cmVnZXgKKyAgICAgICAgbWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAgICAgICAgcHJpbnRm
KCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2
b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlucHV0UG9zaXRpb24s
IF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICB9CiAKICAgICBC
eXRlVGVybShVQ2hhciBsbywgVUNoYXIgaGksIGludCBpbnB1dFBvcywgdW5zaWduZWQgZnJhbWVM
b2NhdGlvbiwgQ2hlY2tlZDx1bnNpZ25lZD4gcXVhbnRpdHlDb3VudCwgUXVhbnRpZmllclR5cGUg
cXVhbnRpdHlUeXBlKQpAQCAtMTUyLDYgKzE2MywxMCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAg
ICAgICBhdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAgICAgICAgYXRvbS5xdWFu
dGl0eUNvdW50ID0gcXVhbnRpdHlDb3VudC51bnNhZmVHZXQoKTsKICAgICAgICAgaW5wdXRQb3Np
dGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxhbV9QUklOVEZfcmVnZXgKKyAgICAgICAg
bWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAgICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhp
cyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRl
cm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywg
X19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICB9CiAKICAgICBCeXRlVGVybShDaGFyYWN0
ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3MsIGJvb2wgaW52ZXJ0LCBpbnQgaW5wdXRQb3MpCkBAIC0x
NjMsNiArMTc4LDEwIEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgIGF0b20ucXVhbnRpdHlU
eXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9
IDE7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKKyAgICAgICAgI2lmIG1sYW1f
UFJJTlRGX3JlZ2V4CisgICAgICAgIG1sYW1JZCA9ICsrbWxhbUJ5dGVUZXJtSWQ7CisgICAgICAg
IHByaW50ZigiICUlJSBtbGFtIHRoaXMoJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVk
XG4iLCAodm9pZCopbWxhbUJ5dGVUZXJtSWQsIGlucHV0UG9zaXRpb24sICh2b2lkKilpbnB1dFBv
c2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgI2VuZGlmCiAgICAgfQog
CiAgICAgQnl0ZVRlcm0oVHlwZSB0eXBlLCB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQsIEJ5dGVEaXNq
dW5jdGlvbiogcGFyZW50aGVzZXNJbmZvLCBib29sIGNhcHR1cmUsIGludCBpbnB1dFBvcykKQEAg
LTE3NSw2ICsxOTQsMTAgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5xdWFudGl0
eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKICAgICAgICAgYXRvbS5xdWFudGl0eUNvdW50
ID0gMTsKICAgICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxh
bV9QUklOVEZfcmVnZXgKKyAgICAgICAgbWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAgICAg
ICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6
JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlucHV0
UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICB9
CiAgICAgCiAgICAgQnl0ZVRlcm0oVHlwZSB0eXBlLCBib29sIGludmVydCA9IGZhbHNlKQpAQCAt
MTg0LDYgKzIwNywxMSBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAgYXRvbS5x
dWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKICAgICAgICAgYXRvbS5xdWFudGl0
eUNvdW50ID0gMTsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3JlZ2V4CisgICAgICAgIGlucHV0
UG9zaXRpb24gPSAweGNhZmViYWJlOyAvLyBtbGFtIFRFU1QKKyAgICAgICAgbWxhbUlkID0gKytt
bGFtQnl0ZVRlcm1JZDsKKyAgICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQ
b3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQ
b3NpdGlvbiwgKHZvaWQqKWlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwor
ICAgICAgICAjZW5kaWYKICAgICB9CiAKICAgICBCeXRlVGVybShUeXBlIHR5cGUsIHVuc2lnbmVk
IHN1YnBhdHRlcm5JZCwgYm9vbCBjYXB0dXJlLCBib29sIGludmVydCwgaW50IGlucHV0UG9zKQpA
QCAtMTk1LDEyICsyMjMsMjQgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5xdWFu
dGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKICAgICAgICAgYXRvbS5xdWFudGl0eUNv
dW50ID0gMTsKICAgICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYg
bWxhbV9QUklOVEZfcmVnZXgKKyAgICAgICAgbWxhbUlkID0gKyttbGFtQnl0ZVRlcm1JZDsKKyAg
ICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGhpcyglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAg
JXM6JWRcbiIsICh2b2lkKiltbGFtQnl0ZVRlcm1JZCwgaW5wdXRQb3NpdGlvbiwgKHZvaWQqKWlu
cHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAvKiBtbGFtIGlm
IChtbGFtSWQgPT0gMTY2KSB7CisgICAgICAgICAgICBpbnQqIHAgPSAwOworICAgICAgICAgICAg
KnAgPSAwOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0gKi8KKyAgICAgICAg
I2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIEJ5dGVUZXJtIEJPTChpbnQgaW5wdXRQb3MpCiAg
ICAgewogICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGVBc3NlcnRpb25CT0wpOwogICAgICAgICB0
ZXJtLmlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3Jl
Z2V4CisgICAgICAgIHByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAl
dSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwg
KHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CisgICAg
ICAgICNlbmRpZgogICAgICAgICByZXR1cm4gdGVybTsKICAgICB9CiAKQEAgLTIyMiw2ICsyNjIs
OSBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBl
QXNzZXJ0aW9uRU9MKTsKICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7Cisg
ICAgICAgICNpZiBtbGFtX1BSSU5URl9yZWdleAorICAgICAgICBwcmludGYoIiAlJSUgbWxhbSB0
ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxh
bUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVO
Q1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRlcm07
CiAgICAgfQogCkBAIC0yMjksNiArMjcyLDkgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICB7CiAg
ICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeSwgaW52ZXJ0KTsK
ICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7CisgICAgICAgICNpZiBtbGFt
X1BSSU5URl9yZWdleAorICAgICAgICBwcmludGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBv
c2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0
UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5F
X18pOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NzIsMTAgKzU3MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MOgogICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKICAgICAgICAgICAgICAgICB0
ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAg
ICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24g
PSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlv
biwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1
cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIC8vcHJpbnRm
KCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2
b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAodm9pZCopdGVybS5pbnB1dFBv
c2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKICAgICAgICAgICAgICAgICB0ZXJtLmZy
YW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBjdXJy
ZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9CYWNrUmVm
ZXJlbmNlOwogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZh
bHNlOwpAQCAtNTg2LDYgKzU4OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXI6CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1
dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAg
ICAgICAgLy9wcmludGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAg
QCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lk
Kil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCkgewog
ICAgICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1l
U2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0
YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3RlcjsKQEAgLTU5Niw2ICs1OTks
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0
ZXJDbGFzczoKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBt
bGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVy
bS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwg
X19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHRl
cm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0lu
Zm9DaGFyYWN0ZXJDbGFzczsKQEAgLTYxNSwxMiArNjE5LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50
KQogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudElucHV0UG9zaXRpb24gKz0gdGVybS5w
YXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICAg
ICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIC8vcHJpbnRmKCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQ
b3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1
dFBvc2l0aW9uLCAodm9pZCopdGVybS5pbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElO
RV9fKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlcm0ucGFyZW50aGVzZXMuaXNUZXJt
aW5hbCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsOwogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRz
KHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJy
ZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0u
aW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAg
ICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24g
PSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlv
biwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBv
c2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAg
ICAgICAgIC8vcHJpbnRmKCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVw
IEAgJXM6JWRcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAodm9p
ZCopdGVybS5pbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKICAgICAgICAg
ICAgICAgICAgICAgc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbiwgMCwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczsKICAgICAgICAgICAgICAgICB9CkBAIC02MzAsNiArNjM3LDcg
QEAgcHVibGljOgogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0
aWNhbEFzc2VydGlvbjoKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJy
ZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50Zigi
ICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9p
ZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3Np
dGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICAgICAgdGVybS5mcmFt
ZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgY3VycmVu
dENhbGxGcmFtZVNpemUgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2Vz
LmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFj
a1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVu
c2FmZUdldCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYzNyw2ICs2NDUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3Vy
ZToKICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBpbml0aWFsSW5wdXRQb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9z
aXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQ
b3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVf
Xyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTEgQEAKIC8qIEluY2x1ZGUgY29tcGls
ZXIgc3BlY2lmaWMgbWFjcm9zICovCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAKKy8vIG1s
YW0gQkVHSU4KKyNkZWZpbmUgRU5BQkxFX0pJVCAwCisvLyNkZWZpbmUgRU5BQkxFX1lBUlJfSklU
IDAKKy8vIG1sYW0gRU5ECisKIC8qID09PT0gUExBVEZPUk0gaGFuZGxlcyBPUywgb3BlcmF0aW5n
IGVudmlyb25tZW50LCBncmFwaGljcyBBUEksIGFuZAogICAgQ1BVLiBUaGlzIG1hY3JvIHdpbGwg
YmUgcGhhc2VkIG91dCBpbiBmYXZvciBvZiBwbGF0Zm9ybSBhZGFwdGF0aW9uCiAgICBtYWNyb3Ms
IHBvbGljeSBkZWNpc2lvbiBtYWNyb3MsIGFuZCB0b3AtbGV2ZWwgcG9ydCBkZWZpbml0aW9ucy4g
PT09PSAqLwpAQCAtODkzLDYgKzg5OCwyMCBAQAogICAgICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikpCiAjZGVmaW5lIEVOQUJMRV9MTElOVCAxCiAjZW5kaWYK
Ky8vIG1sYW0gQkVHSU4KKyNpZiAhRU5BQkxFKEpJVCkKKy8vKgorICAgICNkZWZpbmUgRU5BQkxF
X0NMQVNTSUNfSU5URVJQUkVURVIgMAorICAgICNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyAgICAj
ZGVmaW5lIEVOQUJMRV9MTElOVF9DX0xPT1AgMQorICAgIC8vICNkZWZpbmUgRU5BQkxFX1lBUlJf
SklUIDEKKy8qLworICAgICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMQorICAg
ICNkZWZpbmUgRU5BQkxFX1lBUlJfSklUIDEKKyovCisgICAgI2RlZmluZSBFTkFCTEVfREZHX0pJ
VCAwCisjZW5kaWYKKy8vIG1sYW0gRU5EICovCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJ
VCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82
NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwpAQCAtOTMyLDEwICs5NTEs
MTEgQEAKICNlbmRpZgogCiAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50
ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxlZC4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVfQ0xBU1NJ
Q19JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShKSVQpCisjaWYgIWRlZmluZWQoRU5BQkxFX0NMQVNT
SUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKSAmJiAhRU5BQkxFKExMSU5UKQogI2RlZmlu
ZSBFTkFCTEVfQ0xBU1NJQ19JTlRFUlBSRVRFUiAxCiAjZW5kaWYKLSNpZiAhKEVOQUJMRShKSVQp
IHx8IEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSkKKy8vIG1sYW0gb3JpZyAjaWYgIShFTkFC
TEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikpCisjaWYgIShFTkFCTEUoSklU
KSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKICNlcnJv
ciBZb3UgaGF2ZSB0byBoYXZlIGF0IGxlYXN0IG9uZSBleGVjdXRpb24gbW9kZWwgZW5hYmxlZCB0
byBidWlsZCBKU0MKICNlbmRpZgogCkBAIC05NjAsNyArOTgwLDggQEAKICNkZWZpbmUgRU5BQkxF
X1JFR0VYUF9UUkFDSU5HIDAKIAogLyogWWV0IEFub3RoZXIgUmVnZXggUnVudGltZSAtIHR1cm5l
ZCBvbiBieSBkZWZhdWx0IGZvciBKSVQgZW5hYmxlZCBwb3J0cy4gKi8KLSNpZiAhZGVmaW5lZChF
TkFCTEVfWUFSUl9KSVQpICYmIEVOQUJMRShKSVQpICYmICFQTEFURk9STShDSFJPTUlVTSkKKy8v
IG1sYW0gb3JpZyAjaWYgIWRlZmluZWQoRU5BQkxFX1lBUlJfSklUKSAmJiBFTkFCTEUoSklUKSAm
JiAhUExBVEZPUk0oQ0hST01JVU0pCisjaWYgIWRlZmluZWQoRU5BQkxFX1lBUlJfSklUKSAmJiAo
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkpICYmICFQTEFURk9STShDSFJPTUlV
TSkKICNkZWZpbmUgRU5BQkxFX1lBUlJfSklUIDEKIAogLyogU2V0dGluZyB0aGlzIGZsYWcgY29t
cGFyZXMgSklUIHJlc3VsdHMgd2l0aCBpbnRlcnByZXRlciByZXN1bHRzLiAqLwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJ
KHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHJldHVybiBK
U0M6OmV2YWx1YXRlKGV4ZWMsIGNoYWluLCBzb3VyY2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZXhlYywgY2hhaW4s
IHNvdXJjZSwgdGhpc1ZhbHVlLCBleGNlcHRpb24pOwogICAgIH07CiAKIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTI1NTA2KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgX05QTl9FdmFsdWF0ZShOUFAgaW5zdGFuY2UsIE5QT2Jq
ZWMKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIFN0cmluZyBzY3Jp
cHRTdHJpbmcgPSBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KHMpOwogICAgICAgICAKLSAgICAgICAg
SlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNj
b3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7Cisg
ICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlX21sYW1Db21wbGV0aW9u
KHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5n
KSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4
ZWMsIHJldHVyblZhbHVlLCB2YXJpYW50KTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0
OjpldmFsKGpzdHJpbmcgc2NyaXAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhyb290T2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsKICAgICAKICAgICByb290T2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWlu
KCksIG1ha2VTb3VyY2UoSmF2YVN0cmluZyhzY3JpcHQpLmltcGwoKSkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gSlNDOjpldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihyb290T2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpLCByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
U2NvcGVDaGFpbigpLCBtYWtlU291cmNlKEphdmFTdHJpbmcoc2NyaXB0KS5pbXBsKCkpKTsKICAg
ICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0b3AoKTsKIAogICAgIHJldHVybiBjb252ZXJ0VmFsdWVUb0pPYmplY3QocmVzdWx0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHlfaAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAog
CisvLyBtbGFtIEJFR0lOCisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisvLyBtbGFt
IEVORAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsRGF0YS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>158736</attachid>
            <date>2012-08-16 00:43:50 -0700</date>
            <delta_ts>2012-08-16 00:43:50 -0700</delta_ts>
            <desc>Example of generated 32-bit llint C loop code.</desc>
            <filename>LLIntAssembly-32bit.h</filename>
            <type>text/plain</type>
            <size>382442</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">Ly8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiBmOTM5OTM4M2VlZTAxMGQ0YzhhYmRkZTQzMmUxNTQ4
MmRmZmMyOGU2IGQ5NGY3NDkyMTZmZTNhMjcxZGUzNjFmMjg3MjUzNGVkZmUyMmZiMTUgMDQyYWE5
NDg3ZDAxNGQxY2NmZGIyMThiYmYyMGM4ZmE2ZWViYTQzMQojaWYgIU9GRkxJTkVfQVNNX0JJR19F
TkRJQU4gJiYgIU9GRkxJTkVfQVNNX0FMV0FZU19BTExPQ0FURV9TTE9XICYmICFPRkZMSU5FX0FT
TV9FWEVDVVRJT05fVFJBQ0lORyAmJiAhT0ZGTElORV9BU01fVkFMVUVfUFJPRklMRVIgJiYgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQgJiYgIU9GRkxJTkVfQVNNX1g4NiAmJiAhT0ZGTElORV9B
U01fWDg2XzY0ICYmICFPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAmJiAhT0ZGTElORV9BU01fSlNW
QUxVRTY0ICYmICFPRkZMSU5FX0FTTV9BUk12NyAmJiBPRkZMSU5FX0FTTV9DX0xPT1AKT0ZGTElO
RV9BU01fQkVHSU4KCk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfYmVnaW4pCiAgICAvLyBt
YWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCk9GRkxJTkVf
QVNNX0dMVUVfTEFCRUwobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkKICAgIC8vIGdldCByZXR1cm5Q
Qzx0Mj47CiAgICByMi5pID0gclJldFZQQy5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAg
LSAxNikgPSByMi5pOyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDI+
OwogICAgLy8gZ2V0IGNvZGVCbG9jazx0MT47CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihm
cC5pOHAgLSA4KTsKICAgIHJQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA1Mik7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9HTFVF
X0xBQkVMKGxsaW50X2V2YWxfcHJvbG9ndWUpCiAgICAvLyBnZXQgcmV0dXJuUEM8dDI+OwogICAg
cjIuaSA9IHJSZXRWUEMuaTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gMTYpID0gcjIu
aTsgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQyPjsKICAgIC8vIGdl
dCBjb2RlQmxvY2s8dDE+OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7
CiAgICByUEMuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNTIpOwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkKICAgIC8vIGdldCByZXR1cm5QQzx0Mj47CiAg
ICByMi5pID0gclJldFZQQy5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSBy
Mi5pOyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDI+OwogICAgLy8g
Z2V0IGNvZGVCbG9jazx0MT47CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAz
Mik7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlZTxyZWc+ID0gY2ZyLkNhbGxlZTsKICAg
IHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDE2KTsgICAgICAgICAgICAgICAgICAg
ICAgLy8gZXhlY3V0YWJsZTxyZWc+ID0gSlNGdW5jdGlvbjxyZWc+LmV4ZWN1dGFibGU7CiAgICBy
MS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5Nik7ICAgICAgICAgICAgICAgICAgICAg
IC8vIGNvZGVCbG9jazxyZWc+ID0gRnVuY3Rpb25FeGVjdXRhYmxlPHJlZz4uY29kZUJsb2NrRm9y
Q2FsbDsgCiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpID0gcjEuaTsKICAgIHJQQy5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA1Mik7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ2FsbEJlZ2luKQogICAgcjAuaSA9ICpDQVNUPHVp
bnQzMl90Kj4ocjEuaThwICsgMjQpOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgNDgpOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNjUxNik7CiAgICBy
MC5pMzIgPSByMC5pMzIgPDwgaW50MzJfdCgweDMpOwogICAgcjAuaSA9IGZwLmkgKyByMC5pOwog
ICAgaWYgKCpDQVNUPHVpbnRwdHJfdCo+KHIyLmk4cCArIDEyKSA+PSByMC51KQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRPSzsKICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENB
U1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQgPSBsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6
ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9
CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9m
dW5jdGlvbkluaXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LKQogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKQogICAgLy8gZ2V0IHJldHVyblBDPHQyPjsKICAg
IHIyLmkgPSByUmV0VlBDLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDE2KSA9IHIy
Lmk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0Mj47CiAgICAvLyBn
ZXQgY29kZUJsb2NrPHQxPjsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDMy
KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDE2KTsKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDEwMCk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCAtIDgpID0gcjEuaTsKICAgIHJQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA1Mik7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ29uc3Ry
dWN0QmVnaW4pCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyMS5pOHAgKyAyNCk7CiAgICBy
Mi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0OCk7CiAgICByMi5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMi5pOHAgKyA2NTE2KTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4
Myk7CiAgICByMC5pID0gZnAuaSArIHIwLmk7CiAgICBpZiAoKkNBU1Q8dWludHB0cl90Kj4ocjIu
aThwICsgMTIpID49IHIwLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8wX2Z1bmN0aW9uSW5p
dGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0s7CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcx
LCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfcmVnaXN0ZXJfZmlsZV9j
aGVjayhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmlu
c3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0
cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMF9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19z
dGFja0hlaWdodE9LKQogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoK
T0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aykKICAgIC8vIGdldCByZXR1cm5QQzx0Mj47CiAgICByMi5pID0gclJldFZQQy5pOwogICAgKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSByMi5pOyAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnIuUmV0dXJuUEMgPSA8dDI+OwogICAgLy8gZ2V0IGNvZGVCbG9jazx0MT47CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAzMik7ICAgICAgICAgICAgICAgICAgICAgIC8v
IGNhbGxlZTxyZWc+ID0gY2ZyLkNhbGxlZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIx
Lmk4cCArIDE2KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZXhlY3V0YWJsZTxyZWc+ID0gSlNG
dW5jdGlvbjxyZWc+LmV4ZWN1dGFibGU7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5p
OHAgKyA5Nik7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazxyZWc+ID0gRnVuY3Rp
b25FeGVjdXRhYmxlPHJlZz4uY29kZUJsb2NrRm9yQ2FsbDsgCiAgICAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCAtIDgpID0gcjEuaTsKICAgIHJQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAg
KyA1Mik7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0OCk7CiAgICBpZiAo
cjAudTMyID49ICpDQVNUPHVpbnQzMl90Kj4ocjEuaThwICsgNDApKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fZnVuY3Rpb25Gb3JDYWxsQmVnaW47CiAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihh
cmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZw
LnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZw
KTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2Nh
bGxfYXJpdHlDaGVjayhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1
bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgZnAuaSA9IHIxLmk7
CiAgICBpZiAocjAuaTMyID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9mdW5jdGlvbkFy
aXR5Q2hlY2tfX2NvbnRpbnVlOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgw
ID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRh
KSk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA2NTc2KTsKICAgIG9wY29k
ZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ocjEuaThwICsgNjU4MCk7CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZnVuY3Rpb25Bcml0
eUNoZWNrX19jb250aW51ZSkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OwogICAgclBDLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDUyKTsKICAgIGdvdG8gX29m
ZmxpbmVhc21fZnVuY3Rpb25Gb3JDYWxsQmVnaW47CgpPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spCiAgICAvLyBnZXQgcmV0dXJu
UEM8dDI+OwogICAgcjIuaSA9IHJSZXRWUEMuaTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThw
IC0gMTYpID0gcjIuaTsgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQy
PjsKICAgIC8vIGdldCBjb2RlQmxvY2s8dDE+OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gMzIpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMTYpOwog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMTAwKTsKICAgICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gOCkgPSByMS5pOwogICAgclBDLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIx
Lmk4cCArIDUyKTsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAtIDQ4KTsKICAg
IGlmIChyMC51MzIgPj0gKkNBU1Q8dWludDMyX3QqPihyMS5pOHAgKyA0MCkpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOwogICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMg
ZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVj
U3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlv
bio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Ns
b3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRl
Y29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQog
ICAgZnAuaSA9IHIxLmk7CiAgICBpZiAocjAuaTMyID09IDApCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV8wX2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWU7CiAgICByMS5pID0gKkNBU1Q8aW50
cHRyX3QqPigoYXNzZXJ0KDAgPT0gb2Zmc2V0b2YoSklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkp
LCAmc3AtPmdsb2JhbERhdGEpKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCAr
IDY1NzYpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyMS5pOHAgKyA2NTgwKTsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV8wX2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWUpCiAgICByMS5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHJQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAg
KyA1Mik7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW47Cgov
LyBieXRlY29kZTogZW50ZXIKLy8gZnVuY3Rpb246IGZvciBlYWNoIGlkIGluIGxvY2FscyB7IGNm
cltpZF0gPSB1bmRlZmluZWQ7IH0KLy8gCi8vICAgSW5pdGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVz
IHRvIHVuZGVmaW5lZC4gSWYgdGhlIGNvZGUgYmxvY2sgcmVxdWlyZXMKLy8gICBhbiBhY3RpdmF0
aW9uLCBlbnRlcl93aXRoX2FjdGl2YXRpb24gaXMgdXNlZCBpbnN0ZWFkLgovLyAgIFRoaXMgb3Bj
b2RlIGFwcGVhcnMgb25seSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KCk9GRkxJ
TkVfQVNNX09QQ09ERV9MQUJFTChvcF9lbnRlcikKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQyPiA9IGNm
ci5Db2RlQmxvY2s7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyMi5pOHAgKyAyOCk7ICAg
ICAgICAgICAgICAgICAgICAgIC8vIG51bVZhcnM8dDI+ID0gY29kZUJsb2NrPHQyPi5tX251bVZh
cnM7CiAgICBpZiAocjIuaTMyID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQyPiA9PSAwKSBnb3RvIC5kb25lOwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fb3BFbnRlckRvbmU7CiAgICByMC5pID0gaW50cHRyX3QoLTQpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGpzVW5kZWZpbmVkPHQwPiA9IFVu
ZGVmaW5lZFRhZzsKICAgIHIxLmkgPSBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gemVybzx0MT4gPSAwOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9M
QUJFTChfb2ZmbGluZWFzbV9vcEVudGVyTG9vcCkKICAgIHIyLmkzMiA9IHIyLmkzMiAtIGludDMy
X3QoMHgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBudW1WYXJzPHQyPi0tOwog
ICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQp
KSA9IHIwLmkzMjsgLy8gICBjZnJbbnVtVmFyczx0Mj5dLlRhZyA9IGpzVW5kZWZpbmVkPHQwPjsK
ICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSkgPSByMS5pMzI7IC8vICAgY2ZyW251bVZhcnM8dDI+XS5QYXlsb2FkID0gemVybzx0MT47CiAg
ICBpZiAocjIuaTMyICE9IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmIChudW1WYXJzPHQyPiAhPSAwKSBnb3RvIC5sb29wOwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fb3BFbnRlckxvb3A7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX29wRW50ZXJEb25lKQogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IGNyZWF0ZV9hY3RpdmF0
aW9uIGRzdFJlZ0lkCi8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gbmV3IEFjdGl2YXRpb24o
KSBpZiBub3QgYWxyZWFkeSBwcmVzZW50OwovLyAKLy8gICBJZiB0aGUgYWN0aXZhdGlvbiBvYmpl
Y3QgZm9yIHRoaXMgY2FsbGZyYW1lIGhhcyBub3QgeWV0IGJlZW4gY3JlYXRlZCwKLy8gICB0aGlz
IGNyZWF0ZXMgaXQgYW5kIHdyaXRlcyBpdCBiYWNrIHRvIGRzdC4KCk9GRkxJTkVfQVNNX09QQ09E
RV9MQUJFTChvcF9jcmVhdGVfYWN0aXZhdGlvbikKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0MD4g
PSBvcGVyYW5kc1tkc3RSZWdJZF07CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC02KSkgLy8gaWYgKGNmclth
Y3RpdmF0aW9uUmVnPHQwPl0uVGFnICE9IEVtcHR5VmFsdWVUYWcpIGdvdG8gLmRvbmU7CiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcENyZWF0ZUFjdGl2YXRpb25Eb25lOwogICAgLy8gY2FsbCBz
bG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb247CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcx
LCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2NyZWF0
ZV9hY3RpdmF0aW9uKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3Vs
dCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVz
dWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcENyZWF0ZUFjdGl2YXRpb25E
b25lKQogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0
cl90KDB4OCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9m
KGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5p
OHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IGluaXRfbGF6eV9yZWcgZHN0UmVnSWQKLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBKU1ZhbHVlKCk7Ci8vIAovLyAgIEluaXRpYWxpc2Vz
IGRzdChyKSB0byBKU1ZhbHVlKCkuCi8vICAgVGhpcyBvcGNvZGUgYXBwZWFycyBvbmx5IGF0IHRo
ZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9w
X2luaXRfbGF6eV9yZWcpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CiAg
ICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
ID0gaW50MzJfdCgtNik7IC8vIGNmcltkc3Q8dDA+XS5UYWcgPSBFbXB0eVZhbHVlVGFnOwogICAg
KkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9
IGludDMyX3QoMHgwKTsgLy8gY2ZyW2RzdDx0MD5dLlBheWxvYWQgPSAwOwogICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoK
Ly8gYnl0ZWNvZGU6IGNyZWF0ZV9hcmd1bWVudHMgZHN0UmVnSWQKLy8gZnVuY3Rpb246IGNmcltk
c3RSZWdJZF0gPSBuZXcgQXJndW1lbnRzKCkgaWYgbm90IGFscmVhZHkgcHJlc2VudDsKLy8gCi8v
ICAgQ3JlYXRlcyB0aGUgJ2FyZ3VtZW50cycgb2JqZWN0IGFuZCBwbGFjZXMgaXQgaW4gYm90aCB0
aGUKLy8gICAnYXJndW1lbnRzJyBjYWxsIGZyYW1lIHNsb3QgYW5kIHRoZSBsb2NhbCAnYXJndW1l
bnRzJwovLyAgIHJlZ2lzdGVyLCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBpbml0aWFsaXNl
ZC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9jcmVhdGVfYXJndW1lbnRzKQogICAgcjAu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAv
LyBkc3Q8dDA+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihm
cC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNikpIC8v
IGlmIChjZnJbZHN0PHQwPl0uVGFnICE9IEVtcHR5VmFsdWVUYWcpIGdvdG8gLmRvbmU7CiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcENyZWF0ZUFyZ3VtZW50c0RvbmU7CiAgICAvLyBjYWxsIHNs
b3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwg
YXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7
CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAg
ICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcENyZWF0ZUFyZ3VtZW50c0RvbmUp
CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHg4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogb3BfY3JlYXRlX3RoaXMgdGhpc1JlZ0lkCi8vIGZ1
bmN0aW9uOiBjZnJbdGhpc1JlZ0lkXSA9IG5ldyBPYmplY3QoY3VycmVudCBQcm90bz8pOwovLyBt
bGFtIEZJWE1FOiBIb3cgZG9lcyB0aGUgY2FjaGVkSW5oZXJpdG9yIGdldCBwb3B1bGF0ZWQ/Ci8v
ICAgICAgIENsYXNzaWMgc3BlY2lmaWVzIGEgMm5kIG9wZXJhbmQgcHJvdG8ociksIGJ1dCBvdXIg
ZGlzcGF0Y2ggYmVsb3cgaWdub3JlcyBpdC4KLy8gCi8vICAgQWxsb2NhdGUgYW4gb2JqZWN0IGFz
ICd0aGlzJywgZm9yIHVzZSBpbiBjb25zdHJ1Y3Rpb24uCi8vICAgVGhpcyBvcGNvZGUgc2hvdWxk
IG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KCk9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcF9jcmVhdGVfdGhpcykKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KGZwLmk4cCAtIDMyKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpczx0MD4gPSBjZnIu
Q2FsbGVlOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMjQpOyAgICAgICAg
ICAgICAgICAgICAgICAvLyBpbmhlcml0b3I8dDI+ID0gdGhpczx0MD4uY2FjaGVkSW5oZXJpdG9y
SUQ7CiAgICBpZiAocjIuaSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmIChpbmhlcml0b3IgPT0gMCkgZ290byAuc2xvdzsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX29wQ3JlYXRlVGhpc1Nsb3c7CiAgICAvLyBhbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmpl
Y3RDbGFzc0luZm8sIGluaGVyaXRvcjx0Mj4sIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93
KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTQ+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4KTsgICAgICAgICAgICAgICAgICAgICAgLy8gICBn
bG9iYWxEYXRhPGE0PiA9IGNvZGVCbG9jazxhND4uZ2xvYmFsRGF0YTsKICAgIC8vIEdldCB0aGUg
b2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIxLmk4cCArIDEyNzIpOyAgICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+ID0gZ2xv
YmFsRGF0YTxhND4uTXlTaXplQ2xhc3MuRmlyc3RGcmVlQ2VsbDsKICAgIGlmIChyMC5pID09IDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoIXJl
c3VsdDxhMz4gaS5lLiBubyBmcmVlIGNlbGwpIGdvdG8gLnNsb3dDYXNlOwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdzsKICAgIC8vIFJlbW92ZSB0aGUgb2JqZWN0IGZy
b20gdGhlIGZyZWUgbGlzdC4KICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBuZXh0PGE1PiA9IHJlc3VsdDxhMz4ucHRyOwog
ICAgKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAxMjcyKSA9IHI0Lmk7ICAgICAgICAgICAgICAg
ICAgICAvLyAgIGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNlbGwgPSBuZXh0
PGE1PjsKICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdC4KICAgIHI0LmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIxLmk4cCArIDY1NTYpOyAgICAgICAgICAgICAgICAgICAgLy8gICBjbGFzc0luZm88
YTU+ID0gZ2xvYmFsRGF0YTxhND4uY2xhc3NJbmZvT2Zmc2V0OwogICAgKkNBU1Q8aW50cHRyX3Qq
PihyMC5pOHApID0gcjQuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHJlc3VsdDxh
Mz4ucHRyID0gY2xhc3NJbmZvPGE1PjsKICAgICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNCkg
PSByMi5pOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+LnN0cnVjdHVyZSA9
IHN0cnVjdHVyZTxhMj47CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpID0gaW50cHRy
X3QoMHgwKTsgICAgICAgICAgICAgIC8vICAgcmVzdWx0PGEzPi5vdXRPZkxpbmVTdG9yYWdlID0g
MDsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhpc0lEPHQxPiA9IG9wZXJhbmRzW3RoaXNSZWdJZF07CiAgICAqQ0FTVDxp
bnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gaW50MzJf
dCgtNSk7IC8vIGNmclt0aGlzSUQ8dDE+XS5UYWcgPSBDZWxsVGFnOwogICAgKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsgLy8g
Y2ZyW3RoaXNJRDx0MT5dLlBheWxvYWQgPSB0aGlzPHQwPjsKICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdykKICAgIC8vIGNh
bGwgc2xvd19wYXRoX2NyZWF0ZV90aGlzOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwg
YXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7
CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAg
ICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
dGhpcyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmlu
c3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0
cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNv
ZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUo
KTsKCi8vIGJ5dGVjb2RlOiBjb252ZXJ0X3RoaXMgdGhpc1JlZ0lkIG9yYWNsZUNhY2hlSWQKLy8g
ZnVuY3Rpb246IGNmclt0aGlzUmVnSWRdID0gQ29udmVydFRvVGhpcyhjZnJbdGhpc1JlZ0lkXSk7
Ci8vIAovLyAgIFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3RoaXMnIHJlZ2lzdGVyLCBjb252ZXJ0
cyBpdCB0byBhCi8vICAgdmFsdWUgdGhhdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHRoZSAndGhp
cycgdmFsdWUsIGFuZAovLyAgIHN0b3JlcyBpdCBpbiB0aGUgJ3RoaXMnIHJlZ2lzdGVyLiBUaGlz
IG9wY29kZSBpcyBlbWl0dGVkCi8vICAgdG8gYXZvaWQgZG9pbmcgdGhlIGNvbnZlcnNpb24gaW4g
dGhlIGNhbGxlciB1bm5lY2Vzc2FyaWx5LgovLyAKLy8gICBUaGlzIG9wY29kZSBzaG91bGQgb25s
eSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlCi8vICAgYmxvY2suCgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfY29udmVydF90aGlzKQogICAgcjAuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzSUQ8dDA+ID0g
b3BlcmFuZHNbdGhpc1JlZ0lkXTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIw
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTUpKSAvLyBpZiAoY2ZyW3Ro
aXNJRDx0MD5dLlRhZyAhPSBDZWxsVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fb3BDb252ZXJ0VGhpc1Nsb3c7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5p
OHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIHRoaXM8dDA+ID0gY2ZyW3Ro
aXNJRDx0MD5dLlBheWxvYWQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0
KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MD4gPSB0aGlzPHQwPi5zdHJ1
Y3R1cmU7CiAgICBpZiAoKkNBU1Q8dWludDhfdCo+KHIwLmk4cCArIDgpIDwgdWludDhfdCgweGQp
KSAgICAgICAgICAgIC8vIGlmIChzdHJ1Y3R1cmU8dDA+LnR5cGVJbmZvLnR5cGUgPCBPYmplY3RU
eXBlKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BDb252ZXJ0VGhpc1Ns
b3c7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7ICAgICAgICAgICAg
ICAgICAgICAgIC8vIG9yYWNsZUlkPHQxPiA9IG9wZXJhbmRzW29yYWNsZUNhY2hlSWRdOwogICAg
Ly8gdmFsdWVQcm9maWxlKENlbGxUYWcsIHN0cnVjdHVyZTx0MD4sIG9yYWNsZUlkPHQxPik7CiAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHhj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wQ29udmVy
dFRoaXNTbG93KQogICAgLy8gY2FsbCBzbG93X3BhdGhfY29udmVydF90aGlzOwogICAgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
YWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FT
VDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0
cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxs
aW50X3Nsb3dfcGF0aF9jb252ZXJ0X3RoaXMoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNv
ZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAg
IHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5l
eGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogbmV3X29iamVjdCBkc3RSZWdJ
ZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IG5ldyBPYmplY3QoKTsKLy8gCi8vICAgQ29u
c3RydWN0cyBhIG5ldyBlbXB0eSBPYmplY3QgaW5zdGFuY2UgdXNpbmcgdGhlIG9yaWdpbmFsCi8v
ICAgY29uc3RydWN0b3IsIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX25ld19vYmplY3QpCiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0
MD4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsg
MTYpOyAgICAgICAgICAgICAgICAgICAgICAvLyBnbG9iYWxPYmplY3Q8dDA+ID0gY29kZUJsb2Nr
PHQwPi5nbG9iYWxPYmplY3Q7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0
NzIpOyAgICAgICAgICAgICAgICAgICAgIC8vIGVtcHR5U3RydWN0dXJlPHQxPiA9IGdsb2JhbE9i
amVjdDx0MD4uZW1wdHlPYmplY3RTdHJ1Y3R1cmU7CiAgICAvLyBhbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmpl
Y3RDbGFzc0luZm8sIGVtcHR5U3RydWN0dXJlPHQxPiwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0
U2xvdyk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGE0PiA9IGNmci5Db2RlQmxvY2s7CiAgICByMi5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0OCk7ICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgZ2xvYmFsRGF0YTxhND4gPSBjb2RlQmxvY2s8YTQ+Lmdsb2JhbERhdGE7CiAgICAvLyBHZXQg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMi5pOHAgKyAxMjcyKTsgICAgICAgICAgICAgICAgICAgIC8vICAgcmVzdWx0PGEzPiA9
IGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNlbGw7CiAgICBpZiAocjAuaSA9
PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYg
KCFyZXN1bHQ8YTM+IGkuZS4gbm8gZnJlZSBjZWxsKSBnb3RvIC5zbG93Q2FzZTsKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX29wTmV3T2JqZWN0U2xvdzsKICAgIC8vIFJlbW92ZSB0aGUgb2JqZWN0
IGZyb20gdGhlIGZyZWUgbGlzdC4KICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBuZXh0PGE1PiA9IHJlc3VsdDxhMz4ucHRy
OwogICAgKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyAxMjcyKSA9IHI0Lmk7ICAgICAgICAgICAg
ICAgICAgICAvLyAgIGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNlbGwgPSBu
ZXh0PGE1PjsKICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdC4KICAgIHI0LmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIyLmk4cCArIDY1NTYpOyAgICAgICAgICAgICAgICAgICAgLy8gICBjbGFzc0lu
Zm88YTU+ID0gZ2xvYmFsRGF0YTxhND4uY2xhc3NJbmZvT2Zmc2V0OwogICAgKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHApID0gcjQuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHJlc3Vs
dDxhMz4ucHRyID0gY2xhc3NJbmZvPGE1PjsKICAgICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsg
NCkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+LnN0cnVjdHVy
ZSA9IHN0cnVjdHVyZTxhMj47CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpID0gaW50
cHRyX3QoMHgwKTsgICAgICAgICAgICAgIC8vICAgcmVzdWx0PGEzPi5vdXRPZkxpbmVTdG9yYWdl
ID0gMDsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAg
ICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwogICAgKkNBU1Q8
aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IGludDMy
X3QoLTUpOyAvLyBjZnJbZHN0SWQ8dDE+XS5UYWcgPSBDZWxsVGFnOwogICAgKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsgLy8g
Y2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IGFsbG9jYXRlZE9iamVjdDx0MD47CiAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg4KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wTmV3T2JqZWN0U2xvdykK
ICAgIC8vIGNhbGwgc2xvd19wYXRoX25ld19vYmplY3Q7CiAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlv
bihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+
KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBD
LnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRo
X25ld19vYmplY3QoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0
LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg4
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgovLyBieXRlY29kZTogbW92IGRzdFJlZ0lkIHNyY1JlZ0lkCi8vIGZ1bmN0aW9u
OiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyY1JlZ0lkXTsKLy8gCi8vICAgQ29waWVzIHJlZ2lzdGVy
IHNyYyB0byByZWdpc3RlciBkc3QuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbW92KQog
ICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAg
ICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CiAgICByMC5pID0gKkNBU1Q8
dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQw
PiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3Jj
SWQ8dDE+ID09PiB2YWx1ZTx0MiwgdDM+KTsKICAgIGlmIChyMS5pMzIgPj0gaW50MzJfdCgweDQw
MDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjIuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAv
LyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByNC5pID0gKkNBU1Q8dWludDMy
X3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9h
ZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQpCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7CiAg
ICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAg
ICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3Rl
cnMudmVjdG9yQnVmZmVyOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgKHIx
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8
YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsg
KHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVjdG9y
QnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAqQ0FTVDxpbnQz
Ml90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gcjIuaTMyOyAv
LyBjZnJbZHN0SWQ8dDA+XS5UYWcgPSBzcmNUYWc8dDI+OwogICAgKkNBU1Q8aW50MzJfdCo+KGZw
Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHI0LmkzMjsgLy8gY2ZyW2Rz
dElkPHQwPl0uUGF5bG9hZCA9IHNyY1BheWxvYWQ8dDM+OwogICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNv
ZGU6IG5vdCBkc3RSZWdJZCBzcmNSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9ICFj
ZnJbc3JjcmVnSWRdOwovLyAKLy8gICBDb21wdXRlcyBsb2dpY2FsIE5PVCBvZiByZWdpc3RlciBz
cmMgKGNvbnZlcnRlZCB0bwovLyAgIGJvb2xlYW4pLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJl
Z2lzdGVyIGRzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9ub3QpCiAgICByMC5pID0g
KkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNy
Y0lkPHQwPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MD4gPT4g
dGFnPHQyPiwgcGF5bG9hZDx0Mz4pOwogICAgaWYgKHIwLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAw
MDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIyLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8g
ICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90
Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8
YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV8wX2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgICAgICAgICAvLyAgIGdvdG8gLmRvbmU7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzBfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQpCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7CiAg
ICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAg
ICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3Rl
cnMudmVjdG9yQnVmZmVyOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgKHIw
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8
YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsg
KHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVjdG9y
QnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMi5p
MzIgIT0gaW50MzJfdCgtMikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KHRhZzx0Mj4gIT0gQm9vbGVhblRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX29wTm90U2xvdzsKICAgIHI0LmkzMiA9IHI0LmkzMiBeIGludDMyX3QoMHgxKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGF5bG9hZDx0Mz4gPSAhcGF5bG9hZDx0Mz47CiAgICAq
Q0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0g
cjIuaTMyOyAvLyBjZnJbZHN0eHNJZDx0MT5dLlRhZyA9IHRhZzx0Mj47CiAgICAqQ0FTVDxpbnQz
Ml90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjQuaTMyOyAv
LyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0gcGF5bG9hZDx0Mz47CiAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAg
IG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wTm90U2xvdykKICAgIC8vIGNhbGwg
c2xvd19wYXRoX25vdDsKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAg
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIElu
c3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfbm90KGV4ZWMsIHBjKTsKICAg
ICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNT
dGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAu
aSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IGVx
IGRzdFJlZ0lkIHNyYzFSZWdJZCBzcmMyUmVnSWQKLy8gZnVuY3Rpb246IGNmcltkc3RyZWdJZF0g
PSAoY2ZyW3NyYzFSZWdJZF0gPT0gY2ZyW3NyYzJSZWdJZF0pOwovLyAKLy8gICBDaGVja3Mgd2hl
dGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBlcXVhbCwKLy8gICBhcyB3
aXRoIHRoZSBFQ01BU2NyaXB0ICc9PScgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZSByZXN1bHQKLy8g
ICBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVM
KG9wX2VxKQogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDEyKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKICAgIHIw
LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gc3JjMUlkPHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CiAgICAvLyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNyYzJJZDx0Mj4gPT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CiAgICBpZiAo
cjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29u
c3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50OwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8
PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7
CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAg
ICBnb3RvIF9vZmZsaW5lYXNtXzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAgICAg
ICAgIC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29k
ZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8v
ICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3JjMUlkPHQw
PiA9PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjAuaTMyID49IGlu
dDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4
PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOyAgICAgICAgIC8vICAg
Z290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4g
PSBjZnIuQ29kZUJsb2NrOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNDg0
KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2RlQmxvY2s8
YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIwLmkzMiA9IHIwLmkzMiA8
PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBieXRlSW5kZXg8
YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByMi5pID0gcjIuaSArIHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1
ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5p
OHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFu
dDxhMT4uUGF5bG9hZDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQpOyAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRhZzsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2RvbmUpCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zy4KICAgIGlmIChyMi5pMzIgIT0gcjQuaTMyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IHRhZzI8dDM+KSBnb3RvIC5zbG93OwogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fb3BFcVNsb3c7CiAgICBpZiAocjIuaTMyID09IGludDMyX3QoLTUp
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiA9PSBDZWxs
VGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BFcVNsb3c7CiAgICBp
ZiAocjIudTMyIDwgdWludDMyX3QoLTcpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcEVxU2xvdzsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOwogICAgcjAuaSA9IChyMC51MzIgPT0gcjEudTMyKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDA+ID0gKHBheWxvYWQyPHQxPiA9PSBwYXls
b2FkMTx0MD4pOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDQpKSA9IGludDMyX3QoLTIpOyAvLyBjZnJbZHN0SWQ8dDI+XS5UYWcgPSBCb29s
ZWFuVGFnOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKSA9IHIwLmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHBheWxvYWQx
PHQwPjsKICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMu
aThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
b3BFcVNsb3cpCiAgICAvLyBjYWxsIHNsb3dfcGF0aF9lcTsKICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0
aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRl
Kj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihy
UEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3Bh
dGhfZXEoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5p
bnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5z
dHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgovLyBieXRlY29kZTogZXFfbnVsbCBkc3RSZWdJZCBzcmNSZWdJZAovLyBmdW5jdGlvbjog
Y2ZyW2RzdHJlZ0lkXSA9IChjZnJbc3JjUmVnSWRdID09IG51bGwpOwovLyAKLy8gICBDaGVja3Mg
d2hldGhlciByZWdpc3RlciBzcmMgaXMgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0n
Ci8vICAgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZSByZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lz
dGVyIGRzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9lcV9udWxsKQogICAgcjAuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBz
cmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQzPiA9IG9wZXJh
bmRzW2RzdFJlZ0lkXTsKICAgIC8vIGFzc2VydE5vdENvbnN0YW50KHNyY0lkPHQwPik7CiAgICAv
LyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwogICAgLy8g
bWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHIwLmkzMiA8IGludDMyX3QoMHg0MDAw
MDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9hc3NlcnROb3RDb25zdGFudF9fYXNzZXJ0
X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNy
YXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9hc3NlcnROb3RDb25z
dGFudF9fYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2VydC4KICAgIHIxLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gdGFn
PHQxPiA9IGNmcltzcmNJZDx0MD5dLlRhZzsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZw
Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gcGF5bG9hZDx0MD4gPSBj
ZnJbc3JjSWQ8dDA+XS5QYXlsb2FkOwogICAgaWYgKHIxLmkzMiAhPSBpbnQzMl90KC01KSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQxPiAhPSBDZWxsVGFnKSBn
b3RvIC5pbW1lZGlhdGU7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEVxTnVsbEltbWVkaWF0
ZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQpOyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc3RydWN0dXJlPHQxPiA9IHBheWxvYWQ8dDA+LnN0cnVjdHVyZTsKICAgIHIx
LmkgPSAoKCpDQVNUPGludDhfdCo+KHIxLmk4cCArIDkpICYgaW50OF90KDB4MSkpICE9IDApOyAg
Ly8gcmVzdWx0PHQxPiA9ICgoc3RydWN0dXJlPHQxPi50eXBlSW5mby5mbGFnICYgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkgIT0gMCk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX29wRXFOdWxsTm90SW1t
ZWRpYXRlOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gLm5vdEltbWVkaWF0ZTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BFcU51bGxJbW1lZGlhdGUpCiAgICBy
Mi5pID0gKHIxLnUzMiA9PSB1aW50MzJfdCgtMykpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlzTnVsbDx0Mj4gPSAodGFnPHQxPiA9PSBOdWxsdGFnKTsKICAgIHIxLmkgPSAocjEudTMy
ID09IHVpbnQzMl90KC00KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXNVbmRlZmlu
ZWQ8dDE+ID0gKHRhZzx0MT4gPT0gVW5kZWZpbmVkVGFnKTsKICAgIHIxLmkzMiA9IHIxLmkzMiB8
IHIyLmkzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9
IGlzTnVsbDx0Mj4gfCBpc1VuZGVmaW5lZDx0MT47CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX29wRXFOdWxsTm90SW1tZWRpYXRlKQogICAgKkNBU1Q8aW50MzJfdCo+KGZw
Lmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IGludDMyX3QoLTIpOyAvLyBj
ZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4
cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIxLmkzMjsgLy8gY2ZyW2RzdElk
PHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogbmVx
IGRzdFJlZ0lkIHNyYzFSZWdJZCBzcmMyUmVnSWQKLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0g
PSAoY2ZyW3NyYzFSZWdJZF0gIT0gY2ZyW3NyYzJSZWdJZF0pOwovLyAKLy8gICBDaGVja3Mgd2hl
dGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBub3QKLy8gICBlcXVhbCwg
YXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUKLy8gICBy
ZXN1bHQgYXMgYSBib29sZWFuIGluIHJlZ2lzdGVyIGRzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9uZXEpCiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIpOyAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMyUmVnSWRdOwog
ICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAg
ICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKICAgIC8vIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CiAg
ICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290
byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8yX2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50OwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIy
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+
XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxv
YWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsg
ICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBj
b2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIxLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+
ID0gY29kZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0
KSk7IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICBy
MS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5
bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMl9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3Jj
MUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CiAgICAvLyBtYWNybzogbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHIwLmkz
MiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlm
IChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50
OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
Y29uc3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsK
ICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAg
ICBnb3RvIF9vZmZsaW5lYXNtXzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7ICAg
ICAgIC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpCiAgICByMi5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29k
ZUJsb2NrPGExPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihy
Mi5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGExPiA9
IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjAuaTMy
ID0gcjAuaTMyIDw8IGludDMyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGJ5dGVJbmRleDxhMD4gPSBpbmRleDxhMD4gPDwgMzsKICAgIHIyLmkgPSByMi5pICsgcjAuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4g
PSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIyLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEy
PiA9IGNvbnN0YW50PGExPi5QYXlsb2FkOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIu
aThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSBjb25zdGFudDxh
MT4uVGFnOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8yX2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjIuaTMyICE9IHI0LmkzMikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSB0YWcyPHQzPikgZ290byAu
c2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wTmVxU2xvdzsKICAgIGlmIChyMi5pMzIg
PT0gaW50MzJfdCgtNSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRh
ZzE8dDI+ID09IENlbGx0YWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9v
cE5lcVNsb3c7CiAgICBpZiAocjIudTMyIDwgdWludDMyX3QoLTcpKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdv
dG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcE5lcVNsb3c7CiAgICByMi5pID0g
KkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRz
dElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIHIwLmkgPSAocjAudTMyICE9IHIxLnUz
Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQwPiA9IChwYXls
b2FkMTx0MD4gIT0gcGF5bG9hZDI8dDE+KTsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBpbnQzMl90KC0yKTsgLy8gY2ZyW2RzdElk
PHQyPl0uVGFnID0gQm9vbGVhblRhZzsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjIu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pMzI7IC8vIGNmcltkc3RJZDx0Mj5dLlBh
eWxvYWQgPSByZXN1bHQ8dDA+OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkg
PSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNU
UlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9vcE5lcVNsb3cpCiAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXE7CiAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNU
PEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
ID0gbGxpbnRfc2xvd19wYXRoX25lcShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJl
c3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBD
LmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNT
dGF0ZTx0MT4KICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNp
emVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihy
UEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5dGVjb2RlOiBuZXFfbnVsbCBkc3RSZWdJZCBzcmNS
ZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjUmVnSWRdICE9IG51bGwp
OwovLyAKLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMgaXMgbm90IG51bGwsIGFzIHdp
dGggdGhlIEVDTUFTY3JpcHQgJyE9JwovLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0
IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwo
b3BfbmVxX251bGwpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7ICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAg
ICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwogICAgLy8gYXNzZXJ0Tm90Q29u
c3RhbnQoc3JjSWQ8dDA+KTsKICAgIC8vIGFzc2VydChpbmRleDxhMD4gPCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCk7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBpZiAo
cjAuaTMyIDwgaW50MzJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Fz
c2VydE5vdENvbnN0YW50X18yX2Fzc2VydF9fb2s7CiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAg
IENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzJfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5E
IGFzc2VydC4KICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDQpKTsgLy8gdGFnPHQxPiA9IGNmcltzcmNJZDx0MD5dLlRhZzsKICAg
IHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsgLy8gcGF5bG9hZDx0MD4gPSBjZnJbc3JjSWQ8dDA+XS5QYXlsb2FkOwogICAgaWYg
KHIxLmkzMiAhPSBpbnQzMl90KC01KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAodGFnPHQxPiAhPSBDZWxsVGFnKSBnb3RvIC5pbW1lZGlhdGU7CiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV9vcE5lcU51bGxJbW1lZGlhdGU7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMC5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBw
YXlsb2FkPHQwPi5zdHJ1Y3R1cmU7CiAgICByMS5pID0gKCgqQ0FTVDxpbnQ4X3QqPihyMS5pOHAg
KyA5KSAmIGludDhfdCgweDEpKSA9PSAwKTsgIC8vIHJlc3VsdDx0MT4gPSAoKHN0cnVjdHVyZTx0
MT4udHlwZUluZm8uZmxhZ3MgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSA9PSAwKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fb3BOZXFOdWxsTm90SW1tZWRpYXRlOyAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byAubm90SW1tZWRpYXRlOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9vcE5lcU51bGxJbW1lZGlhdGUpCiAgICByMi5pID0gKHIxLnUzMiAhPSB1aW50MzJfdCgt
MykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzTm90TnVsbDx0Mj4gPSAodGFnPHQx
PiAhPSBOdWxsVGFnKTsKICAgIHIxLmkgPSAocjEudTMyICE9IHVpbnQzMl90KC00KSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaXNOb3RVbmRlZmluZWQ8dDE+ID0gKHRhZzx0MT4gIT0g
VW5kZWZpbmVkVGFnKTsKICAgIHIxLmkzMiA9IHIxLmkzMiAmIHIyLmkzMjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IChpc05vdE51bGw8dDI+ICYgaXNO
b3RVbmRlZmluZWQ8dDE+KTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
b3BOZXFOdWxsTm90SW1tZWRpYXRlKQogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyNC5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IGludDMyX3QoLTIpOyAvLyBjZnJbZHN0SWQ8dDM+
XS5UYWcgPSBCb29sZWFuVGFnOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIxLmkzMjsgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9h
ZCA9IHJlc3VsdDx0MT47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogc3RyaWN0ZXEgZHN0UmVn
SWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJb
c3JjMVJlZ2RdID09PSBjZnJbc3JjMlJlZ0lkXSk7Ci8vIAovLyAgIENoZWNrcyB3aGV0aGVyIHJl
Z2lzdGVyIHNyYzEgYW5kIHJlZ2lzdGVyIHNyYzIgYXJlIHN0cmljdGx5Ci8vICAgZXF1YWwsIGFz
IHdpdGggdGhlIEVDTUFTY3JpcHQgJz09PScgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZQovLyAgIHJl
c3VsdCBhcyBhIGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX3N0cmljdGVxKQogICAgLy8gc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1
bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIHNsb3dQYXRoPF9sbGludF9zbG93X3Bh
dGhfc3RyaWN0ZXE+KTsKICAgIC8vIENPTVBBUkFUT1IgPSAiPT0iCiAgICByMi5pID0gKkNBU1Q8
dWludDMyX3QqPihyUEMuaThwICsgMTIpOyAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0
Mj4gPSBvcGVyYW5kc1tzcmMyUmVnSWRdOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBD
Lmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNb
c3JjMVJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4g
dGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAw
MDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9zdHJpY3RFcV9fM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGlu
ZWFzbV9zdHJpY3RFcV9fM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOyAvLyAgIGdvdG8g
LmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX18z
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxh
Mj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsg
NDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMj4gPSBjb2RlQmxv
Y2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHI0LmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0
YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
ICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9zdHJpY3RFcV9fM19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3Jj
MUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CiAgICAvLyBtYWNybzogbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHIwLmkz
MiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlm
IChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50
OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fc3RyaWN0RXFfXzNfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2NvbnN0YW50OwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsg
KHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8
YTA+XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5Q
YXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9zdHJpY3RFcV9fM19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9M
QUJFTChfb2ZmbGluZWFzbV9zdHJpY3RFcV9fM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
Y29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGExPiA9IGNmci5Db2RlQmxvY2s7CiAgICBy
Mi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAg
IC8vICAgdmVjdG9yQnVmZmVyPGExPiA9IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdpc3RlcnMu
dmVjdG9yQnVmZmVyOwogICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3QoMHgzKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxhMD4gPSBpbmRleDxhMD4gPDwgMzsK
ICAgIHIyLmkgPSByMi5pICsgcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+
XTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNvbnN0YW50PGExPi5QYXlsb2FkOwogICAgcjIu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIHRhZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9zdHJpY3RFcV9fM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9u
ZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgaWYg
KHIyLmkzMiAhPSByNC5pMzIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4pIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9zdHJpY3RFcV9fc2xvdzsKICAgIGlmIChyMi51MzIgPCB1aW50MzJfdCgtNykpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+IDwgTG93ZXN0VGFn
KSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fc3RyaWN0RXFfX3Nsb3c7CiAg
ICBpZiAocjIuaTMyICE9IGludDMyX3QoLTUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmICh0YWcxPHQyPiAhPSBDZWxsVGFnKSBnb3RvIC5ub3RTdHJpbmc7CiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9zdHJpY3RFcV9fbm90U3RyaW5nOwogICAgcjIuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjAuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmUx
PHQyPiA9IHBheWxvYWQxPHQwPi5zdHJ1Y3R1cmU7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTI8dDM+ID0g
cGF5bG9hZDI8dDE+LnN0cnVjdHVyZTsKICAgIGlmICgqQ0FTVDxpbnQ4X3QqPihyMi5pOHAgKyA4
KSAhPSBpbnQ4X3QoMHg1KSkgICAgICAgICAgICAgLy8gaWYgKHN0cnVjdHVyZTE8dDI+LnR5cGVJ
bmZvLnR5cGUgIT0gU3RyaW5nVHlwZSkgZ290byAubm90U3RyaW5nOwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fc3RyaWN0RXFfX25vdFN0cmluZzsKICAgIGlmICgqQ0FTVDxpbnQ4X3QqPihyNC5p
OHAgKyA4KSA9PSBpbnQ4X3QoMHg1KSkgICAgICAgICAgICAgLy8gaWYgKHN0cnVjdHVyZTI8dDM+
LnR5cGVJbmZvLnR5cGUgPT0gU3RyaW5nVHlwZSkgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX3N0cmljdEVxX19zbG93OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9zdHJpY3RFcV9fbm90U3RyaW5nKQogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5k
c1tkc3RSZWdJZF07CiAgICAvLyByZXN1bHQ8dDA+ID0gcGF5bG9hZDE8dDA+IENPTVBBUkFUT1Ig
cGF5bG9hZDI8dDE+OwogICAgcjAuaSA9IChyMC51MzIgPT0gcjEudTMyKTsKICAgICpDQVNUPGlu
dDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBpbnQzMl90
KC0yKTsgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKICAgICpDQVNUPGludDMy
X3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pMzI7IC8v
IGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSByZXN1bHQ8dDA+OwogICAgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9zdHJpY3RFcV9fc2xvdykKICAgIC8vIGNh
bGwgc2xvd1BhdGg8YTE+OwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAg
ICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAg
SW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xv
d1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcShleGVjLCBw
Yyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCBy
MS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4K
ICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5dGVj
b2RlOiBuc3RyaWN0ZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAovLyBmdW5jdGlvbjog
Y2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAhPT0gY2ZyW3NyYzJSZWdJZF0pOwovLyAK
Ly8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBu
b3QKLy8gICBzdHJpY3RseSBlcXVhbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT09JyBvcGVy
YXRvciwgYW5kCi8vICAgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBk
c3QuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbnN0cmljdGVxKQogICAgLy8gc3RyaWN0
RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQg
ZW5kLCBzbG93UGF0aDxfbGxpbnRfc2xvd19wYXRoX25zdHJpY3RlcT4pOwogICAgLy8gQ09NUEFS
QVRPUiA9ICIhPSIKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7ICAg
ICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CiAg
ICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7ICAgICAgICAgICAgICAgICAg
ICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOwogICAgLy8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKICAg
IGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3Rv
IC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3N0cmljdEVxX180X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAu
aThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJb
aW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8
YTA+LlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3N0cmljdEVxX180X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fc3RyaWN0RXFfXzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29u
c3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8v
ICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVj
dG9yQnVmZmVyOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8
PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2lu
ZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVjdG9yQnVmZmVy
PGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX3N0cmljdEVxX180X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9h
ZDE8dDA+KTsKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwg
dGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9z
dHJpY3RFcV9fNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICByMi5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0
KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBw
YXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNt
X3N0cmljdEVxX180X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOyAvLyAgIGdvdG8g
LmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX180
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4
cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29k
ZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pMzIgPSBy
MC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0
ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkgKyByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50PGExPiA9ICZ2
ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90
Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+ID0g
Y29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAg
KyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5U
YWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX180X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjIuaTMyICE9IHI0LmkzMikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSB0YWcyPHQzPikg
Z290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzRfc3RyaWN0RXFfX3Nsb3c7CiAg
ICBpZiAocjIudTMyIDwgdWludDMyX3QoLTcpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmICh0YWcxPHQyPiA8IExvd2VzdFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtXzRfc3RyaWN0RXFfX3Nsb3c7CiAgICBpZiAocjIuaTMyICE9IGludDMyX3Qo
LTUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiAhPSBD
ZWxsVGFnKSBnb3RvIC5ub3RTdHJpbmc7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80X3N0cmlj
dEVxX19ub3RTdHJpbmc7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0KTsg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTE8dDI+ID0gcGF5bG9hZDE8dDA+LnN0
cnVjdHVyZTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQpOyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlMjx0Mz4gPSBwYXlsb2FkMjx0MT4uc3RydWN0dXJl
OwogICAgaWYgKCpDQVNUPGludDhfdCo+KHIyLmk4cCArIDgpICE9IGludDhfdCgweDUpKSAgICAg
ICAgICAgICAvLyBpZiAoc3RydWN0dXJlMTx0Mj4udHlwZUluZm8udHlwZSAhPSBTdHJpbmdUeXBl
KSBnb3RvIC5ub3RTdHJpbmc7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80X3N0cmljdEVxX19u
b3RTdHJpbmc7CiAgICBpZiAoKkNBU1Q8aW50OF90Kj4ocjQuaThwICsgOCkgPT0gaW50OF90KDB4
NSkpICAgICAgICAgICAgIC8vIGlmIChzdHJ1Y3R1cmUyPHQzPi50eXBlSW5mby50eXBlID09IFN0
cmluZ1R5cGUpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80X3N0cmljdEVx
X19zbG93OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80X3N0cmljdEVx
X19ub3RTdHJpbmcpCiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAg
ICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAg
IC8vIHJlc3VsdDx0MD4gPSBwYXlsb2FkMTx0MD4gQ09NUEFSQVRPUiBwYXlsb2FkMjx0MT47CiAg
ICByMC5pID0gKHIwLnUzMiAhPSByMS51MzIpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAr
IChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IGludDMyX3QoLTIpOyAvLyBjZnJbZHN0
SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChy
Mi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0u
UGF5bG9hZCA9IHJlc3VsdDx0MD47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzRfc3RyaWN0RXFfX3Nsb3cpCiAgICAvLyBjYWxsIHNsb3dQYXRoPGEx
PjsKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBw
YyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfbnN0cmljdGVxKGV4ZWMsIHBjKTsKICAgICAgICBM
TEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7
CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIx
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIg
PSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9J
TlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IHByZV9pbmMg
c3JjRHN0UmVnSWQKLy8gZnVuY3Rpb246IGNmcltzcmNEc3RyZWdJZF0gPSArK2NmcltzcmNEc3Ry
ZWdJZF07Ci8vIAovLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIsIGFkZHMg
b25lLCBhbmQgcHV0cyB0aGUgcmVzdWx0Ci8vICAgYmFjayBpbiByZWdpc3RlciBzcmNEc3QuCgpP
RkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHJlX2luYykKICAgIHIwLmkgPSAqQ0FTVDx1aW50
MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnSWQ8dDA+ID0g
b3BlcmFuZHNbc3JjRHN0UmVnSWRdOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAo
cjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtMSkpIC8vIGlmIChjZnJb
cmVnSWQ8dDA+XS5UYWcgIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcFByZUluY1Nsb3c7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAg
KyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIHJlc3VsdDx0MT4gPSBjZnJbcmVn
SWQ8dDA+XS5QYXlsb2FkOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKytyZXN1bHQ8dDE+IG92ZXJsb3dzKSBnb3Rv
IC5zbG93OwogICAgICAgIGludDMyX3QgYSA9IGludDMyX3QoMHgxKTsKICAgICAgICBpbnQzMl90
IGIgPSByMS5pMzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOgog
ICAgICAgIC8vIDAgICAgICAgMCAgICAgICB8IHNpZ24oYithKSA9IDEgKHBvcyArIHBvcyAhPSBu
ZWcpCiAgICAgICAgLy8gMCAgICAgICAxICAgICAgIHwgbmV2ZXIKICAgICAgICAvLyAxICAgICAg
IDAgICAgICAgfCBuZXZlcgogICAgICAgIC8vIDEgICAgICAgMSAgICAgICB8IHNpZ24oYithKSA9
IDAgKG5lZyArIG5lZyAhPSBwb3MpCiAgICAgICAgaWYgKChTSUdOX0JJVDMyKGIpID09IFNJR05f
QklUMzIoYSkpICYmIChTSUdOX0JJVDMyKGIrYSkgIT0gU0lHTl9CSVQzMihhKSkpIHsKICAgICAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFByZUluY1Nsb3c7CiAgICAgICAgfQogICAgICAgIHIx
LmkzMiA9IHIxLmkzMiArIGludDMyX3QoMHgxKTsKICAgIH0KICAgICpDQVNUPGludDMyX3QqPihm
cC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMS5pMzI7IC8vIGNmclty
ZWdJZDx0MD5dLlBheWxvYWQgPSByZXN1bHQ8dDE+OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFByZUluY1Nsb3cpCiAgICAvLyBjYWxsIHNsb3df
cGF0aF9wcmVfaW5jOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKGV4ZWMsIHBjKTsK
ICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4
ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAg
ZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6
IHByZV9kZWMgc3JjRHN0UmVnSWQKLy8gZnVuY3Rpb246IGNmcltzcmNEc3RSZWdJZF0gPSAtLWNm
cltzcmNEc3RSZWdJZF07Ci8vIAovLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1i
ZXIsIHN1YnRyYWN0cyBvbmUsIGFuZCBwdXRzIHRoZSByZXN1bHQKLy8gICBiYWNrIGluIHJlZ2lz
dGVyIHNyY0RzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9wcmVfZGVjKQogICAgcjAu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAv
LyByZWdJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CiAgICBpZiAoKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC0x
KSkgLy8gaWYgKGNmcltyZWdJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHJlRGVjU2xvdzsKICAgIHIxLmkgPSAqQ0FTVDx1aW50
MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gcmVzdWx0
PHQxPiA9IGNmcltyZWdJZDx0MD5dLlBheWxvYWQ7CiAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgtLXJlc3VsdDx0MT4g
b3Zlcmxvd3MpIGdvdG8gLnNsb3c7CiAgICAgICAgaW50MzJfdCBhID0gaW50MzJfdCgweDEpOwog
ICAgICAgIGludDMyX3QgYiA9IHIxLmkzMjsKICAgICAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBP
dmVyZmxvd3MgaWY6CiAgICAgICAgLy8gMCAgICAgICAwICAgICAgIHwgbmV2ZXIKICAgICAgICAv
LyAwICAgICAgIDEgICAgICAgfCBzaWduKGItYSkgPSAxIChwb3MgLSBuZWcgIT0gcG9zKQogICAg
ICAgIC8vIDEgICAgICAgMCAgICAgICB8IHNpZ24oYi1hKSA9IDAgKG5lZyAtIHBvcyAhPSBwb3Mp
CiAgICAgICAgLy8gMSAgICAgICAxICAgICAgIHwgbmV2ZXIKICAgICAgICBpZiAoKFNJR05fQklU
MzIoYikgIT0gU0lHTl9CSVQzMihhKSkgJiYgKFNJR05fQklUMzIoYi1hKSA9PSBTSUdOX0JJVDMy
KGEpKSkgewogICAgICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHJlRGVjU2xvdzsKICAgICAg
ICB9CiAgICAgICAgcjEuaTMyID0gcjEuaTMyIC0gaW50MzJfdCgweDEpOwogICAgfQogICAgKkNB
U1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIx
LmkzMjsgLy8gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CiAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg4KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wUHJlRGVjU2xvdykKICAg
IC8vIGNhbGwgc2xvd19wYXRoX3ByZV9kZWM7CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcx
LCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3ByZV9k
ZWMoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0
cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1
Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg4KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgovLyBieXRlY29kZTogcG9zdF9pbmMgZHN0UmVnSWQgc3JjRHN0UmVnSWQKLy8gZnVuY3Rpb246
IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjRHN0UmVnSWRdKys7Ci8vIAovLyAgIENvbnZlcnRzIHJl
Z2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBudW1iZXIgaXRzZWxmIGlzCi8vICAgd3JpdHRl
biB0byByZWdpc3RlciBkc3QsIGFuZCB0aGUgbnVtYmVyIHBsdXMgb25lIGlzIHdyaXR0ZW4KLy8g
ICBiYWNrIHRvIHJlZ2lzdGVyIHNyY0RzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9w
b3N0X2luYykKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjRHN0UmVnSWRdOwogICAg
cjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAg
ICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CiAgICBpZiAoKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC0x
KSkgLy8gaWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUG9zdEluY1Nsb3c7CiAgICBpZiAocjAuaTMyID09IHIx
LmkzMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmNJZDx0
MD4gPT0gZHN0SWQ8dDE+KSBnb3RvIC5kb25lOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQ
b3N0SW5jRG9uZTsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gb2xkUGF5bG9hZDx0Mj4gPSBjZnJbc3JjSWQ8dDA+
XS5QYXlsb2FkOwogICAgcjQuaSA9IHIyLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBuZXdQYXlsb2FkPHQzPiA9IG9sZFBheWxvYWQ8dDI+OwogICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAoKytuZXdQYXlsb2FkPHQzPiBvdmVyZmxvd3MpIGdvdG8gLnNsb3c7CiAgICAgICAg
aW50MzJfdCBhID0gaW50MzJfdCgweDEpOwogICAgICAgIGludDMyX3QgYiA9IHI0LmkzMjsKICAg
ICAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6CiAgICAgICAgLy8gMCAgICAg
ICAwICAgICAgIHwgc2lnbihiK2EpID0gMSAocG9zICsgcG9zICE9IG5lZykKICAgICAgICAvLyAw
ICAgICAgIDEgICAgICAgfCBuZXZlcgogICAgICAgIC8vIDEgICAgICAgMCAgICAgICB8IG5ldmVy
CiAgICAgICAgLy8gMSAgICAgICAxICAgICAgIHwgc2lnbihiK2EpID0gMCAobmVnICsgbmVnICE9
IHBvcykKICAgICAgICBpZiAoKFNJR05fQklUMzIoYikgPT0gU0lHTl9CSVQzMihhKSkgJiYgKFNJ
R05fQklUMzIoYithKSAhPSBTSUdOX0JJVDMyKGEpKSkgewogICAgICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX29wUG9zdEluY1Nsb3c7CiAgICAgICAgfQogICAgICAgIHI0LmkzMiA9IHI0LmkzMiAr
IGludDMyX3QoMHgxKTsKICAgIH0KICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjEuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBpbnQzMl90KC0xKTsgLy8gY2ZyW2RzdElkPHQxPl0u
VGFnID0gSW50MzJUYWc7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpID0gcjIuaTMyOyAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0g
b2xkUGF5bG9hZDx0Mj47CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpID0gcjQuaTMyOyAvLyBjZnJbc3JjSWQ8dDA+XS5QYXlsb2FkID0g
bmV3UGF5bG9hZDx0Mz47CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29w
UG9zdEluY0RvbmUpCiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX29wUG9zdEluY1Nsb3cpCiAgICAvLyBjYWxsIHNsb3dfcGF0aF9wb3N0X2luYzsKICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENB
U1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQgPSBsbGludF9zbG93X3BhdGhfcG9zdF9pbmMoZXhlYywgcGMpOwogICAgICAgIExMSW50Ojpk
ZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0K
ICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3Vs
dC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogcG9zdF9kZWMgZHN0UmVn
SWQgc3JjRHN0UmVnSWQKLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjRHN0UmVn
SWRdLS07Ci8vIAovLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBudW1iZXIuIFRoZSBu
dW1iZXIgaXRzZWxmIGlzCi8vICAgd3JpdHRlbiB0byByZWdpc3RlciBkc3QsIGFuZCB0aGUgbnVt
YmVyIG1pbnVzIG9uZSBpcyB3cml0dGVuCi8vICAgYmFjayB0byByZWdpc3RlciBzcmNEc3QuCgpP
RkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcG9zdF9kZWMpCiAgICByMC5pID0gKkNBU1Q8dWlu
dDMyX3QqPihyUEMuaThwICsgOCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9
IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5p
OHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDA+ID0gb3BlcmFuZHNbZHN0
UmVnSWRdOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtMSkpIC8vIGlmIChjZnJbc3JjSWQ8dDA+XS5UYWcg
IT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFBvc3RE
ZWNTbG93OwogICAgaWYgKHIwLmkzMiA9PSByMS5pMzIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUG9zdERlY0RvbmU7CiAgICByMi5pID0gKkNBU1Q8
dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIG9s
ZFBheWxvYWQ8dDI+ID0gY2ZyW3NyY0lkPHQwPl0uUGF5bG9hZDsKICAgIHI0LmkgPSByMi5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9h
ZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKC0tbmV3UGF5bG9hZDx0Mz4gb3Zl
cmZsb3dzKSBnb3RvIC5zbG93OwogICAgICAgIGludDMyX3QgYSA9IGludDMyX3QoMHgxKTsKICAg
ICAgICBpbnQzMl90IGIgPSByNC5pMzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3Zl
cmZsb3dzIGlmOgogICAgICAgIC8vIDAgICAgICAgMCAgICAgICB8IG5ldmVyCiAgICAgICAgLy8g
MCAgICAgICAxICAgICAgIHwgc2lnbihiLWEpID0gMSAocG9zIC0gbmVnICE9IHBvcykKICAgICAg
ICAvLyAxICAgICAgIDAgICAgICAgfCBzaWduKGItYSkgPSAwIChuZWcgLSBwb3MgIT0gcG9zKQog
ICAgICAgIC8vIDEgICAgICAgMSAgICAgICB8IG5ldmVyCiAgICAgICAgaWYgKChTSUdOX0JJVDMy
KGIpICE9IFNJR05fQklUMzIoYSkpICYmIChTSUdOX0JJVDMyKGItYSkgPT0gU0lHTl9CSVQzMihh
KSkpIHsKICAgICAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFBvc3REZWNTbG93OwogICAgICAg
IH0KICAgICAgICByNC5pMzIgPSByNC5pMzIgLSBpbnQzMl90KDB4MSk7CiAgICB9CiAgICAqQ0FT
VDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gaW50
MzJfdCgtMSk7IC8vIGNmcltkc3RJZDx0MT5dLlRhZyA9IEludDMyVGFnOwogICAgKkNBU1Q8aW50
MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmkzMjsg
Ly8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+OwogICAgKkNBU1Q8aW50
MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHI0LmkzMjsg
Ly8gY2ZyW3NyY0lkPHQwPl0uUGF5bG9hZCA9IG5ld1BheWxvYWQ8dDM+OwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFBvc3REZWNEb25lKQogICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFBvc3REZWNTbG93KQogICAgLy8g
Y2FsbCBzbG93X3BhdGhfcG9zdF9kZWM7CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBh
cmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVj
KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1
Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoK
Ly8gYnl0ZWNvZGU6IHRvX2pzbnVtYmVyIGRzdFJlZ0lkIHNyY1JlZ0lkCi8vIGZ1bmN0aW9uOiBj
ZnJbZHN0UmVnSWRdID0gTnVtYmVyKGNmcltkc3RSZWdJZF0pOwovLyAKLy8gICBDb252ZXJ0cyBy
ZWdpc3RlciBzcmMgdG8gbnVtYmVyLCBhbmQgcHV0cyB0aGUgcmVzdWx0Ci8vICAgaW4gcmVnaXN0
ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3RvX2pzbnVtYmVyKQogICAgcjAu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAv
LyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CiAgICByMS5pID0gKkNBU1Q8dWludDMy
X3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQxPiA9IG9w
ZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+
ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQzPik7CiAgICBpZiAocjAuaTMyID49IGludDMyX3QoMHg0
MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV81X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjIuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
OyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByNC5pID0gKkNBU1Q8dWlu
dDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5
bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCkKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9j
azsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDQ4NCk7ICAgICAgICAgICAg
ICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2NrPGEyPi5jb25zdGFudFJl
Z2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAg
KyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1
ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5p
OHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2
ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYg
KHIyLmkzMiA9PSBpbnQzMl90KC0xKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAodGFnPHQyPiA9PSBJbnQzMlRhZykgZ290byAuaXNJbnQ7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcFRvSnNudW1iZXJJc0ludDsKICAgIGlmIChyMi51MzIgPj0gdWludDMyX3QoLTYp
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWc8dDI+
ID49IEVtcHR5VmFsdWVUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9v
cFRvSnNudW1iZXJTbG93OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9v
cFRvSnNudW1iZXJJc0ludCkKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHg0KSkgPSByMi5pMzI7IC8vIGNmcltkc3RJZDx0MT5dLlRhZyA9IHRh
Zzx0Mj47CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpID0gcjQuaTMyOyAvLyBjZnJbZHN0SWQ8dDE+XS5QYXlsb2FkID0gcGF5bG9hZDx0
Mz47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRy
X3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2Yo
Y3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29w
VG9Kc251bWJlclNsb3cpCiAgICAvLyBjYWxsIHNsb3dfcGF0aF90b19qc251bWJlcjsKICAgIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIoZXhlYywgcGMpOwogICAgICAgIExMSW50Ojpk
ZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0K
ICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3Vs
dC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogbmVnYXRlIGRzdFJlZ0lk
IHNyY1JlZ0lkCi8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gLWNmcltzcmNSZWdJZF07Ci8v
IAovLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyYyB0byBudW1iZXIsIG5lZ2F0ZXMgaXQsIGFuZCBw
dXRzIHRoZQovLyAgIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCgpPRkZMSU5FX0FTTV9PUENPREVf
TEFCRUwob3BfbmVnYXRlKQogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgp
OyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07
CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRzdElkPHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc3JjSWQ8dDA+ID09PiB0YWc8dDE+LCBwYXlsb2FkPHQyPik7CiAgICBp
ZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAu
Y29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkz
MiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5U
YWc7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7
CiAgICBnb3RvIF9vZmZsaW5lYXNtXzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAg
ICAgICAgIC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2Rl
QmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIy
Lmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0g
Y29kZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7
IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMi5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9h
ZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lKQogICAgaWYgKHIxLmkzMiAhPSBpbnQzMl90KC0xKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQxPiAhPSBJbnQzMlRhZykgZ290byAu
c3JjTm90SW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BOZWdhdGVTcmNOb3RJbnQ7CiAg
ICBpZiAoKHIyLmkzMiAmIGludDMyX3QoMHg3ZmZmZmZmZikpID09IDApICAgICAgICAgICAgICAg
ICAgIC8vIGlmICgocGF5bG9hZDx0Mj4gJiAweDdmZmZmZmZmKSA9PSAwKSBnb3RvIC5zbG93OyAv
LyBpZiAoaXMgMCBvciBJTlRfTUlOKSAuLi4KICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wTmVn
YXRlU2xvdzsKICAgIHIyLmkzMiA9IC1yMi5pMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGF5bG9hZDx0Mj4gPSAtcGF5bG9hZDx0Mj47CiAgICAqQ0FTVDxp
bnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gaW50MzJf
dCgtMSk7IC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IEludDMyVGFnOwogICAgKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmkzMjsgLy8g
Y2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDI+OwogICAgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNyY05vdEludCkKICAgIGlm
IChyMS51MzIgPiB1aW50MzJfdCgtNykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWYgKCh1bnNpZ25lZCl0YWc8dDE+ID4gTG93ZXN0VGFnKSBnb3RvIC5zbG93OwogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fb3BOZWdhdGVTbG93OwogICAgLy8gV2UgaGF2ZSBhbiB1bmJveGVk
IGRvdWJsZSwganVzdCBpbnZlcnQgaXRzIHNpZ24gYml0OgogICAgcjEuaTMyID0gcjEuaTMyIF4g
aW50MzJfdCgweDgwMDAwMDAwKTsgICAgICAgICAgICAgICAgICAgICAvLyBoaWdoV29yZDx0YWc8
dDE+Pi5zaWduQml0ID0gIWhpZ2hXb3JkPHRhZzx0MT4+LnNpZ25CaXQ7CiAgICAqQ0FTVDxpbnQz
Ml90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gcjEuaTMyOyAv
LyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSB0YWc8dDE+OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4
cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmkzMjsgLy8gY2ZyW2RzdElk
PHQzPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDI+OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNsb3cpCiAgICAvLyBjYWxsIHNsb3dfcGF0
aF9uZWdhdGU7CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVj
dGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJl
dHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX25lZ2F0ZShleGVjLCBwYyk7CiAgICAg
ICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3Rh
dGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkg
PSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5F
WFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5dGVjb2RlOiBhZGQg
ZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9
IGNmcltzcmMyUmVnSWRdICsgY2ZyW3NyYzFSZWdJZF07Ci8vIAovLyAgIEFkZHMgcmVnaXN0ZXIg
c3JjMSBhbmQgcmVnaXN0ZXIgc3JjMiwgYW5kIHB1dHMgdGhlIHJlc3VsdAovLyAgIGluIHJlZ2lz
dGVyIGRzdC4gKEpTIGFkZCBtYXkgYmUgc3RyaW5nIGNvbmNhdGVuYXRpb24gb3IKLy8gICBudW1l
cmljIGFkZCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlcyBvZiB0aGUgb3BlcmFuZHMuKQoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX2FkZCkKICAgIC8vIGJpbmFyeU9wKCJiYWRkaW8gbGVmdCwg
cmlnaHQsIHNsb3ciLCAiYWRkZCBsZWZ0LCByaWdodCIsIF9sbGludF9zbG93X3BhdGhfYWRkKSB7
CiAgICAvLyBtYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24s
IHNsb3dQYXRoKSB7CiAgICAvLyAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoKTsKICAgIC8vIG1hY3Jv
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVy
YXRpb24sIHNsb3dQYXRoKSB7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsg
MTIpOyAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMyUmVn
SWRdOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAg
ICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKICAgIC8vIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQx
Pik7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGlu
ZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fN19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX183X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0g
OCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMj4gPSBjZnIuQ29kZUJs
b2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNDg0KTsgICAgICAgICAg
ICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0YW50
UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gdmVjdG9y
QnVmZmVyPGEyPltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIx
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9
IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fN19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcoc3JjMUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CiAgICAvLyBtYWNybzog
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYg
KHIwLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNv
bnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OwogICAgcjIuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
OyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8dWlu
dDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5
bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9i
aW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fN19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fY29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAg
LSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGExPiA9IGNmci5Db2Rl
QmxvY2s7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0ODQpOyAgICAgICAg
ICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGExPiA9IGNvZGVCbG9jazxhMT4uY29uc3Rh
bnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3Qo
MHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxhMD4gPSBpbmRl
eDxhMD4gPDwgMzsKICAgIHIyLmkgPSByMi5pICsgcjAuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPlti
eXRlSW5kZXg8YTA+XTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNvbnN0YW50PGExPi5QYXls
b2FkOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNCk7ICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9f
N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gSW50MzJU
YWcpIGdvdG8gLm9wMU5vdEludDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19i
aW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQ7CiAgICBpZiAocjQuaTMyICE9IGludDMyX3Qo
LTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJ
bnQzMlRhZykgZ290byAub3AyTm90SW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5
T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludDsKICAgIC8vIG9wMSBhbmQgb3AyIGFy
ZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBlbmQuCiAgICByMi5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElk
PHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIGludGVnZXJPcGVyYXRpb25BbmRTdG9y
ZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0MD4sIC5zbG93LCB0Mik7CiAgICAv
LyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkgewogICAgLy8gICBp
bnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KTsKICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoKHJpZ2h0
ICs9IGxlZnQpIG92ZXJmbG93cykgZ290byBzbG93OwogICAgICAgIGludDMyX3QgYSA9IHIxLmkz
MjsKICAgICAgICBpbnQzMl90IGIgPSByMC5pMzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEp
IHwgT3ZlcmZsb3dzIGlmOgogICAgICAgIC8vIDAgICAgICAgMCAgICAgICB8IHNpZ24oYithKSA9
IDEgKHBvcyArIHBvcyAhPSBuZWcpCiAgICAgICAgLy8gMCAgICAgICAxICAgICAgIHwgbmV2ZXIK
ICAgICAgICAvLyAxICAgICAgIDAgICAgICAgfCBuZXZlcgogICAgICAgIC8vIDEgICAgICAgMSAg
ICAgICB8IHNpZ24oYithKSA9IDAgKG5lZyArIG5lZyAhPSBwb3MpCiAgICAgICAgaWYgKChTSUdO
X0JJVDMyKGIpID09IFNJR05fQklUMzIoYSkpICYmIChTSUdOX0JJVDMyKGIrYSkgIT0gU0lHTl9C
SVQzMihhKSkpIHsKICAgICAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5
T3BDdXN0b21TdG9yZV9fc2xvdzsKICAgICAgICB9CiAgICAgICAgcjAuaTMyID0gcjAuaTMyICsg
cjEuaTMyOwogICAgfQogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDQpKSA9IHI0LmkzMjsgLy8gICBjZnJbaW5kZXhdLlRhZyA9IGludDMyVGFn
OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKSA9IHIwLmkzMjsgLy8gICBjZnJbaW5kZXhdLlBheWxvYWQgPSByaWdodDsKICAgIC8vIH0g
RU5EIG1hY3JvLgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50KQogICAgLy8gRmly
c3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBj
b3VsZCBiZSBhbnl0aGluZy4KICAgIGlmIChyMi51MzIgPiB1aW50MzJfdCgtNykpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA+IExvd2Vz
dFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5h
cnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJsZSwg
b3AyIGlzID8/PzogY2hlY2sgb3AyLgogICAgaWYgKHI0LnUzMiA8IHVpbnQzMl90KC03KSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHVuc2lnbmVkKXRhZzI8dDM+IDwg
TG93ZXN0VGFnKSBnb3RvIC5vcDFOb3RJbnRPcDJEb3VibGU7CiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlOwog
ICAgaWYgKHI0LmkzMiAhPSBpbnQzMl90KC0xKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoIXRhZzI8dDM+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICAv
LyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50MzI6IGNvbnZlcnQgb3AyIHRv
IGRvdWJsZS4KICAgIGQxLmQgPSByMS5pMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8dDE+KTsKICAg
IGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdElu
dFJlYWR5OyAvLyBnb3RvIC5vcDFOb3RJbnRSZWFkeTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9w
MkRvdWJsZSkKICAgIC8vIG9wMSBpcyBpbnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyBpbnQtZW5j
b2RlZC1kb3VibGU6IGNvbnZlcnQgb3AyIHRvIGRvdWJsZS4KICAgIGQxLmQgPSBJbnRzMkRvdWJs
ZShyMS51MzIsIHI0LnUzMik7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4g
PSBEb3VibGUocGF5bG9hZDI8dDE+LCB0YWcyPHQzPik7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRS
ZWFkeSkKICAgIC8vIG9wMSBpcyBpbnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyBkb3VibGU6CiAg
ICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRzdElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIGQwLmQgPSBJbnRzMkRv
dWJsZShyMC51MzIsIHIyLnUzMik7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJsPGZ0
MD4gPSBEb3VibGUocGF5bG9hZDE8dDA+LCB0YWcxPHQyPik7CiAgICAvLyByZXN1bHREYmw8ZnQw
PiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOwogICAgZDAuZCA9
IGQwLmQgKyBkMS5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IHJpZ2h0ID0gbGVmdCArIHJpZ2h0OwogICAgKkNBU1Q8ZG91YmxlKj4oZnAuaThwICsgKHIxLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gZDAuZDsgLy8gY2ZyW2RzdElkPHQxPl0uRG91Ymxl
ID0gcmVzdWx0RGJsPGZ0MD47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RS
VUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpCiAg
ICAvLyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBub3QuCiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThw
ICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJl
Z0lkXTsKICAgIGlmIChyNC51MzIgPiB1aW50MzJfdCgtNykpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAu
c2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0
b3JlX19zbG93OwogICAgLy8gb3AxIGlzIGludDMyLCBvcDIgaXMgaW50LWVuY29kZWQtZG91Ymxl
OgogICAgZDAuZCA9IHIwLmkzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERvdWJsZShwYXlsb2FkMTx0MD4pOyAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgZDEuZCA9IEludHMyRG91YmxlKHIxLnUzMiwgcjQudTMyKTsgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4s
IHRhZzI8dDM+KTsKICAgIC8vIHJlc3VsdERibDxmdDA+ID0gZG91YmxlT3BlcmF0aW9uKG9wMkRi
bDxmdDE+LCBvcDFEYmw8ZnQwPik7CiAgICBkMC5kID0gZDAuZCArIGQxLmQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcmlnaHQgPSBsZWZ0ICsgcmlnaHQ7CiAg
ICAqQ0FTVDxkb3VibGUqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkg
PSBkMC5kOyAvLyBjZnJbZHN0SWQ8dDE+XS5Eb3VibGUgPSByZXN1bHREYmw8ZnQwPjsKICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE0KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0
ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BfX2Jp
bmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cpCiAgICAvLyBjYWxsIHNsb3cgcGF0aDsKICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENB
U1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5z
dHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBs
bGludF9zbG93X3BhdGhfYWRkKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0
KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9
IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRl
PHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0
cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9m
KGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5p
OHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwogICAgLy8gfSBFTkQgbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZS4g
CiAgICAvLyB9IEVORCBtYWNybyBiaW5hcnlPcC4KICAgIC8vIH0gLy8gRU5EIGJpbmFyeU9wKCkK
Ci8vIGJ5dGVjb2RlOiBtdWwgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAovLyBmdW5jdGlv
bjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVnSWRdICogY2ZyW3NyYzJSZWdJZF0KLy8gCi8v
ICAgTXVsdGlwbGllcyByZWdpc3RlciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQg
dG8KLy8gICBudW1iZXJzKSwgYW5kIHB1dHMgdGhlIHByb2R1Y3QgaW4gcmVnaXN0ZXIgZHN0LgoK
T0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX211bCkKICAgIC8vIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoLi4uLCBfbGxpbnRfc2xvd19wYXRoX211bCk7CiAgICAvLyBtYWNybyBiaW5hcnlPcEN1c3Rv
bVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0
aCkgewogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDEyKTsgICAgICAgICAg
ICAgICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsgICAgICAgICAgICAgICAgICAgICAgLy8g
c3JjMUlkPHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CiAgICAvLyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNyYzJJZDx0Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0MT4pOwogICAgaWYgKHIy
LmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0
YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fOF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+
KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0g
Y2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsg
KHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2lu
ZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3Jl
X184X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fOF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+
ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4
NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2Nr
PGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFn
PGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAg
cGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fOF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcoc3JjMUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPik7CiAgICAvLyBtYWNy
bzogbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAg
aWYgKHIwLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8g
LmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9f
OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8
dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAg
dGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEy
PiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9w
Q3VzdG9tU3RvcmVfXzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAgZ290
byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BD
dXN0b21TdG9yZV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpCiAgICBy
Mi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgY29kZUJsb2NrPGExPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMi5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMi5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVm
ZmVyPGExPiA9IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwog
ICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIGJ5dGVJbmRleDxhMD4gPSBpbmRleDxhMD4gPDwgMzsKICAgIHIyLmkgPSByMi5p
ICsgcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25z
dGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsKICAgIHIwLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIyLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBw
YXlsb2FkPGEyPiA9IGNvbnN0YW50PGExPi5QYXlsb2FkOwogICAgcjIuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjIuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSBj
b25zdGFudDxhMT4uVGFnOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9i
aW5hcnlPcEN1c3RvbVN0b3JlX184X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQog
ICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjIu
aTMyICE9IGludDMyX3QoLTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
ICh0YWcxPHQyPiAhPSBJbnQzMlRhZykgZ290byAub3AxTm90SW50OwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQ7CiAgICBpZiAocjQuaTMy
ICE9IGludDMyX3QoLTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0
YWcyPHQzPiAhPSBJbnQzMlRhZykgZ290byAub3AyTm90SW50OwogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQ7CiAgICAvLyBvcDEgYW5kIG9w
MiBhcmUgaW50MzI6IGRvIGZhc3QgaW50MzIgb3BlcmF0aW9uLCBhbmQgZW5kLgogICAgcjIuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBk
c3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CiAgICAvLyBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUodGFnMjx0Mz4sIHBheWxvYWQyPHQxPiwgcGF5bG9hZDE8dDA+LCAuc2xvdywgdDIpOwog
ICAgLy8gbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKICAgIC8v
IFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0
IGhhcyBhIGNvbnN0YW50LgogICAgcjQuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzY3JhdGNoID0gcmlnaHQ7CiAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgo
c2NyYXRjaCAqPSBsZWZ0KSBvdmVyZmxvd3MpIGdvdG8gc2xvdzsKICAgICAgICB1aW50MzJfdCBh
ID0gcjEuaTMyOwogICAgICAgIHVpbnQzMl90IGIgPSByNC5pMzI7CiAgICAgICAgaWYgKChiIHwg
YSkgPj4gMTUpIHsKICAgICAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX3Nsb3c7CiAgICAgICAgfQogICAgICAgIHI0LmkzMiA9IHI0LmkzMiAqIHIxLmkzMjsK
ICAgIH0KICAgIGlmIChyNC5pMzIgIT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKHNjcmF0Y2ggIT0gMCkgZ290byAuZG9uZTsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX2ludGVnZXJPcGVyYXRpb25BbmRTdG9y
ZV9fZG9uZTsKICAgIGlmIChyMS5pMzIgPCBpbnQzMl90KDB4MCkpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgKGxlZnQgPCAwKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgaWYgKHIwLmkzMiA8
IGludDMyX3QoMHgwKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAocmln
aHQgPCAwKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fOF9iaW5hcnlPcEN1
c3RvbVN0b3JlX19zbG93OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9i
aW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX2RvbmUpCiAgICAq
Q0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0g
aW50MzJfdCgtMSk7IC8vIGNmcltpbmRleF0uVGFnID0gSW50MzJUYWc7CiAgICAqQ0FTVDxpbnQz
Ml90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjQuaTMyOyAv
LyBjZnJbaW5kZXhdLlBheWxvYWQgPSBzY3JhdGNoOwogICAgLy8gfSBFTkQgbWFjcm8uCiAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzhfYmluYXJ5T3BD
dXN0b21TdG9yZV9fb3AxTm90SW50KQogICAgLy8gRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5
IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KICAgIGlm
IChyMi51MzIgPiB1aW50MzJfdCgtNykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzhfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdzsKICAgIC8vIG9w
MSBpcyBpbnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyA/Pz86IGNoZWNrIG9wMi4KICAgIGlmIChy
NC51MzIgPCB1aW50MzJfdCgtNykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA8IExvd2VzdFRhZykgZ290byAub3AxTm90SW50T3AyRG91
YmxlOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFO
b3RJbnRPcDJEb3VibGU7CiAgICBpZiAocjQuaTMyICE9IGludDMyX3QoLTEpKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghdGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8g
LnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Ns
b3c7CiAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50MzI6IGNvbnZl
cnQgb3AyIHRvIGRvdWJsZS4KICAgIGQxLmQgPSByMS5pMzI7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AyRGJsPGZ0MT4gPSBEb3VibGUocGF5bG9hZDI8
dDE+KTsKICAgIGdvdG8gX29mZmxpbmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJ
bnRSZWFkeTsgICAgLy8gZ290byAub3AxTm90SW50UmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtXzhfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91
YmxlKQogICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3AyIGlzIGludC1lbmNvZGVk
LWRvdWJsZTogY29udmVydCBvcDIgdG8gZG91YmxlLgogICAgZDEuZCA9IEludHMyRG91YmxlKHIx
LnUzMiwgcjQudTMyKTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDJEYmw8ZnQxPiA9IERv
dWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeSkKICAgIC8v
IG9wMSBpcyBpbnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyBkb3VibGU6CiAgICByMS5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElk
PHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIGQwLmQgPSBJbnRzMkRvdWJsZShyMC51MzIs
IHIyLnUzMik7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJsPGZ0MD4gPSBEb3VibGUo
cGF5bG9hZDE8dDA+LCB0YWcxPHQyPik7CiAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9w
ZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOwogICAgZDAuZCA9IGQwLmQgKiBkMS5k
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IGxlZnQg
KiByaWdodDsKICAgICpDQVNUPGRvdWJsZSo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKSA9IGQwLmQ7IC8vIGNmcltkc3RJZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxm
dDA+OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0
cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9m
KGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5p
OHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludCkKICAgIC8vIEZpcnN0IG9wZXJhbmQgaXMg
ZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4K
ICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwogICAgaWYgKHI0LnUzMiA+
IHVpbnQzMl90KC03KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKHVu
c2lnbmVkKXRhZzI8dDM+ID4gTG93ZXN0VGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgLy8gb3AxIGlzIGludDMy
LCBvcDIgaXMgaW50LWVuY29kZWQtZG91YmxlOgogICAgZDAuZCA9IHIwLmkzMjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDFEYmw8ZnQwPiA9IERvdWJs
ZShwYXlsb2FkMTx0MD4pOyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgZDEuZCA9IEludHMy
RG91YmxlKHIxLnUzMiwgcjQudTMyKTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcDJEYmw8
ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKICAgIC8vIHJlc3VsdERibDxm
dDA+ID0gZG91YmxlT3BlcmF0aW9uKG9wMkRibDxmdDE+LCBvcDFEYmw8ZnQwPik7CiAgICBkMC5k
ID0gZDAuZCAqIGQxLmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHJpZ2h0ID0gbGVmdCAqIHJpZ2h0OwogICAgKkNBU1Q8ZG91YmxlKj4oZnAuaThwICsgKHIyLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gZDAuZDsgLy8gY2ZyW2RzdElkPHQxPl0uRG91Ymxl
ID0gcmVzdWx0RGJsPGZ0MD47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RS
VUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzhfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykKICAgIC8vIGNhbGwgc2xv
dyBwYXRoOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhl
Y1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rp
b24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9tdWwoZXhlYywgcGMpOwogICAgICAgIExM
SW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsK
ICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9
IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CiAgICAvLyB9IEVORCBtYWNybyBiaW5h
cnlPcEN1c3RvbVN0b3JlLiAKCi8vIGJ5dGVjb2RlOiBzdWIgZHN0UmVnSWQgc3JjMVJlZ0lkIHNy
YzJSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVnSWRdIC0gY2Zy
W3NyYzJSZWdJZF07Ci8vIAovLyAgIFN1YnRyYWN0cyByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQg
dG8gbnVtYmVyKSBmcm9tIHJlZ2lzdGVyCi8vICAgc3JjMSAoY29udmVydGVkIHRvIG51bWJlciks
IGFuZCBwdXRzIHRoZSBkaWZmZXJlbmNlIGluCi8vICAgcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9B
U01fT1BDT0RFX0xBQkVMKG9wX3N1YikKICAgIC8vIGJpbmFyeU9wKC4uLiwgX2xsaW50X3Nsb3df
cGF0aF9zdWIpIHsKICAgIC8vIG1hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJs
ZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKICAgIC8vICAgYmluYXJ5T3BDdXN0b21TdG9yZSgpOwog
ICAgLy8gbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUs
IGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyAxMik7ICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJh
bmRzW3NyYzJSZWdJZF07CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVnSWRd
OwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcyPHQzPiwg
cGF5bG9hZDI8dDE+KTsKICAgIGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Jp
bmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX185X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50OwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAz
KSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAg
ICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX185X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzlfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9
IGNmci5Db2RlQmxvY2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQp
OyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxh
Mj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjQuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxh
MT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBh
eWxvYWQ8YTI+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0
b3JlX185X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAvLyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKICAg
IC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2Fk
KSB7CiAgICBpZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9v
ZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX185X2xvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX185X2xvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTE+
ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQ4
NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29kZUJsb2Nr
PGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pMzIgPSByMC5pMzIg
PDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0ZUluZGV4
PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkgKyByMC5pOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50PGExPiA9ICZ2ZWN0b3JC
dWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIu
aThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+ID0gY29uc3Rh
bnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0KTsg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5UYWc7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1
c3RvbVN0b3JlX185X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBF
TkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjIuaTMyICE9IGlu
dDMyX3QoLTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQy
PiAhPSBJbnQzMlRhZykgZ290byAub3AxTm90SW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
YmluYXJ5T3BfXzlfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50OwogICAgaWYgKHI0Lmkz
MiAhPSBpbnQzMl90KC0xKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
dGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8gLm9wMk5vdEludDsKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX2JpbmFyeU9wX185X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludDsKICAgIC8v
IG9wMSBhbmQgb3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBlbmQu
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSh0YWcyPHQzPiwgcGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0MD4sIC5z
bG93LCB0Mik7CiAgICAvLyBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkgewogICAgLy8gICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KTsKICAgIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBpZiAoKHJpZ2h0IC09IGxlZnQpIG92ZXJmbG93cykgZ290byBzbG93OwogICAgICAgIGlu
dDMyX3QgYSA9IHIxLmkzMjsKICAgICAgICBpbnQzMl90IGIgPSByMC5pMzI7CiAgICAgICAgLy8g
c2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOgogICAgICAgIC8vIDAgICAgICAgMCAgICAg
ICB8IG5ldmVyCiAgICAgICAgLy8gMCAgICAgICAxICAgICAgIHwgc2lnbihiLWEpID0gMSAocG9z
IC0gbmVnICE9IHBvcykKICAgICAgICAvLyAxICAgICAgIDAgICAgICAgfCBzaWduKGItYSkgPSAw
IChuZWcgLSBwb3MgIT0gcG9zKQogICAgICAgIC8vIDEgICAgICAgMSAgICAgICB8IG5ldmVyCiAg
ICAgICAgaWYgKChTSUdOX0JJVDMyKGIpICE9IFNJR05fQklUMzIoYSkpICYmIChTSUdOX0JJVDMy
KGItYSkgPT0gU0lHTl9CSVQzMihhKSkpIHsKICAgICAgICAgICAgZ290byBfb2ZmbGluZWFzbV9i
aW5hcnlPcF9fOV9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgICAgIH0KICAgICAgICBy
MC5pMzIgPSByMC5pMzIgLSByMS5pMzI7CiAgICB9CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThw
ICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gcjQuaTMyOyAvLyAgIGNmcltpbmRl
eF0uVGFnID0gaW50MzJUYWc7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpID0gcjAuaTMyOyAvLyAgIGNmcltpbmRleF0uUGF5bG9hZCA9
IHJpZ2h0OwogICAgLy8gfSBFTkQgbWFjcm8uCiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX185X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29w
MU5vdEludCkKICAgIC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0
aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCiAgICBpZiAocjIudTMyID4gdWlu
dDMyX3QoLTcpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWdu
ZWQpdGFnMTx0Mj4gPiBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9iaW5hcnlPcF9fOV9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgLy8gb3AxIGlz
IGludC1lbmNvZGVkLWRvdWJsZSwgb3AyIGlzID8/PzogY2hlY2sgb3AyLgogICAgaWYgKHI0LnUz
MiA8IHVpbnQzMl90KC03KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
KHVuc2lnbmVkKXRhZzI8dDM+IDwgTG93ZXN0VGFnKSBnb3RvIC5vcDFOb3RJbnRPcDJEb3VibGU7
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fOV9iaW5hcnlPcEN1c3RvbVN0b3Jl
X19vcDFOb3RJbnRPcDJEb3VibGU7CiAgICBpZiAocjQuaTMyICE9IGludDMyX3QoLTEpKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghdGFnMjx0Mz4gIT0gSW50MzJUYWcp
IGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fOV9iaW5hcnlP
cEN1c3RvbVN0b3JlX19zbG93OwogICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3Ay
IGlzIGludDMyOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCiAgICBkMS5kID0gcjEuaTMyOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wMkRibDxmdDE+ID0g
RG91YmxlKHBheWxvYWQyPHQxPik7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX185X2Jp
bmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5OyAvLyBnb3RvIC5vcDFOb3RJbnRSZWFk
eTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BfXzlfYmlu
YXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlKQogICAgLy8gb3AxIGlzIGludC1l
bmNvZGVkLWRvdWJsZSwgb3AyIGlzIGludC1lbmNvZGVkLWRvdWJsZTogY29udmVydCBvcDIgdG8g
ZG91YmxlLgogICAgZDEuZCA9IEludHMyRG91YmxlKHIxLnUzMiwgcjQudTMyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8
dDM+KTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BfXzlf
YmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVhZHkpCiAgICAvLyBvcDEgaXMgaW50LWVu
Y29kZWQtZG91YmxlLCBvcDIgaXMgZG91YmxlOgogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MT4gPSBvcGVyYW5k
c1tkc3RSZWdJZF07CiAgICBkMC5kID0gSW50czJEb3VibGUocjAudTMyLCByMi51MzIpOyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG9wMURibDxmdDA+ID0gRG91YmxlKHBheWxvYWQxPHQwPiwg
dGFnMTx0Mj4pOwogICAgLy8gcmVzdWx0RGJsPGZ0MD4gPSBkb3VibGVPcGVyYXRpb24ob3AyRGJs
PGZ0MT4sIG9wMURibDxmdDA+KTsKICAgIGQwLmQgPSBkMC5kIC0gZDEuZDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByaWdodCA9IHJpZ2h0IC0gbGVmdDsKICAg
ICpDQVNUPGRvdWJsZSo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9
IGQwLmQ7IC8vIGNmcltkc3RJZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OwogICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRl
Y29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09E
RSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fOV9i
aW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpCiAgICAvLyBGaXJzdCBvcGVyYW5kIGlzIGRl
ZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCiAg
ICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIGlmIChyNC51MzIgPiB1
aW50MzJfdCgtNykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNp
Z25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX2JpbmFyeU9wX185X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICAvLyBvcDEg
aXMgaW50MzIsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6CiAgICBkMC5kID0gcjAuaTMyOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wMURibDxmdDA+
ID0gRG91YmxlKHBheWxvYWQxPHQwPik7ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBkMS5k
ID0gSW50czJEb3VibGUocjEudTMyLCByNC51MzIpOyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG9wMkRibDxmdDE+ID0gRG91YmxlKHBheWxvYWQyPHQxPiwgdGFnMjx0Mz4pOwogICAgLy8gcmVz
dWx0RGJsPGZ0MD4gPSBkb3VibGVPcGVyYXRpb24ob3AyRGJsPGZ0MT4sIG9wMURibDxmdDA+KTsK
ICAgIGQwLmQgPSBkMC5kIC0gZDEuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICByaWdodCA9IHJpZ2h0IC0gbGVmdDsKICAgICpDQVNUPGRvdWJsZSo+KGZwLmk4
cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IGQwLmQ7IC8vIGNmcltkc3RJZDx0
MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fOV9iaW5hcnlPcEN1c3RvbVN0b3JlX19z
bG93KQogICAgLy8gY2FsbCBzbG93IHBhdGg7CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcx
LCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3N1Yihl
eGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0
aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlv
bjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIC8vIGdvdG8gbmV4
dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKICAg
IC8vIH0gRU5EIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUuIAogICAgLy8gfSBFTkQgbWFjcm8g
YmluYXJ5T3AuCiAgICAvLyB9IC8vIEVORCBiaW5hcnlPcCgpCgovLyBieXRlY29kZTogZGl2IGRz
dFJlZ0lkIGRpdmlkZW5kUmVnSWQgZGl2aXNvclJlZ0lkCi8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gY2ZyW2RpdmlkZW5kUmVnSWRdIC8gY2ZyW2Rpdmlzb3JSZWdJZF07Ci8vIAovLyAgIERp
dmlkZXMgcmVnaXN0ZXIgZGl2aWRlbmQgKGNvbnZlcnRlZCB0byBudW1iZXIpIGJ5IHRoZQovLyAg
IHJlZ2lzdGVyIGRpdmlzb3IgKGNvbnZlcnRlZCB0byBudW1iZXIpLCBhbmQgcHV0cyB0aGUKLy8g
ICBxdW90aWVudCBpbiByZWdpc3RlciBkc3QuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bf
ZGl2KQogICAgLy8gYmluYXJ5T3BDdXN0b21TdG9yZSguLi4sIF9sbGludF9zbG93X3BhdGhfZGl2
KTsKICAgIC8vIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0
b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKSB7CiAgICByMi5pID0gKkNBU1Q8dWludDMy
X3QqPihyUEMuaThwICsgMTIpOyAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBv
cGVyYW5kc1tzcmMyUmVnSWRdOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCAr
IDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJl
Z0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0
Mz4sIHBheWxvYWQyPHQxPik7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkp
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dDsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBf
b2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAv
LyAgIHZlY3RvckJ1ZmZlcjxhMj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZl
Y3RvckJ1ZmZlcjsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltp
bmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZl
cjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3JjMUlkPHQwPiA9PT4gdGFn
MTx0Mj4sIHBheWxvYWQxPHQwPik7CiAgICAvLyBtYWNybzogbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHIwLmkzMiA+PSBpbnQzMl90KDB4
NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTBfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2NvbnN0YW50OwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIw
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+
XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXls
b2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGExPiA9
IGNmci5Db2RlQmxvY2s7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0ODQp
OyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGExPiA9IGNvZGVCbG9jazxh
MT4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjAuaTMyID0gcjAuaTMyIDw8
IGludDMyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxh
MD4gPSBpbmRleDxhMD4gPDwgMzsKICAgIHIyLmkgPSByMi5pICsgcjAuaTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVm
ZmVyPGExPltieXRlSW5kZXg8YTA+XTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNvbnN0YW50
PGExPi5QYXlsb2FkOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNCk7ICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18x
MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gSW50MzJU
YWcpIGdvdG8gLm9wMU5vdEludDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzEwX2JpbmFyeU9w
Q3VzdG9tU3RvcmVfX29wMU5vdEludDsKICAgIGlmIChyNC5pMzIgIT0gaW50MzJfdCgtMSkpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzI8dDM+ICE9IEludDMyVGFn
KSBnb3RvIC5vcDJOb3RJbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xMF9iaW5hcnlPcEN1
c3RvbVN0b3JlX19vcDJOb3RJbnQ7CiAgICAvLyBvcDEgYW5kIG9wMiBhcmUgaW50MzI6IGRvIGZh
c3QgaW50MzIgb3BlcmF0aW9uLCBhbmQgZW5kLgogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5k
c1tkc3RSZWdJZF07CiAgICAvLyBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodGFnMjx0Mz4sIHBh
eWxvYWQyPHQxPiwgcGF5bG9hZDE8dDA+LCAuc2xvdywgdDIpOwogICAgLy8gbWFjcm8gKGludDMy
VGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKICAgIGQwLmQgPSByMS5pMzI7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVmdERibDxmdDA+ID0g
RG91YmxlKGxlZnQpOwogICAgZDEuZCA9IHIwLmkzMjsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByaWdodERibDxmdDE+ID0gRG91YmxlKHJpZ2h0KTsKICAg
IGQxLmQgPSBkMS5kIC8gZDAuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmVzdWx0RGJsPGZ0MT4gPSByaWdodERibDxmdDA+IC8gbGVmdERibDxmdDE+OwogICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZXN1bHQ8cmlnaHQ+ID0gSW50KHJlc3VsdERibDxmdDE+KSBpZiAoKGRvdWJsZSkoaW50
KXJlc3VsdERibCA9IHJlc3VsdERibCkgZWxzZSBnb3RvIC5ub3RJbnQ7CiAgICAgICAgZG91Ymxl
IGQgPSBkMS5kOwogICAgICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IGludDMyX3QoZCk7CiAg
ICAgICAgaWYgKGFzSW50MzIgIT0gZCB8fCAoIWFzSW50MzIgJiYgc2lnbmJpdChkKSkpIC8vIHRy
dWUgZm9yIC0wLjAKICAgICAgICAgICAgZ290byAgX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21T
dG9yZV9faW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19ub3RJbnQ7CiAgICAgICAgcjAuaSA9IGFz
SW50MzI7CiAgICB9CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4NCkpID0gcjQuaTMyOyAvLyBjZnJbaW5kZXhdLlRhZyA9IGludDMyVGFnOwog
ICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KSA9IHIwLmkzMjsgLy8gY2ZyW2luZGV4XS5QYXlsb2FkID0gcmlnaHQ7CiAgICBnb3RvIF9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEwX2ludGVnZXJPcGVyYXRpb25BbmRTdG9yZV9f
ZG9uZTsgLy8gZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fYmluYXJ5T3BDdXN0b21TdG9yZV9faW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19ub3RJbnQp
CiAgICAqQ0FTVDxkb3VibGUqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSkgPSBkMS5kOyAvLyBjZnJbaW5kZXhdLkRvdWJsZSA9IHJlc3VsdERibDxmdDE+OwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMF9p
bnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX2RvbmUpCiAgICAvLyBFTkQgbWFjcm8uCiAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzEwX2JpbmFyeU9wQ3Vz
dG9tU3RvcmVfX29wMU5vdEludCkKICAgIC8vIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBu
b3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCiAgICBpZiAo
cjIudTMyID4gdWludDMyX3QoLTcpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmICgodW5zaWduZWQpdGFnMTx0Mj4gPiBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV8xMF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgLy8gb3Ax
IGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3AyIGlzID8/PzogY2hlY2sgb3AyLgogICAgaWYgKHI0
LnUzMiA8IHVpbnQzMl90KC03KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAoKHVuc2lnbmVkKXRhZzI8dDM+IDwgTG93ZXN0VGFnKSBnb3RvIC5vcDFOb3RJbnRPcDJEb3Vi
bGU7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xMF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFO
b3RJbnRPcDJEb3VibGU7CiAgICBpZiAocjQuaTMyICE9IGludDMyX3QoLTEpKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghdGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8g
LnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xMF9iaW5hcnlPcEN1c3RvbVN0b3JlX19z
bG93OwogICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3AyIGlzIGludDMyOiBjb252
ZXJ0IG9wMiB0byBkb3VibGUuCiAgICBkMS5kID0gcjEuaTMyOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wMkRibDxmdDE+ID0gRG91YmxlKHBheWxvYWQy
PHQxPik7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzEwX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5v
dEludFJlYWR5OyAgIC8vIGdvdG8gLm9wMU5vdEludFJlYWR5OwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV8xMF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRPcDJE
b3VibGUpCiAgICAvLyBvcDEgaXMgaW50LWVuY29kZWQtZG91YmxlLCBvcDIgaXMgaW50LWVuY29k
ZWQtZG91YmxlOiBjb252ZXJ0IG9wMiB0byBkb3VibGUuCiAgICBkMS5kID0gSW50czJEb3VibGUo
cjEudTMyLCByNC51MzIpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wMkRibDxmdDE+ID0g
RG91YmxlKHBheWxvYWQyPHQxPiwgdGFnMjx0Mz4pOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV8xMF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeSkKICAg
IC8vIG9wMSBpcyBpbnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyBkb3VibGU6CiAgICByMS5pID0g
KkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRz
dElkPHQxPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIGQwLmQgPSBJbnRzMkRvdWJsZShyMC51
MzIsIHIyLnUzMik7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJsPGZ0MD4gPSBEb3Vi
bGUocGF5bG9hZDE8dDA+LCB0YWcxPHQyPik7CiAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJs
ZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3AxRGJsPGZ0MD4pOwogICAgZDAuZCA9IGQwLmQgLyBk
MS5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IHJp
Z2h0IC8gbGVmdDsKICAgICpDQVNUPGRvdWJsZSo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKSA9IGQwLmQ7IC8vIGNmcltkc3RJZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERi
bDxmdDA+OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQ
Qy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAg
IERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV8xMF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpCiAgICAvLyBGaXJzdCBvcGVyYW5k
IGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBu
b3QuCiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIGlmIChyNC51
MzIgPiB1aW50MzJfdCgtNykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KCh1bnNpZ25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtXzEwX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICAvLyBvcDEgaXMg
aW50MzIsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6CiAgICBkMC5kID0gcjAuaTMyOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wMURibDxmdDA+ID0g
RG91YmxlKHBheWxvYWQxPHQwPik7ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBkMS5kID0g
SW50czJEb3VibGUocjEudTMyLCByNC51MzIpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9w
MkRibDxmdDE+ID0gRG91YmxlKHBheWxvYWQyPHQxPiwgdGFnMjx0Mz4pOwogICAgLy8gcmVzdWx0
RGJsPGZ0MD4gPSBkb3VibGVPcGVyYXRpb24ob3AyRGJsPGZ0MT4sIG9wMURibDxmdDA+KTsKICAg
IGQwLmQgPSBkMC5kIC8gZDEuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmlnaHQgPSByaWdodCAvIGxlZnQ7CiAgICAqQ0FTVDxkb3VibGUqPihmcC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSBkMC5kOyAvLyBjZnJbZHN0SWQ8dDE+XS5E
b3VibGUgPSByZXN1bHREYmw8ZnQwPjsKICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQ
Qy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8
TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRf
SU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fMTBfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykKICAgIC8vIGNh
bGwgc2xvdyBwYXRoOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9kaXYoZXhlYywgcGMpOwogICAg
ICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0
YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5p
ID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CiAgICAvLyB9IEVORCBtYWNy
byBiaW5hcnlPcEN1c3RvbVN0b3JlLiAKCi8vIGJ5dGVjb2RlOiBsc2hpZnQgZHN0UmVnSWQgdmFs
UmVnSWQgc2hpZnRSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IEludDMyKGNmclt2
YWxSZWdJZF0pIDw8IGNmcltzaGlmdFJlZ0lkXSk7Ci8vIAovLyAgIFBlcmZvcm1zIGxlZnQgc2hp
ZnQgb2YgcmVnaXN0ZXIgdmFsIChjb252ZXJ0ZWQgdG8gaW50MzIpIGJ5Ci8vICAgcmVnaXN0ZXIg
c2hpZnQgKGNvbnZlcnRlZCB0byB1aW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0Ci8vICAgaW4g
cmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2xzaGlmdCkKICAgIC8v
IGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9sc2hpZnQsIDQpIHsKICAgIC8vIG1hY3JvIGJp
dE9wKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpIHsKICAgIHIyLmkgPSAqQ0FTVDx1aW50
MzJfdCo+KHJQQy5pOHAgKyAxMik7ICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9
IG9wZXJhbmRzW3NyYzJSZWdJZF07CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThw
ICsgOCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVyYW5kc1tzcmMx
UmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+ID09PiB0YWcy
PHQzPiwgcGF5bG9hZDI8dDE+KTsKICAgIGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAw
KSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX2JpdE9wX18xMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHI0Lmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQp
KTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBh
eWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9i
aXRPcF9fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAvLyAgIGdvdG8gLmRvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18xMV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2Zy
LkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4NCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2NrPGEyPi5j
b25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9
IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9h
ZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzExX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmUpCiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMxSWQ8dDA+ID09
PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQogICAgLy8gbWFjcm86IGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAgIGlmIChyMC5pMzIgPj0gaW50MzJf
dCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29u
c3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAg
IHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9u
ZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9iaXRPcF9fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KQogICAgcjIu
aSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjIuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjIuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZl
cjxhMT4gPSBjb2RlQmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAg
IHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBieXRlSW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByMi5pID0gcjIuaSAr
IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc3Rh
bnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMi5pOHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5
bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIyLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY29u
c3RhbnQ8YTE+LlRhZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0
T3BfXzExX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFj
cm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjQuaTMyICE9IGludDMyX3Qo
LTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJ
bnQzMlRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX19zbG93
OwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9iaXRPcF9fc2xvdzsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOwogICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlvbihwYXlsb2FkMjx0MT4s
IHBheWxvYWQxPHQwPiwgLnNsb3cpOwogICAgcjAuaTMyID0gcjAuaTMyIDw8IHIxLmkzMjsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IChyaWdodCA8PCBsZWZ0KTsK
ICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0
KSkgPSByNC5pMzI7IC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IHRhZzI8dDM+OwogICAgKkNBU1Q8
aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkz
MjsgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHJlc3VsdDx0MD47CiAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsK
ICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX19zbG93KQogICAgLy8g
Y2FsbCBzbG93UGF0aDsKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAg
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIElu
c3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfbHNoaWZ0KGV4ZWMsIHBjKTsK
ICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4
ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAg
ZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwogICAgLy8gRU5EIG1h
Y3JvIG1hY3JvIGJpdE9wLgogICAgLy8gfSAvLyBFTkQgYml0T3AoKQoKLy8gYnl0ZWNvZGU6IHJz
aGlmdCBkc3RSZWdJZCB2YWxSZWdJZCBzaGlmdFJlZ0lkCi8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gY2ZyW3ZhbFJlZ0lkXSA+PiBjZnJbc2hpZnRSZWdJZF07Ci8vIAovLyAgIFBlcmZvcm1z
IGFyaXRobWV0aWMgcmlnaHQgc2hpZnQgb2YgcmVnaXN0ZXIgdmFsIChjb252ZXJ0ZWQKLy8gICB0
byBpbnQzMikgYnkgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0bwovLyAgIHVpbnQzMiksIGFu
ZCBwdXRzIHRoZSByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX3JzaGlmdCkKICAgIC8vIGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9yc2hpZnQs
IDQpIHsKICAgIC8vIG1hY3JvIGJpdE9wKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpIHsK
ICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7ICAgICAgICAgICAgICAg
ICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CiAgICByMC5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJ
ZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzcmMySWQ8dDI+ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKICAgIGlmIChyMi5pMzIg
Pj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAo
aW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudDsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFn
OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwog
ICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZTsgICAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2JpdE9wX18xMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIxLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8
YTI+ID0gY29kZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICBy
NC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg0KSk7IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAg
ICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0u
UGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzEy
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyhzcmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQogICAgLy8gbWFj
cm86IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAg
IGlmIChyMC5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3Rv
IC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xMl9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihm
cC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNm
cltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRl
eDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xMl9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2NvbnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOwog
ICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNDg0KTsgICAgICAgICAgICAgICAg
ICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2RlQmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0
ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Myk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBieXRlSW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8
IDM7CiAgICByMi5pID0gcjIuaSArIHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4
PGEwPl07CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHApOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKICAg
IHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRhZzsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19k
b25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBp
ZiAocjQuaTMyICE9IGludDMyX3QoLTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlmICh0YWcyPHQzPiAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtXzEyX2JpdE9wX19zbG93OwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gSW50MzJU
YWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xMl9iaXRPcF9fc2xvdzsK
ICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAg
ICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwogICAgLy8gcmVzdWx0PHQw
PiA9IG9wZXJhdGlvbihwYXlsb2FkMjx0MT4sIHBheWxvYWQxPHQwPiwgLnNsb3cpOwogICAgcjAu
aTMyID0gcjAuaTMyID4+IHIxLmkzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyByaWdodCA9IChyaWdodCA+PiBsZWZ0KTsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSByNC5pMzI7IC8vIGNmcltkc3RJZDx0Mj5d
LlRhZyA9IHRhZzI8dDM+OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9
IHJlc3VsdDx0MD47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtXzEyX2JpdE9wX19zbG93KQogICAgLy8gY2FsbCBzbG93UGF0aDsKICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fs
bCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8
RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1
Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGlu
dF9zbG93X3BhdGhfcnNoaWZ0KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0
KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9
IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRl
PHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0
cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9m
KGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5p
OHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwogICAgLy8gRU5EIG1hY3JvIG1hY3JvIGJpdE9wLgogICAgLy8gfSAv
LyBFTkQgYml0T3AoKQoKLy8gYnl0ZWNvZGU6IHJzaGlmdCBkc3RSZWdJZCB2YWxSZWdJZCBzaGlm
dFJlZ0lkCi8vIGZ1bmN0aW9uOgovLyAKLy8gICBQZXJmb3JtcyBsb2dpY2FsIHJpZ2h0IHNoaWZ0
IG9mIHJlZ2lzdGVyIHZhbCAoY29udmVydGVkCi8vICAgdG8gdWludDMyKSBieSByZWdpc3RlciBz
aGlmdCAoY29udmVydGVkIHRvCi8vICAgdWludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiBy
ZWdpc3RlciBkc3QuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfdXJzaGlmdCkKICAgIC8v
IGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF91cnNoaWZ0LCA0KSB7CiAgICAvLyBtYWNybyBi
aXRPcChvcGVyYXRpb24sIHNsb3dQYXRoLCBhZHZhbmNlKSB7CiAgICByMi5pID0gKkNBU1Q8dWlu
dDMyX3QqPihyUEMuaThwICsgMTIpOyAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4g
PSBvcGVyYW5kc1tzcmMyUmVnSWRdOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4
cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3Jj
MVJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFn
Mjx0Mz4sIHBheWxvYWQyPHQxPik7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAw
MCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9iaXRPcF9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByNC5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0
KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBw
YXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21f
Yml0T3BfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgLy8gICBnb3RvIC5kb25l
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMTNfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihm
cC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNm
ci5Db2RlQmxvY2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQpOyAg
ICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4u
Y29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90
Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4g
PSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxv
YWQ8YTI+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18xM19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3JjMUlkPHQwPiA9
PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPikKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjAuaTMyID49IGludDMy
X3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEw
PiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9iaXRPcF9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Nv
bnN0YW50OwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAz
KSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAg
ICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOwogICAg
Z290byBfb2ZmbGluZWFzbV9iaXRPcF9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fYml0T3BfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIy
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBjb2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIyLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZm
ZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAg
ICByMC5pMzIgPSByMC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkg
KyByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0
YW50PGExPiA9ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBh
eWxvYWQ8YTI+ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMi5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNv
bnN0YW50PGExPi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Jp
dE9wX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0gRU5EIG1h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgaWYgKHI0LmkzMiAhPSBpbnQzMl90
KC0xKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMjx0Mz4gIT0g
SW50MzJUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xM19iaXRPcF9f
c2xvdzsKICAgIGlmIChyMi5pMzIgIT0gaW50MzJfdCgtMSkpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OwogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fMTNfYml0T3BfX3Nsb3c7CiAgICByMi5pID0gKkNBU1Q8dWlu
dDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIHJlc3VsdDx0MD4gPSBvcGVyYXRpb24ocGF5bG9h
ZDI8dDE+LCBwYXlsb2FkMTx0MD4sIC5zbG93KTsKICAgIHIwLnUzMiA9IHIwLnUzMiA+PiByMS51
MzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgPSAoKHVuc2lnbmVk
KXJpZ2h0ID4+IGxlZnQpOwogICAgaWYgKHIwLmkzMiA8IGludDMyX3QoMHgwKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAocmlnaHQgPCAwKSBnb3RvIHNsb3c7CiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV8xM19iaXRPcF9fc2xvdzsKICAgICpDQVNUPGludDMyX3QqPihm
cC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSByNC5pMzI7IC8vIGNmcltk
c3RJZDx0Mj5dLlRhZyA9IHRhZzI8dDM+OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChy
Mi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0u
UGF5bG9hZCA9IHJlc3VsdDx0MD47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzEzX2JpdE9wX19zbG93KQogICAgLy8gY2FsbCBzbG93UGF0aDsKICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENB
U1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQgPSBsbGludF9zbG93X3BhdGhfdXJzaGlmdChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRl
Y29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQog
ICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0
LmV4ZWNTdGF0ZTx0MT4KICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKICAgIC8vIEVORCBtYWNybyBtYWNybyBiaXRPcC4K
ICAgIC8vIH0gLy8gRU5EIGJpdE9wKCkKCi8vIGJ5dGVjb2RlOiBiaXRhbmQgZHN0UmVnSWQgc3Jj
MVJlZ0lkIHNyYzJSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVn
SWRdICYgY2ZyW3NyYzJSZWdJZF07Ci8vIAovLyAgIENvbXB1dGVzIGJpdHdpc2UgQU5EIG9mIHJl
Z2lzdGVyIHNyYzEgKGNvbnZlcnRlZCB0byBpbnQzMikKLy8gICBhbmQgcmVnaXN0ZXIgc3JjMiAo
Y29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdAovLyAgIGluIHJlZ2lzdGVy
IGRzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9iaXRhbmQpCiAgICAvLyBiaXRPcCgu
Li4sIF9sbGludF9zbG93X3BhdGhfYml0YW5kLCA1KSB7CiAgICAvLyBtYWNybyBiaXRPcChvcGVy
YXRpb24sIHNsb3dQYXRoLCBhZHZhbmNlKSB7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihy
UEMuaThwICsgMTIpOyAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5k
c1tzcmMyUmVnSWRdOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAg
ICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsK
ICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBh
eWxvYWQyPHQxPik7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaXRP
cF9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByNC5pID0gKkNBU1Q8
dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAg
dGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEy
PiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzE0
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgLy8gICBnb3RvIC5kb25lOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMTRfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4
KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxv
Y2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQpOyAgICAgICAgICAg
ICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRS
ZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JC
dWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEu
aThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0g
dmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18xNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
KQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3JjMUlkPHQwPiA9PT4gdGFnMTx0
Mj4sIHBheWxvYWQxPHQwPikKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
ZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAw
MDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9iaXRPcF9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50Owog
ICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0
cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0g
KkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOwogICAgZ290byBfb2Zm
bGluZWFzbV9iaXRPcF9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAg
Z290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3Bf
XzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2Rl
QmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIy
Lmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0g
Y29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pMzIg
PSByMC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAg
Ynl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkgKyByMC5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50PGExPiA9
ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+
ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5p
OHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGEx
Pi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18xNF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgaWYgKHI0LmkzMiAhPSBpbnQzMl90KC0xKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMjx0Mz4gIT0gSW50MzJUYWcp
IGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xNF9iaXRPcF9fc2xvdzsKICAg
IGlmIChyMi5pMzIgIT0gaW50MzJfdCgtMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fMTRfYml0T3BfX3Nsb3c7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihy
UEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRz
W2RzdFJlZ0lkXTsKICAgIC8vIHJlc3VsdDx0MD4gPSBvcGVyYXRpb24ocGF5bG9hZDI8dDE+LCBw
YXlsb2FkMTx0MD4sIC5zbG93KTsKICAgIHIwLmkzMiA9IHIwLmkzMiAmIHIxLmkzMjsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgJiBsZWZ0KTsKICAg
ICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkg
PSByNC5pMzI7IC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IHRhZzI8dDM+OwogICAgKkNBU1Q8aW50
MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsg
Ly8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IHJlc3VsdDx0MD47CiAgICAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAg
IG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzE0X2JpdE9wX19zbG93KQogICAgLy8g
Y2FsbCBzbG93UGF0aDsKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAg
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIElu
c3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfYml0YW5kKGV4ZWMsIHBjKTsK
ICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4
ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAg
ZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwogICAgLy8gRU5EIG1h
Y3JvIG1hY3JvIGJpdE9wLgogICAgLy8gfSAvLyBFTkQgYml0T3AoKQoKLy8gYnl0ZWNvZGU6IGJp
dHhvciBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJlZ0lkCi8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gY2ZyW3NyYzFSZWdJZF0gXiBjZnJbc3JjMlJlZ0lkXTsKLy8gCi8vICAgQ29tcHV0ZXMg
Yml0d2lzZSBYT1Igb2YgcmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQovLyAgIGFu
ZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0
Ci8vICAgaW4gcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2JpdHhv
cikKICAgIC8vIGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsIDUpIHsKICAgIC8v
IG1hY3JvIGJpdE9wKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpIHsKICAgIHIyLmkgPSAq
Q0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7ICAgICAgICAgICAgICAgICAgICAgLy8gc3Jj
MklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgOCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0MD4gPSBvcGVy
YW5kc1tzcmMxUmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDI+
ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKICAgIGlmIChyMi5pMzIgPj0gaW50MzJfdCgw
eDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX2JpdE9wX18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsK
ICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2Zm
bGluZWFzbV9iaXRPcF9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAvLyAgIGdv
dG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18x
NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8
YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCAr
IDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJs
b2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAg
dGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
ICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzE1X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUpCiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzcmMx
SWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KQogICAgLy8gbWFjcm86IGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAgIGlmIChyMC5pMzIg
Pj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAo
aW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fY29uc3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5d
LlRhZzsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxv
YWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9iaXRPcF9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjIuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjIuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZl
Y3RvckJ1ZmZlcjxhMT4gPSBjb2RlQmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1
ZmZlcjsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICBieXRlSW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByMi5p
ID0gcjIuaSArIHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIyLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIyLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8
YTE+ID0gY29uc3RhbnQ8YTE+LlRhZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fYml0T3BfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8g
fSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjQuaTMyICE9
IGludDMyX3QoLTEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcy
PHQzPiAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzE1
X2JpdE9wX19zbG93OwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gSW50MzJUYWcpIGdvdG8gLnNs
b3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xNV9iaXRPcF9fc2xvdzsKICAgIHIyLmkgPSAq
Q0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0
SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwogICAgLy8gcmVzdWx0PHQwPiA9IG9wZXJhdGlv
bihwYXlsb2FkMjx0MT4sIHBheWxvYWQxPHQwPiwgLnNsb3cpOwogICAgcjAuaTMyID0gcjAuaTMy
IF4gcjEuaTMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IChy
aWdodCBeIGxlZnQpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDQpKSA9IHI0LmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gdGFnMjx0
Mz47CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpID0gcjAuaTMyOyAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsK
ICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDE0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMTVfYml0
T3BfX3Nsb3cpCiAgICAvLyBjYWxsIHNsb3dQYXRoOwogICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24o
YXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihm
cC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52
cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9i
aXR4b3IoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5p
bnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5z
dHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CiAgICAvLyBFTkQgbWFjcm8gbWFjcm8gYml0T3AuCiAgICAvLyB9IC8vIEVORCBiaXRPcCgp
CgovLyBieXRlY29kZTogYml0b3IgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJRAovLyBmdW5j
dGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltzcmMxUmVnSWRdIHwgY2ZyW3NyYzJSZWdJZF07Ci8v
IAovLyAgIENvbXB1dGVzIGJpdHdpc2UgT1Igb2YgcmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRv
IGludDMyKQovLyAgIGFuZCByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gaW50MzIpLCBhbmQg
cHV0cyB0aGUKLy8gICByZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RF
X0xBQkVMKG9wX2JpdG9yKQogICAgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdG9y
LCA1KSB7CiAgICAvLyBtYWNybyBiaXRPcChvcGVyYXRpb24sIHNsb3dQYXRoLCBhZHZhbmNlKSB7
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIpOyAgICAgICAgICAgICAg
ICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMyUmVnSWRdOwogICAgcjAuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMx
SWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc3JjMklkPHQyPiA9PT4gdGFnMjx0Mz4sIHBheWxvYWQyPHQxPik7CiAgICBpZiAocjIuaTMy
ID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYg
KGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRh
ZzsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsK
ICAgIGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmU7ICAgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMS5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVy
PGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAg
cjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90
KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5d
LlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18x
Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcoc3JjMUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPikKICAgIC8vIG1h
Y3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAg
ICBpZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290
byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
ZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBj
ZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAo
cjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5k
ZXg8YTA+XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsK
ICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAg
ICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lz
dGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pMzIgPSByMC5pMzIgPDwgaW50MzJfdCgweDMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8
PCAzOwogICAgcjIuaSA9IHIyLmkgKyByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIGNvbnN0YW50PGExPiA9ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRl
eDxhMD5dOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAg
ICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAg
aWYgKHI0LmkzMiAhPSBpbnQzMl90KC0xKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAodGFnMjx0Mz4gIT0gSW50MzJUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV8xNl9iaXRPcF9fc2xvdzsKICAgIGlmIChyMi5pMzIgIT0gaW50MzJfdCgtMSkp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IEludDMy
VGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMTZfYml0T3BfX3Nsb3c7
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIHJlc3VsdDx0
MD4gPSBvcGVyYXRpb24ocGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0MD4sIC5zbG93KTsKICAgIHIw
LmkzMiA9IHIwLmkzMiB8IHIxLmkzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcmlnaHQgPSAocmlnaHQgfCBsZWZ0KTsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSByNC5pMzI7IC8vIGNmcltkc3RJZDx0Mj5d
LlRhZyA9IHRhZzI8dDM+OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9
IHJlc3VsdDx0MD47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtXzE2X2JpdE9wX19zbG93KQogICAgLy8gY2FsbCBzbG93UGF0aDsKICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fs
bCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8
RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1
Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGlu
dF9zbG93X3BhdGhfYml0b3IoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQo
cmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0g
cjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8
dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRy
X3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2Yo
Y3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CiAgICAvLyBFTkQgbWFjcm8gbWFjcm8gYml0T3AuCiAgICAvLyB9IC8v
IEVORCBiaXRPcCgpCgovLyBieXRlY29kZTogY2hlY2tfaGFzX2luc3RhbmNlIGNvbnN0cnVjdG9y
UmVnSWQKLy8gZnVuY3Rpb246IGFzc2VydCh0eXBlb2YgY2ZyW2NvbnN0cnVjdG9yUmVnSWRdLkhh
c0luc3RhbmNlID09ICJmdW5jdGlvbiIpOwovLyAKLy8gICBDaGVjayAnY29uc3RydWN0b3InIGlz
IGFuIG9iamVjdCB3aXRoIHRoZSBpbnRlcm5hbCBwcm9wZXJ0eQovLyAgIFtIYXNJbnN0YW5jZV0g
KGkuZS4gaXMgYSBmdW5jdGlvbiAuLi4gKnNoYWtlcyBoZWFkIHNhZGx5IGF0Ci8vICAgSlNDIEFQ
SSopLiBSYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHJlZ2lzdGVyIGNvbnN0cnVjdG9yIGlzIG5vdAov
LyAgIGEgdmFsaWQgcGFyYW1ldGVyIGZvciBpbnN0YW5jZW9mLgoKT0ZGTElORV9BU01fT1BDT0RF
X0xBQkVMKG9wX2NoZWNrX2hhc19pbnN0YW5jZSkKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JJZDx0MT4g
PSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKGNvbnN0cnVjdG9ySWQ8dDE+LCBDZWxsVGFnLCBvYmo8dDA+LCAub3BDaGVja0hh
c0luc3RhbmNlU2xvdyk7CiAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpIHsKICAgIC8vIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKC4uLik7CiAgICAvLyBtYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpIHsK
ICAgIGlmIChyMS5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBpZiAoaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8g
LmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFu
dDsKICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMy
X3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgt
NSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNsb3c7CiAgICByMC5pID0gKkNB
U1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
ICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJs
b2NrPHBheWxvYWQ+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIwLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8cGF5
bG9hZD4gPSBjb2RlQmxvY2s8cGF5bG9hZD4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yZUJ1ZmZl
cjsKICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5UYWcpOwog
ICAgaWYgKCpDQVNUPGludDMyX3QqPihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg0KSkgIT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykg
Z290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNs
b3c7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRl
eF0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b20uCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZC4KICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQpOyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IG9iajx0MD4uc3RydWN0dXJlOwogICAg
aWYgKCgqQ0FTVDxpbnQ4X3QqPihyMC5pOHAgKyA5KSAmIGludDhfdCgweDIpKSA9PSAwKSAgICAg
ICAvLyBpZiAhKHN0cnVjdHVyZTx0MD4udHlwZUluZm8uZmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcENoZWNrSGFzSW5z
dGFuY2VTbG93OwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4OCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9vcENoZWNrSGFzSW5zdGFuY2VTbG93KQogICAgLy8gY2FsbCBzbG93X3BhdGhfY2hlY2tf
aGFzX2luc3RhbmNlOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2Uo
ZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVj
dGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rp
b248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg4KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsK
ICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7Cgov
LyBieXRlY29kZTogaW5zdGFuY2VvZiBkc3RSZWdJZCB2YWx1ZVJlZ0lkIGNvbnN0cnVjdG9yUmVn
SWQgY29uc3RydWN0b3JQcm90b1JlZ0lkCi8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2Zy
W3ZhbHVlUmVnSWRdIGluc3RhbmNlb2YgY2ZyW2NvbnN0cnVjdG9yUmVnaWRdOwovLyAKLy8gICBU
ZXN0cyB3aGV0aGVyIHJlZ2lzdGVyIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHJlZ2lzdGVyCi8v
ICAgY29uc3RydWN0b3IsIGFuZCBwdXRzIHRoZSBib29sZWFuIHJlc3VsdCBpbiByZWdpc3Rlcgov
LyAgIGRzdC4gUmVnaXN0ZXIgY29uc3RydWN0b3JQcm90byBtdXN0IGNvbnRhaW4gdGhlICJwcm90
b3R5cGUiCi8vICAgcHJvcGVydHkgKG5vdCB0aGUgYWN0dWFsIHByb3RvdHlwZSkgb2YgdGhlIG9i
amVjdCBpbgovLyAgIHJlZ2lzdGVyIGNvbnN0cnVjdG9yLiBUaGlzIGxvb2t1cCBpcyBzZXBhcmF0
ZWQgc28gdGhhdAovLyAgIHBvbHltb3JwaGljIGlubGluZSBjYWNoaW5nIGNhbiBhcHBseS4KLy8g
Ci8vICAgUmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiByZWdpc3RlciBjb25zdHJ1Y3RvciBpcyBub3Qg
YW4KLy8gICBvYmplY3QuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfaW5zdGFuY2VvZikK
ICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3Rh
bmNlIGJlaGF2aW9yLgogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDEyKTsg
ICAgICAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3RvcklkPHQxPiA9IG9wZXJhbmRzW2NvbnN0
cnVjdG9yUmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNr
ZWQoY29uc3RydWN0b3JJZDx0MT4sIG9iajx0MD4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7CiAg
ICBpZiAocjEuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5j
b25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVW5jaGVja2VkX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fY29uc3RhbnQ7CiAgICAvLyAgIHRhZ0NoZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFz
bV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZF9fMTZfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRVbmNoZWNrZWRfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2Nr
OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsgICAgICAgICAgICAg
ICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2FkPi5j
b25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2ZWN0b3JC
dWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IHZl
Y3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWRf
XzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAgLy8g
fSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAg
IC8vIHN0cnVjdHVyZTx0MD4gPSBvYmo8dDA+LnN0cnVjdHVyZTsKICAgIGlmICgoKkNBU1Q8aW50
OF90Kj4ocjAuaThwICsgOSkgJiBpbnQ4X3QoMHg4KSkgPT0gMCkgICAgICAgLy8gaWYgIShzdHJ1
Y3R1cmU8dDA+LnR5cGVJbmZvLmZsYWdzICYgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkg
Z290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wSW5zdGFuY2VvZlNsb3c7CiAg
ICAvLyBBY3R1YWxseSBkbyB0aGUgd29yay4KICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQ
Qy5pOHAgKyAxNik7ICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0b3JQcm90b0lkPHQw
PiA9IG9wZXJhbmRzW2NvbnN0cnVjdG9yUHJvdG9SZWdJZF07CiAgICByNC5pID0gKkNBU1Q8dWlu
dDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQzPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KGNvbnN0cnVjdG9yUHJvdG9JZDx0MD4sIENlbGxUYWcsIHByb3RvT2JqPHQxPiwgLnNsb3cpOwog
ICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVk
VGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbSguLi4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7CiAgICBpZiAocjAuaTMyID49
IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGlu
ZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18xN19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ7CiAgICAvLyAgIHRh
Z0NoZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsg
KHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTUpKSAvLyAgIGlmIChh
Y3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9vcEluc3RhbmNlb2ZTbG93OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThw
ICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQgPSBjZnJbaW5k
ZXhdLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZTsg
Ly8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAu
aThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxwYXlsb2FkPiA9
IGNmci5Db2RlQmxvY2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQp
OyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPHBheWxvYWQ+ID0gY29kZUJs
b2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvcmVCdWZmZXI7CiAgICAvLyAgIHRh
Z0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxp
bnQzMl90Kj4ocjEuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMy
X3QoLTUpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZTbG93OwogICAgcjEuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjEuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAg
IHBheWxvYWQgPSB2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlBheWxvYWQ7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkKICAg
IC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tLgog
ICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQuCiAgICByMi5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8v
IHN0cnVjdHVyZTx0Mj4gPSBwcm90b09iajx0MT4uc3RydWN0dXJlOwogICAgaWYgKCpDQVNUPHVp
bnQ4X3QqPihyMi5pOHAgKyA4KSA8IHVpbnQ4X3QoMHhkKSkgICAgICAgICAgICAvLyBpZiAoKHVu
c2lnbmVkKXN0cnVjdHVyZTx0Mj4udHlwZUluZm8udHlwZSA8IE9iamVjdFR5cGUpIGdvdG8gLnNs
b3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZTbG93OwogICAgcjAuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyB2
YWx1ZUlkPHQwPiA9IG9wZXJhbmRzW3ZhbHVlUmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodmFsdWVJZDx0MD4sIENlbGxUYWcsIG9iajx0Mj4sIC5zbG93KTsKICAg
IC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRh
ZywgcGF5bG9hZCwgc2xvdykgewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b20oLi4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHIwLmkzMiA+PSBp
bnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRl
eCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMThfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OwogICAgLy8gICB0YWdD
aGVjayhjZnJbaW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC01KSkgLy8gICBpZiAoYWN0
dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fb3BJbnN0YW5jZW9mU2xvdzsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAr
IChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4
XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8v
ICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBj
ZnIuQ29kZUJsb2NrOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNDg0KTsg
ICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9j
azxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdD
aGVjayh2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50
MzJfdCo+KHIyLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90
KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdzsKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIyLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBw
YXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpCiAgICAv
LyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbS4KICAg
IC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkLgogICAgLy8gUmVn
aXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICByMC5pID0gaW50cHRy
X3QoMHgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3RvV2Fz
Rm91bmQ8dDA+ID0gdHJ1ZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
b3BJbnN0YW5jZW9mTG9vcCkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQp
OyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBzdHJ1Y3R1cmU8dDI+ID0gb2JqPHQyPi5zdHJ1
Y3R1cmU7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyMi5pOHAgKyAxNik7ICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgb2JqPHQyPiA9IHN0cnVjdHVyZTx0Mj4ucHJvdG90eXBlLlBheWxv
YWQ7CiAgICBpZiAocjIuaSA9PSByMS5pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgaWYgKG9iajx0Mj4gPT0gcHJvdG9PYmopIGdvdG8gLmRvbmU7CiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZEb25lOwogICAgaWYgKHIyLmkzMiAhPSAw
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob2JqPHQy
PiAhPSBudWxsKSBnb3RvIC5sb29wOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BJbnN0YW5j
ZW9mTG9vcDsKICAgIHIwLmkgPSBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSBmYWxzZTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mRG9uZSkKICAgICpDQVNUPGlu
dDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBpbnQzMl90
KC0yKTsgLy8gY2ZyW2RzdElkPHQzPl0uVGFnID0gQm9vbGVhblRhZzsKICAgICpDQVNUPGludDMy
X3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pMzI7IC8v
IGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwcm90b1dhc0ZvdW5kOwogICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZTbG93KQogICAg
Ly8gY2FsbCBzbG93X3BhdGhfaW5zdGFuY2VvZjsKICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFy
ZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAu
dnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnAp
OwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfaW5z
dGFuY2VvZihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
Lmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5p
bnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE0KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0
ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCi8vIGJ5dGVjb2RlOiBpc191bmRlZmluZWQgZHN0UmVnSWQgc3JjUmVnSWQKLy8gZnVu
Y3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltzcmNSZWdJZF0gPT0gInVuZGVmaW5l
ZCIpOwovLyAKLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMg
YWNjb3JkaW5nIHRvCi8vICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInVuZGVmaW5lZCIsIGFu
ZCBwdXRzIHRoZSByZXN1bHQKLy8gICBpbiByZWdpc3RlciBkc3QuCgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfaXNfdW5kZWZpbmVkKQogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBD
Lmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5kc1tz
cmNSZWdJZF07CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAg
ICAgICAgICAgICAgICAgIC8vIGRzdElkPHQwPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjSWQ8dDE+ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQz
Pik7CiAgICBpZiAocjEuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xOF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4
cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2lu
ZGV4PGEwPl0uVGFnOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEw
Pi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV8xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lOyAgICAgICAgICAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAg
cjQuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAg
ICAvLyAgIGNvZGVCbG9jazxhMj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjQuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjQuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1
ZmZlcjxhMj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsK
ICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlRh
ZzsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMS5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8
YTA+XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8xOF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAr
IChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IGludDMyX3QoLTIpOyAvLyBjZnJbZHN0
SWQ8dDA+XS5UYWcgPSBCb29sZWFuVGFnOwogICAgaWYgKHIyLmkzMiA9PSBpbnQzMl90KC01KSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQyPiA9PSBDZWxsVGFn
KSBnb3RvIC5jZWxsOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BJc1VuZGVmaW5lZENlbGw7
CiAgICByNC5pID0gKHIyLnUzMiA9PSB1aW50MzJfdCgtNCkpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlzVW5kZWZpbmVkPHQzPiA9ICh0YWc8dDI+ID09IFVuZGVmaW5lZFRhZyk7CiAg
ICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
ID0gcjQuaTMyOyAvLyBjZnJbZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQzPjsKICAgIC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNv
ZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUo
KTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BJc1VuZGVmaW5lZENl
bGwpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA0KTsgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2FkPHQzPi5zdHJ1Y3R1cmU7CiAgICBy
MS5pID0gKCgqQ0FTVDxpbnQ4X3QqPihyMS5pOHAgKyA5KSAmIGludDhfdCgweDEpKSAhPSAwKTsg
IC8vIGlzVW5kZWZpbmVkPHQxPiA9ICgoc3RydWN0dXJlPHQxPi50eXBlSW5mby5mbGFncyAmIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpICE9IDApOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAr
IChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIxLmkzMjsgLy8gY2ZyW2RzdElkPHQw
Pl0gPSBpc1VuZGVmaW5lZDx0MT47CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogaXNfYm9vbGVh
biBkc3RSZWdJZCBzcmNSZWdJZAovLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9ICh0eXBlb2Yg
Y2ZyW3NyY1JlZ0lkXSA9PSAiYm9vbGVhbiIpOwovLyAKLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIg
dGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCi8vICAgdGhlIEVDTUFTY3JpcHQg
cnVsZXMgaXMgImJvb2xlYW4iLCBhbmQgcHV0cyB0aGUgcmVzdWx0Ci8vICAgaW4gcmVnaXN0ZXIg
ZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2lzX2Jvb2xlYW4pCiAgICByMS5pID0g
KkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNy
Y0lkPHQxPiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFu
ZHNbZHN0UmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzcmNJZDx0MT4g
PT0+IHRhZzx0MD4pOwogICAgaWYgKHIxLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQ7
CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVU
YWdfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25z
dGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0ODQpOwog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0
cl90KDB4NCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlVGFnX19kb25lKQogICAgcjAuaSA9IChyMC51MzIgPT0gdWludDMyX3Qo
LTIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc0Jvb2xlYW48dDA+ID0gKHRhZzx0
MD4gPT0gQm9vbGVhblRhZyk7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8
PCAzKSArIGludHB0cl90KDB4NCkpID0gaW50MzJfdCgtMik7IC8vIGNmcltkc3RJZDx0Mj5dLlRh
ZyA9IEJvb2xlYW5UYWc7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpID0gcjAuaTMyOyAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0g
aXNCb29sZWFuPHQwPjsKICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5dGVjb2RlOiBpc19udW1iZXIgZHN0UmVn
SWQgc3JjUmVnSWQKLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltzcmNS
ZWdJZF0gPT0gIm51bWJlciIpOwovLyAKLy8gICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUg
c3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCi8vICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMg
Im51bWJlciIsIGFuZCBwdXRzIHRoZSByZXN1bHQKLy8gICBpbiByZWdpc3RlciBkc3QuCgpPRkZM
SU5FX0FTTV9PUENPREVfTEFCRUwob3BfaXNfbnVtYmVyKQogICAgcjEuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJZDx0MT4gPSBv
cGVyYW5kc1tzcmNSZWdJZF07CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsg
NCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lk
XTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc3JjUmVnSWQ8dDE+ID09PiB0YWc8
dDA+KTsKICAgIGlmIChyMS5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50OwogICAg
cjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90
KDB4NCkpOwogICAgZ290byBfb2ZmbGluZWFzbV8xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFn
X19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8xOF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsK
ICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDQpKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMThfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZSkKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAg
KyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBpbnQzMl90KC0yKTsgLy8gY2ZyW2Rz
dElkPHQyPl0uVGFnID0gQm9vbGVhblRhZzsKICAgIHIwLmkzMiA9IHIwLmkzMiArIGludDMyX3Qo
MHgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnPHQwPiArPSAxOwogICAgcjEu
aSA9IChyMC51MzIgPCB1aW50MzJfdCgtNikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpc051bWJlcjx0MT4gPSAoKHVuc2lnbmVkKXRhZzx0MD4gPCBMb3dlc3RUYWcgKyAxKTsKICAg
ICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkg
PSByMS5pMzI7IC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBpc051bWJlcjx0MT47CiAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgovLyBieXRlY29kZTogaXNfc3RyaW5nIGRzdFJlZ0lkIHNyY1JlZ0lkCi8vIGZ1bmN0
aW9uOiBjZnJbZHN0UmVnSWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJzdHJpbmciKTsK
Ly8gCi8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Igc3JjIGFjY29y
ZGluZyB0bwovLyAgIHRoZSBFQ01BU2NyaXB0IHJ1bGVzIGlzICJzdHJpbmciLCBhbmQgcHV0cyB0
aGUgcmVzdWx0Ci8vICAgaW4gcmVnaXN0ZXIgZHN0LgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVM
KG9wX2lzX3N0cmluZykKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsg
ICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOwog
ICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAg
ICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CiAgICAvLyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdGFnPHQwPiwgcGF5bG9hZDx0Mz4pOwogICAgaWYg
KHIxLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNv
bnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjEuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRh
ZzsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsK
ICAgIGdvdG8gX29mZmxpbmVhc21fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAg
ICAgICAgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV8xOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHI0LmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2Rl
QmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0
Lmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0g
Y29kZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pID0g
KkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7
IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByNC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9h
ZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMTlfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZSkKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHg0KSkgPSBpbnQzMl90KC0yKTsgLy8gY2ZyW2RzdElkPHQyPl0uVGFn
ID0gQm9vbGVhblRhZzsKICAgIGlmIChyMC5pMzIgIT0gaW50MzJfdCgtNSkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0MD4gIT0gQ2VsbFRhZykgZ290byAubm90
Q2VsbDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wSXNTdHJpbmdOb3RDZWxsOwogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgICAv
LyBzdHJ1Y3R1cmU8dDA+ID0gcGF5bG9hZDx0Mz4uc3RydWN0dXJlOwogICAgcjEuaSA9ICgqQ0FT
VDx1aW50OF90Kj4ocjAuaThwICsgOCkgPT0gdWludDhfdCgweDUpKTsgICAgICAvLyBpc1N0cmlu
Zzx0MT4gPSAoc3RydWN0dXJlPHQwPi50eXBlSW5mby50eXBlID09IFN0cmluZ1R5cGUpOwogICAg
KkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9
IHIxLmkzMjsgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9IGlzU3RyaW5nPHQxPjsKICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0
ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BJc1N0cmluZ05v
dENlbGwpCiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKSA9IGludHB0cl90KDB4MCk7IC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBm
YWxzZTsKICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMu
aThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5dGVjb2RlOiBkc3RSZWdJZCBnbG9iYWxPYmplY3QoYykg
cHJvcGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIG9mZnNldChuKSBvcmFjbGVDYWNoZUlkCi8vIGZ1
bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gZ2xvYmFsT2JqZWN0W29mZnNldF07Ci8vIAovLyAgIFBl
cmZvcm1zIGEgZHluYW1pYyBwcm9wZXJ0eSBsb29rdXAgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwg
b24gdGhlIHByb3ZpZGVkCi8vICAgZ2xvYmFsIG9iamVjdC4gIElmIHN0cnVjdHVyZSBtYXRjaGVz
IHRoZSBTdHJ1Y3R1cmUgb2YgdGhlIGdsb2JhbCB0aGVuIHBlcmZvcm0KLy8gICBhIGZhc3QgbG9v
a3VwIHVzaW5nIHRoZSBjYXNlIG9mZnNldCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBhIGZ1bGwg
cmVzb2x2ZSBhbmQKLy8gICBjYWNoZSB0aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zmc2V0CgpPRkZM
SU5FX0FTTV9PUENPREVfTEFCRUwob3BfcmVzb2x2ZV9nbG9iYWwpCiAgICAvLyByZXNvbHZlR2xv
YmFsKDYsIC5zbG93KTsKICAgIC8vIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykgewog
ICAgLy8gT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAvLyA0W1BDXSAgIERlc3RpbmF0aW9u
IGZvciB0aGUgbG9hZC4KICAgIC8vIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBp
biB0aGUgY29kZSBibG9jay4KICAgIC8vIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRp
YWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgogICAgLy8gMTZbUENdICBPZmZzZXQg
aW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3Iu
CiAgICAvLyAuLi4KICAgIC8vIG9yYWNsZUNhY2hlSWRbUENdICBPZmZzZXQgaW50byB0aGUgVmFs
dWVQcm9maWxlOjpidWNrZXRzIHRoYXQgd2lsbCBzdG9yZSB0aGUgb3JhY2xlIHZhbHVlIGZvciB0
aGlzIGJ5dGVjb2RlLgogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjb2RlQmxvY2s8dDA+ID0gY2ZyLkNvZGVCbG9jazsKICAg
IHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDE2KTsgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OwogICAg
cjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzdHJ1Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5zdHJ1Y3R1cmU7CiAgICBpZiAo
cjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KHJQQy5pOHAgKyAxMikpICAgICAgICAgICAgICAgIC8v
IGlmIChzdHJ1Y3R1cmU8dDE+ICE9IHN0cnVjdHVyZUFyZzxwY1sxMl0+KSBnb3RvIC5zbG93Owog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BSZXNvbHZlR2xvYmFsU2xvdzsKICAgIHIxLmkgPSAq
Q0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxNik7ICAgICAgICAgICAgICAgICAgICAgLy8gb2Zm
c2V0PHQxPiA9IG9mZnNldEFyZ1twY1sxNl1dKTsKICAgIC8vIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXRLbm93bk5vdEZpbmFsKG9mZnNldDx0MT4sIGdsb2JhbE9iamVjdDx0MD4gPT0+IHRh
Zzx0Mj4sIHBheWxvYWQ8dDM+KTsKICAgIC8vIG1hY3JvOiBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFn
LCBwYXlsb2FkKSB7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBpZiAocjEu
aTMyID49IGludDMyX3QoMHg2KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3Jlc29sdmVHbG9i
YWxfX2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsX18xOV9hc3NlcnRf
X29rOwogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jh
c2guCgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3Jlc29sdmVHbG9iYWxf
X2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsX18xOV9hc3NlcnRfX29r
KQogICAgLy8gfSBFTkQgYXNzZXJ0LgogICAgcjEuaTMyID0gLXIxLmkzMjsKICAgIHIwLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Rv
cmFnZTxvYmplY3RBbmRTdG9yYWdlPiA9IG9iamVjdDxvYmplY3RBbmRTdG9yYWdlPi5vdXRPZkxp
bmVTdG9yYWdlOwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjAuaThwICsgKHIxLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MjQpKTsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIwLmk4
cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDIwKSk7CiAgICAvLyB9IEVORCBtYWNybyBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbAogICAgcjAuaSA9ICpDQVNU
PHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0
MD4gPSBwY1s0XTsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHg0KSkgPSByMi5pMzI7IC8vIGNmcltkc3RJZDx0MD5dLlRhZyA9IHRhZzx0Mj47
CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gcjQuaTMyOyAvLyBjZnJbZHN0SWQ8dDA+XS5QYXlsb2FkID0gcGF5bG9hZDx0Mz47CiAg
ICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMjApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIG9yYWNsZUlkPHQwPiA9IHBjW29yYWNsZUNhY2hlSWRdOwogICAgLy8gdmFsdWVQcm9m
aWxlKHRhZzx0Mj4sIHBheWxvYWQ8dDM+LCBvcmFjbGVJZDx0MD4pOwogICAgLy8gfSBFTkQgbWFj
cm8gcmVzb2x2ZUdsb2JhbC4KICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5pID0g
clBDLmkgKyBpbnRwdHJfdCgweDE4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRP
cGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJV
Q1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fb3BSZXNvbHZlR2xvYmFsU2xvdykKICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jl
c29sdmVfZ2xvYmFsOwogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbChleGVj
LCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9u
LCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0
MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE4KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAg
b3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5
dGVjb2RlOiByZXNvbHZlX3NraXAgZHN0KHIpIGdsb2JhbE9iamVjdChjKSBwcm9wZXJ0eShpZCkg
c3RydWN0dXJlKHNJRCkgb2Zmc2V0KG4pIG9yYWNsZUNhY2hlSWQKLy8gZnVuY3Rpb246IAovLyAK
Ly8gICBQZXJmb3JtcyBhIGR5bmFtaWMgcHJvcGVydHkgbG9va3VwIGZvciB0aGUgZ2l2ZW4gcHJv
cGVydHksIG9uIHRoZSBwcm92aWRlZAovLyAgIGdsb2JhbCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUg
bWF0Y2hlcyB0aGUgU3RydWN0dXJlIG9mIHRoZSBnbG9iYWwgdGhlbiBwZXJmb3JtCi8vICAgYSBm
YXN0IGxvb2t1cCB1c2luZyB0aGUgY2FzZSBvZmZzZXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8g
YSBmdWxsIHJlc29sdmUgYW5kCi8vICAgY2FjaGUgdGhlIG5ldyBzdHJ1Y3R1cmUgYW5kIG9mZnNl
dC4KLy8gICAgICAgICAKLy8gICBUaGlzIHdhbGtzIHRocm91Z2ggbiBsZXZlbHMgb2YgdGhlIHNj
b3BlIGNoYWluIHRvIHZlcmlmeSB0aGF0IG5vbmUgb2YgdGhvc2UgbGV2ZWxzCi8vICAgaW4gdGhl
IHNjb3BlIGNoYWluIGluY2x1ZGUgZHluYW1pY2FsbHkgYWRkZWQgcHJvcGVydGllcy4KCk9GRkxJ
TkVfQVNNX09QQ09ERV9MQUJFTChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQogICAgcjQuaSA9
ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGds
b2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0gc3AuZ2xv
YmFsRGF0YTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDMwNzIpOyAgICAg
ICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4gPSBnbG9iYWxEYXRhPHQz
Pi5hY3RpdmF0aW9uU3RydWN0dXJlOwogICAgLy8gZ2V0U2NvcGUob3BlcmFuZHNbb2Zmc2V0XSwg
Li4uKTsKICAgIC8vIG1hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVD
aGVjaykgewogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gMjQpOyAgICAgICAg
ICAgICAgICAgICAgICAvLyBzY29wZU9iajx0MD4gPSBjZnIuU2NvcGVDaGFpbi5QYXlsb2FkOwog
ICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDIwKTsgICAgICAgICAgICAgICAg
ICAgICAvLyBkZUJydWlqaW5JbmRleDx0Mj4gPSBbZGVCcnVpamluSW5kZXhPcGVyYW5kXTsKICAg
IGlmIChyMi5pMzIgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4PHQyPiA9PSAwKSBnb3RvIC5kb25lOwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fZ2V0U2NvcGVfX2RvbmU7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MT4gPSBj
ZnIuQ29kZUJsb2NrOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihyMS5pOHAgKyA3MikgIT0gaW50
MzJfdCgweDIpKSAgICAgICAgICAvLyBpZiAoY29kZUJsb2NrPHQxPi5jb2RlVHlwZSAhPSBGdW5j
dGlvbkNvZGUpIGdvdG8gLmxvb3A7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRTY29wZV9f
bG9vcDsKICAgIGlmICgqQ0FTVDxpbnQ4X3QqPihyMS5pOHAgKyA2OCkgPT0gMCkgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKCFjb2RlQmxvY2s8dDE+Lm5lZWRzRnVsbFNjb3BlQ2hhaW4pIGdv
dG8gLmxvb3A7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRTY29wZV9fbG9vcDsKICAgIHIx
LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIxLmk4cCArIDY0KTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gYWN0aXZhdGlvblJlZzx0MT4gPSBjb2RlQmxvY2s8dDE+LmFjdGl2YXRpb25SZWdpc3RlcjsK
ICAgIC8vIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgogICAgaWYg
KCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkg
PT0gaW50MzJfdCgtNikpIC8vIGlmIChjZnJbYWN0aXZhdGlvblJlZzx0MT5dLlRhZyA9PSBFbXB0
eVZhbHVlVGFnKSBnb3RvIC5ub0FjdGl2YXRpb247CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9n
ZXRTY29wZV9fbm9BY3RpdmF0aW9uOwogICAgLy8gc2NvcGVDaGVjayhzY29wZU9iajx0MD4sIGFj
dGl2YXRpb25SZWc8dDE+KTsKICAgIC8vIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgewogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMTYpOyAgICAgICAgICAgICAgICAgICAgICAv
LyBvYmo8c2NyYXRjaD4gPSBzY29wZS5vYmplY3Q7CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihy
MS5pOHAgKyA0KSAhPSByNC5pKSAgICAgICAgICAgICAgICAgIC8vIGlmIChvYmo8c2NyYXRjaD4u
c3RydWN0dXJlICE9IGFjdGl2YXRpb25TdHJ1Y3R1cmU8dDM+KSBnb3RvIC5zdXBlclNsb3c7CiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93Owog
ICAgLy8gfSBFTkQgbWFjcm8uCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAx
Mik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlT2JqPHQwPiA9IHNjb3BlT2JqPHQwPi5u
ZXh0OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9nZXRTY29wZV9fbm9B
Y3RpdmF0aW9uKQogICAgcjIuaTMyID0gcjIuaTMyIC0gaW50MzJfdCgweDEpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkZUJydWlqaW5JbmRleDx0Mj4tLTsKICAgIGlmIChyMi5pMzIg
PT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRl
QnJ1aWppbkluZGV4PHQyPiA9PSAwKSBnb3RvIC5kb25lOwogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fZ2V0U2NvcGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2dldFNjb3BlX19sb29wKQogICAgLy8gICBzY29wZUNoZWNrKHNjb3BlT2JqPHQwPiwgYWN0aXZh
dGlvblJlZzx0MT4pOwogICAgLy8gbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSB7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAxNik7ICAgICAgICAgICAgICAgICAgICAgIC8vIG9i
ajxzY3JhdGNoPiA9IHNjb3BlLm9iamVjdDsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDQpICE9IHI0LmkpICAgICAgICAgICAgICAgICAgLy8gaWYgKG9iajxzY3JhdGNoPi5zdHJ1
Y3R1cmUgIT0gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4pIGdvdG8gLnN1cGVyU2xvdzsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c7CiAgICAv
LyB9IEVORCBtYWNyby4KICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDEyKTsg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBzY29wZU9iajx0MD4gPSBzY29wZU9iajx0MD4ubmV4
dDsKICAgIHIyLmkzMiA9IHIyLmkzMiAtIGludDMyX3QoMHgxKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICBkZUJydWlqaW5JbmRleDx0Mj4tLTsKICAgIGlmIChyMi5pMzIgIT0gMCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlQnJ1aWpp
bkluZGV4PHQyPiAhPSAwKSBnb3RvIC5sb29wOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZ2V0
U2NvcGVfX2xvb3A7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2dldFNj
b3BlX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gZ2V0U2NvcGUuCiAgICAvLyByZXNvbHZlR2xv
YmFsKDcsIC5zbG93KTsKICAgIC8vIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykgewog
ICAgLy8gT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAvLyA0W1BDXSAgIERlc3RpbmF0aW9u
IGZvciB0aGUgbG9hZC4KICAgIC8vIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBp
biB0aGUgY29kZSBibG9jay4KICAgIC8vIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRp
YWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgogICAgLy8gMTZbUENdICBPZmZzZXQg
aW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3Iu
CiAgICAvLyAuLi4KICAgIC8vIG9yYWNsZUNhY2hlSWRbUENdICBPZmZzZXQgaW50byB0aGUgVmFs
dWVQcm9maWxlOjpidWNrZXRzIHRoYXQgd2lsbCBzdG9yZSB0aGUgb3JhY2xlIHZhbHVlIGZvciB0
aGlzIGJ5dGVjb2RlLgogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjb2RlQmxvY2s8dDA+ID0gY2ZyLkNvZGVCbG9jazsKICAg
IHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDE2KTsgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ2xvYmFsT2JqZWN0PHQwPiA9IGNvZGVCbG9jazx0MD4uZ2xvYmFsT2JqZWN0OwogICAg
cjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzdHJ1Y3R1cmU8dDE+ID0gZ2xvYmFsT2JqZWN0PHQwPi5zdHJ1Y3R1cmU7CiAgICBpZiAo
cjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KHJQQy5pOHAgKyAxMikpICAgICAgICAgICAgICAgIC8v
IGlmIChzdHJ1Y3R1cmU8dDE+ICE9IHN0cnVjdHVyZUFyZzxwY1sxMl0+KSBnb3RvIC5zbG93Owog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c7CiAgICBy
MS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTYpOyAgICAgICAgICAgICAgICAgICAg
IC8vIG9mZnNldDx0MT4gPSBvZmZzZXRBcmdbcGNbMTZdXSk7CiAgICAvLyBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChvZmZzZXQ8dDE+LCBnbG9iYWxPYmplY3Q8dDA+
ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQzPik7CiAgICAvLyBtYWNybzogbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldEtub3duTm90RmluYWwocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3Jh
Z2UsIHRhZywgcGF5bG9hZCkgewogICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAg
aWYgKHIxLmkzMiA+PSBpbnQzMl90KDB4NikpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9yZXNv
bHZlR2xvYmFsX19sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbF9fMjBf
YXNzZXJ0X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0g
RU5EIGNyYXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9yZXNvbHZl
R2xvYmFsX19sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbF9fMjBfYXNz
ZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2VydC4KICAgIHIxLmkzMiA9IC1yMS5pMzI7CiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KTsgICAgICAgICAgICAgICAgICAgICAg
IC8vIHN0b3JhZ2U8b2JqZWN0QW5kU3RvcmFnZT4gPSBvYmplY3Q8b2JqZWN0QW5kU3RvcmFnZT4u
b3V0T2ZMaW5lU3RvcmFnZTsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIwLmk4cCArIChy
MS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDI0KSk7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3Qq
PihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyMCkpOwogICAgLy8gfSBFTkQg
bWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8g
ZHN0SWQ8dDA+ID0gcGNbNF07CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8
PCAzKSArIGludHB0cl90KDB4NCkpID0gcjIuaTMyOyAvLyBjZnJbZHN0SWQ8dDA+XS5UYWcgPSB0
YWc8dDI+OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKSA9IHI0LmkzMjsgLy8gY2ZyW2RzdElkPHQwPl0uUGF5bG9hZCA9IHBheWxvYWQ8
dDM+OwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDI0KTsgICAgICAgICAg
ICAgICAgICAgICAvLyBvcmFjbGVJZDx0MD4gPSBwY1tvcmFjbGVDYWNoZUlkXTsKICAgIC8vIHZh
bHVlUHJvZmlsZSh0YWc8dDI+LCBwYXlsb2FkPHQzPiwgb3JhY2xlSWQ8dDA+KTsKICAgIC8vIH0g
RU5EIG1hY3JvIHJlc29sdmVHbG9iYWwuCiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhU
X0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX29wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cpCiAgICAv
LyBjYWxsIHNsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljOwogICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FT
VDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IGxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKGV4
ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rp
b24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9u
PHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFJlc29sdmVHbG9iYWxEeW5hbWlj
U2xvdykKICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CiAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNU
PEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
ID0gbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMoZXhlYywgcGMpOwogICAg
ICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0
YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5p
ID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfZ2V0X3Njb3BlZF92YXIpCiAgICAvLyBtYWNybyBnZXRTY29wZShkZUJydWlq
aW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spIHsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCAtIDI0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gY2Zy
LlNjb3BlQ2hhaW4uUGF5bG9hZDsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAg
KyAxMik7ICAgICAgICAgICAgICAgICAgICAgLy8gZGVCcnVpamluSW5kZXg8dDI+ID0gW2RlQnJ1
aWppbkluZGV4T3BlcmFuZF07CiAgICBpZiAocjIuaTMyID09IDApICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChkZUJydWlqaW5JbmRleDx0Mj4gPT0gMCkg
Z290byAuZG9uZTsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzIwX2dldFNjb3BlX19kb25lOwog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjb2RlQmxvY2s8dDE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIGlmICgqQ0FTVDxpbnQz
Ml90Kj4ocjEuaThwICsgNzIpICE9IGludDMyX3QoMHgyKSkgICAgICAgICAgLy8gaWYgKGNvZGVC
bG9jazx0MT4uY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKSBnb3RvIC5sb29wOwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fMjBfZ2V0U2NvcGVfX2xvb3A7CiAgICBpZiAoKkNBU1Q8aW50OF90Kj4o
cjEuaThwICsgNjgpID09IDApICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghY29kZUJsb2Nr
PHQxPi5uZWVkc0Z1bGxTY29wZUNoYWluKSBnb3RvIC5sb29wOwogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fMjBfZ2V0U2NvcGVfX2xvb3A7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyMS5p
OHAgKyA2NCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRpb25SZWc8dDE+ID0gY29k
ZUJsb2NrPHQxPi5hY3RpdmF0aW9uUmVnaXN0ZXI7CiAgICAvLyBOZWVkIHRvIGNvbmRpdGlvbmFs
bHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsg
KHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID09IGludDMyX3QoLTYpKSAvLyBpZiAoY2Zy
W2FjdGl2YXRpb25SZWc8dDE+XS5UYWcgPT0gRW1wdHlWYWx1ZVRhZykgZ290byAubm9BY3RpdmF0
aW9uOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMjBfZ2V0U2NvcGVfX25vQWN0aXZhdGlvbjsK
ICAgIC8vIHNjb3BlQ2hlY2soc2NvcGVPYmo8dDA+LCBhY3RpdmF0aW9uUmVnPHQxPik7CiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAxMik7ICAgICAgICAgICAgICAgICAgICAg
IC8vIHNjb3BlT2JqPHQwPiA9IHNjb3BlT2JqPHQwPi5uZXh0OwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV8yMF9nZXRTY29wZV9fbm9BY3RpdmF0aW9uKQogICAgcjIuaTMy
ID0gcjIuaTMyIC0gaW50MzJfdCgweDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
ZUJydWlqaW5JbmRleDx0Mj4tLTsKICAgIGlmIChyMi5pMzIgPT0gMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4PHQyPiA9PSAw
KSBnb3RvIC5kb25lOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMjBfZ2V0U2NvcGVfX2RvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzIwX2dldFNjb3BlX19sb29w
KQogICAgLy8gICBzY29wZUNoZWNrKHNjb3BlT2JqPHQwPiwgYWN0aXZhdGlvblJlZzx0MT4pOwog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMTIpOyAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIHNjb3BlT2JqPHQwPiA9IHNjb3BlT2JqPHQwPi5uZXh0OwogICAgcjIuaTMyID0g
cjIuaTMyIC0gaW50MzJfdCgweDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGRl
QnJ1aWppbkluZGV4PHQyPi0tOwogICAgaWYgKHIyLmkzMiAhPSAwKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ICE9IDAp
IGdvdG8gLmxvb3A7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8yMF9nZXRTY29wZV9fbG9vcDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMjBfZ2V0U2NvcGVfX2RvbmUp
CiAgICAvLyB9IEVORCBtYWNybyBnZXRTY29wZS4KICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsK
ICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDE2KTsKICAgIHIwLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIwLmk4cCArIDIwKTsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIw
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsKICAgIHIwLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgICpD
QVNUPGludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBy
NC5pMzI7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpID0gcjAuaTMyOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCAr
IDE2KTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE0KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcF9wdXRfc2NvcGVkX3ZhcikKICAgIC8vIG1hY3JvIGdldFNjb3Bl
KGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykgewogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gMjQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZU9iajx0
MD4gPSBjZnIuU2NvcGVDaGFpbi5QYXlsb2FkOwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBkZUJydWlqaW5JbmRleDx0Mj4g
PSBbZGVCcnVpamluSW5kZXhPcGVyYW5kXTsKICAgIGlmIChyMi5pMzIgPT0gMCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlQnJ1aWppbkluZGV4PHQy
PiA9PSAwKSBnb3RvIC5kb25lOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMjFfZ2V0U2NvcGVf
X2RvbmU7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MT4gPSBjZnIuQ29kZUJsb2NrOwogICAgaWYgKCpD
QVNUPGludDMyX3QqPihyMS5pOHAgKyA3MikgIT0gaW50MzJfdCgweDIpKSAgICAgICAgICAvLyBp
ZiAoY29kZUJsb2NrPHQxPi5jb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUpIGdvdG8gLmxvb3A7CiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV8yMV9nZXRTY29wZV9fbG9vcDsKICAgIGlmICgqQ0FTVDxp
bnQ4X3QqPihyMS5pOHAgKyA2OCkgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFj
b2RlQmxvY2s8dDE+Lm5lZWRzRnVsbFNjb3BlQ2hhaW4pIGdvdG8gLmxvb3A7CiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV8yMV9nZXRTY29wZV9fbG9vcDsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJf
dCo+KHIxLmk4cCArIDY0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0
MT4gPSBjb2RlQmxvY2s8dDE+LmFjdGl2YXRpb25SZWdpc3RlcjsKICAgIC8vIE5lZWQgdG8gY29u
ZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgogICAgaWYgKCpDQVNUPGludDMyX3QqPihm
cC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPT0gaW50MzJfdCgtNikpIC8v
IGlmIChjZnJbYWN0aXZhdGlvblJlZzx0MT5dLlRhZyA9PSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5u
b0FjdGl2YXRpb247CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8yMV9nZXRTY29wZV9fbm9BY3Rp
dmF0aW9uOwogICAgLy8gc2NvcGVDaGVjayhzY29wZU9iajx0MD4sIGFjdGl2YXRpb25SZWc8dDE+
KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDEyKTsgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5leHQ7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzIxX2dldFNjb3BlX19ub0FjdGl2YXRpb24pCiAg
ICByMi5pMzIgPSByMi5pMzIgLSBpbnQzMl90KDB4MSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRlQnJ1aWppbkluZGV4PHQyPi0tOwogICAgaWYgKHIyLmkzMiA9PSAwKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8
dDI+ID09IDApIGdvdG8gLmRvbmU7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8yMV9nZXRTY29w
ZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMjFfZ2V0U2Nv
cGVfX2xvb3ApCiAgICAvLyAgIHNjb3BlQ2hlY2soc2NvcGVPYmo8dDA+LCBhY3RpdmF0aW9uUmVn
PHQxPik7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAxMik7ICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgc2NvcGVPYmo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5leHQ7CiAgICBy
Mi5pMzIgPSByMi5pMzIgLSBpbnQzMl90KDB4MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgZGVCcnVpamluSW5kZXg8dDI+LS07CiAgICBpZiAocjIuaTMyICE9IDApICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChkZUJydWlqaW5JbmRleDx0
Mj4gIT0gMCkgZ290byAubG9vcDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzIxX2dldFNjb3Bl
X19sb29wOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8yMV9nZXRTY29w
ZV9fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGdldFNjb3BlLgogICAgcjEuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oclBDLmk4cCArIDEyKTsKICAgIGlmIChyMS5pMzIgPj0gaW50MzJfdCgweDQwMDAw
MDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjQuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAv
LyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMi5pID0gKkNBU1Q8dWludDMy
X3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9h
ZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzIxX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMjFfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7
CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0ODQpOyAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdp
c3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsg
KHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZm
ZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThw
ICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVj
dG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICByMS5p
ID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyAxNik7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAy
MCk7CiAgICAqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90
KDB4NCkpID0gcjQuaTMyOwogICAgKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmkzMjsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJf
dCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihj
dXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThw
KTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfZ2xvYmFsX3Zh
cikKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJQQy5pOHAgKyA4KTsKICAgIHI0LmkgPSAq
Q0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHIwLmk4cCArIDQpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjAuaThwKTsKICAgICpD
QVNUPGludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSBy
Mi5pMzI7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpID0gcjEuaTMyOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCAr
IDEyKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpCiAgICByMC5pID0g
KkNBU1Q8aW50cHRyX3QqPihyUEMuaThwICsgOCk7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgNCk7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyMC5pOHAgKyA0KTsK
ICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIwLmk4cCk7CiAgICAqQ0FTVDxpbnQzMl90Kj4o
ZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gcjIuaTMyOwogICAgKkNB
U1Q8aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIx
LmkzMjsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxNik7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfcHV0X2dsb2JhbF92YXIpCiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThw
ICsgOCk7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICBpZiAo
cjEuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29u
c3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8yMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudDsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFn
OwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwog
ICAgZ290byBfb2ZmbGluZWFzbV8yMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOyAgICAg
ICAgICAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtXzIyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjQuaSA9ICpDQVNU
PGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVC
bG9jazxhMj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQu
aThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMj4gPSBj
b2RlQmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIyLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsg
Ly8gICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlRhZzsKICAgIHI0Lmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2Fk
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8yMl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lKQogICAgKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCArIDQpID0gcjIuaTMy
OwogICAgKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCkgPSByNC5pMzI7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyUEMuaThwICsg
MTIpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgcjAuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgaWYgKCpDQVNUPGludDhfdCo+KHIy
Lmk4cCkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0R2xvYmFsVmFyQ2hlY2tT
bG93OwogICAgaWYgKHIxLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMjNfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5p
OHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltp
bmRleDxhMD5dLlRhZzsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMS5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxh
MD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZTsgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9M
QUJFTChfb2ZmbGluZWFzbV8yM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAg
IHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHI0LmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHI0Lmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JC
dWZmZXI8YTI+ID0gY29kZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7
CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5U
YWc7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAocjEuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4
PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMjNf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgICpDQVNUPGludDMyX3QqPihyMC5pOHAg
KyA0KSA9IHIyLmkzMjsKICAgICpDQVNUPGludDMyX3QqPihyMC5pOHApID0gcjQuaTMyOwogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVY
VF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9vcFB1dEdsb2JhbFZhckNoZWNrU2xvdykKICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fs
bCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8
RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1
Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGlu
dF9zbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2soZXhlYywgcGMpOwogICAgICAgIExMSW50
OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAg
IH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJl
c3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5X2lkKQogICAgcjAuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDE2KTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykgewogICAgLy8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oLi4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewog
ICAgaWYgKHIwLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIGlmIChpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAu
Y29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50OwogICAgLy8gICB0YWdDaGVjayhjZnJbaW5kZXhdLlRhZyk7CiAgICBpZiAo
KkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAh
PSBpbnQzMl90KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5z
bG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdzsKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAgZ290byBfb2Zm
bGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjNfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8vICAgZ290byAuZG9uZTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZ2V0QnlJZF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19jb25zdGFudCkKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29k
ZUJsb2NrOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgNDg0KTsgICAgICAg
ICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXls
b2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2
ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+
KHI0Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC01KSkg
Ly8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdzsKICAgIHI0LmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHI0Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBw
YXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Rv
bmUpCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbS4KICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkLgog
ICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDIwKTsKICAgIGlmICgqQ0FTVDxp
bnRwdHJfdCo+KHI0Lmk4cCArIDQpICE9IHIxLmkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9n
ZXRCeUlkX19vcEdldEJ5SWRTbG93OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4
cCArIDQpOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjQuaThwICsgKHIyLmkzMiA8PCAw
KSArIGludHB0cl90KDB4NCkpOwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjQuaThwICsg
KHIyLmkzMiA8PCAwKSArIGludHB0cl90KDB4MCkpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4
cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IHIwLmkzMjsKICAgICpDQVNUPGlu
dDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMi5pMzI7
CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMzIpOwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4MjQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9nZXRCeUlkX19vcEdldEJ5SWRTbG93KQogICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rp
b24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUq
PihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQ
Qy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfaWQoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0
LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyNCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKQogICAgcjAuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDgpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCAr
IDE2KTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBl
eHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykgewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRUYWdDdXN0b20oLi4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHIw
LmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGlmIChpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0
YW50OwogICAgLy8gICB0YWdDaGVjayhjZnJbaW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50
MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90
KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fMjRfZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdzsKICAgIHI0Lmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFz
bV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjRfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZ2V0QnlJZF9fbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRfXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19jb25zdGFudCkKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2Nr
OwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgNDg0KTsgICAgICAgICAgICAg
ICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2FkPi5j
b25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2ZWN0b3JC
dWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHI0Lmk4
cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC01KSkgLy8gICBp
ZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fMjRfZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdzsKICAgIHI0LmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHI0Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXls
b2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUp
CiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bS4KICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkLgogICAg
cjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDIwKTsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHI0Lmk4cCArIDgpOwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4ocjQuaThwICsg
NCkgIT0gcjEuaSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzI0X2dldEJ5SWRfX29wR2V0QnlJ
ZFNsb3c7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICByNC5p
ID0gKkNBU1Q8dWludDMyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDApICsgaW50cHRyX3QoMHg0
KSk7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDApICsg
aW50cHRyX3QoMHgwKSk7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAz
KSArIGludHB0cl90KDB4NCkpID0gcjQuaTMyOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAr
IChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmkzMjsKICAgIHIxLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KHJQQy5pOHAgKyAzMik7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHgyNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzI0X2dl
dEJ5SWRfX29wR2V0QnlJZFNsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcy
KTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAg
ICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAg
ICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZChl
eGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0
aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlv
bjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9n
ZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAg
KyA4KTsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIGlmICgq
Q0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9
IGludDMyX3QoLTYpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BHZXRBcmd1bWVudHNMZW5n
dGhTbG93OwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDgpOwogICAgcjIu
aTMyID0gcjIuaTMyIC0gaW50MzJfdCgweDEpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAr
IChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IGludDMyX3QoLTEpOwogICAgKkNBU1Q8
aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmkz
MjsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BHZXRBcmd1bWVudHNMZW5ndGhTbG93KQogICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FT
VDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IGxsaW50X3Nsb3dfcGF0aF9nZXRfYXJndW1lbnRzX2xlbmd0aChleGVjLCBwYyk7CiAgICAg
ICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3Rh
dGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkg
PSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCi8vIGJ5dGVjb2RlOiBwdXRfYnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkg
dmFsdWUocikgbm9wKG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRpcmVjdChiKQovLyAKLy8gICBH
ZW5lcmljIHByb3BlcnR5IGFjY2VzczogU2V0cyB0aGUgcHJvcGVydHkgbmFtZWQgYnkgaWRlbnRp
ZmllcgovLyAgIHByb3BlcnR5LCBiZWxvbmdpbmcgdG8gcmVnaXN0ZXIgYmFzZSwgdG8gcmVnaXN0
ZXIgdmFsdWUuCi8vIAovLyAgIFVubGlrZSBtYW55IG9wY29kZXMsIHRoaXMgb25lIGRvZXMgbm90
IHdyaXRlIGFueSBvdXRwdXQgdG8KLy8gICB0aGUgcmVnaXN0ZXIgZmlsZS4KLy8gCi8vICAgVGhl
ICJkaXJlY3QiIGZsYWcgc2hvdWxkIG9ubHkgYmUgc2V0IHRoaXMgcHV0X2J5X2lkIGlzIHRvIGlu
aXRpYWxpemUKLy8gICBhbiBvYmplY3QgbGl0ZXJhbC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJF
TChvcF9wdXRfYnlfaWQpCiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7
CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTYpOwogICAgLy8gbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2Fk
LCBzbG93KSB7CiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgu
Li4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
aW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7CiAgICBpZiAocjQuaTMyID49IGludDMyX3QoMHg0
MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ7CiAgICAvLyAgIHRhZ0No
ZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHI0
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTUpKSAvLyAgIGlmIChhY3R1
YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV9vcFB1dEJ5SWRTbG93OwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHI0
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQgPSBjZnJbaW5kZXhdLlBh
eWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX18yNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9u
ZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjVfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9j
azxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MC5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPHBheWxv
YWQ+ID0gY29kZUJsb2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvcmVCdWZmZXI7
CiAgICAvLyAgIHRhZ0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uVGFnKTsKICAg
IGlmICgqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4
NCkpICE9IGludDMyX3QoLTUpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdv
dG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyAgIHBheWxvYWQgPSB2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlBheWxvYWQ7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18yNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tLgogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQuCiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIpOwogICAg
aWYgKCpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNCkgIT0gcjEuaSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMu
aThwICsgMjApOwogICAgLy8gbWFjcm86IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4
LCB0YWcsIHBheWxvYWQpIHsKICAgIGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
X3B1dEJ5SWRfX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18yNV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihm
cC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNm
cltpbmRleDxhMD5dLlRhZzsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChy
Mi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRl
eDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2dldFByb3BlcnR5
U3RvcmFnZV9fY29udGludWF0aW9uX18yNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9u
ZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9wdXRCeUlkX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMjVfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KQogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBj
ZnIuQ29kZUJsb2NrOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgNDg0KTsg
ICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2RlQmxvY2s8YTE+
LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIyLmkzMiA9IHIyLmkzMiA8PCBp
bnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBieXRlSW5kZXg8YTA+
ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByNC5pID0gcjQuaSArIHIyLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZl
cjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxh
MT4uUGF5bG9hZDsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDQpOyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRhZzsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9y
YWdlX19jb250aW51YXRpb25fXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQog
ICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICAqQ0FTVDxp
bnQzMl90Kj4ocjAuaThwICsgKHIxLmkzMiA8PCAwKSArIGludHB0cl90KDB4NCkpID0gcjQuaTMy
OwogICAgKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwgMCkgKyBpbnRwdHJfdCgw
eDApKSA9IHIyLmkzMjsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDI0KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdykKICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENB
U1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQgPSBsbGludF9zbG93X3BhdGhfcHV0X2J5X2lkKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6
ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9
CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MjQpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29k
ZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIHIxLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KHJQQy5pOHAgKyAxNik7CiAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpIHsKICAgIC8vIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKC4uLik7CiAgICAvLyBtYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBh
eWxvYWQpIHsKICAgIGlmIChyNC5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZF9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19jb25zdGFudDsKICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcp
OwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg0KSkgIT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRh
ZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAg
ICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKICAgIGdvdG8gX29m
ZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI2X2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18yNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4
KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPHBheWxvYWQ+ID0gY2ZyLkNv
ZGVCbG9jazsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQ4NCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8cGF5bG9hZD4gPSBjb2RlQmxvY2s8cGF5
bG9hZD4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yZUJ1ZmZlcjsKICAgIC8vICAgdGFnQ2hlY2so
dmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3Qq
PihyMC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNSkp
IC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9
IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzI2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAg
Ly8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAg
ICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIHIyLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICByNC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyA4KTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQpICE9
IHIxLmkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjEuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDIwKTsKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjIuaTMyID49
IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGlu
ZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRp
bnVhdGlvbl9fMjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OwogICAgcjAu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4
NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMi5pID0gKkNBU1Q8
dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAg
cGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFz
bV9wdXRCeUlkX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMjZfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250
aW51YXRpb25fXzI2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBjb2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIwLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIwLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZm
ZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAg
ICByMi5pMzIgPSByMi5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjAuaSA9IHIwLmkg
KyByMi5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0
YW50PGExPiA9ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjIuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjAuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBh
eWxvYWQ8YTI+ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNv
bnN0YW50PGExPi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1
dEJ5SWRfX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18yNl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnLgogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCArIChyMS5pMzIgPDwgMCkgKyBp
bnRwdHJfdCgweDQpKSA9IHIwLmkzMjsKICAgICpDQVNUPGludDMyX3QqPihyNC5pOHAgKyAocjEu
aTMyIDw8IDApICsgaW50cHRyX3QoMHgwKSkgPSByMi5pMzI7CiAgICByUEMuaSA9IHJQQy5pICsg
aW50cHRyX3QoMHgyNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBz
aXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4o
clBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4
cCArIDQpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDE2KTsKICAgIC8v
IG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywg
cGF5bG9hZCwgc2xvdykgewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b20oLi4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHI0LmkzMiA+PSBpbnQz
Ml90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleCA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFu
dDsKICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMy
X3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgt
NSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICByMC5pID0gKkNBU1Q8dWludDMy
X3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9h
ZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5z
aXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yN19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29k
ZUJsb2NrOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsgICAgICAg
ICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXls
b2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2
ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+
KHIwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC01KSkg
Ly8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0g
dmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19k
b25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b20uCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4K
ICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICBpZiAoKkNBU1Q8
aW50cHRyX3QqPihyMC5pOHAgKyA0KSAhPSByMS5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
b3BQdXRCeUlkU2xvdzsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAyMCk7
CiAgICByNC5pID0gcjAuaSArIHIxLmk7CiAgICAvLyBtYWNybzogbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90
KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4g
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29u
dGludWF0aW9uX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICBy
MS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIyLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
ICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5l
YXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9f
MjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dl
dFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGExPiA9IGNmci5Db2RlQmxvY2s7
CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQpOyAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGExPiA9IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdp
c3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjIuaTMyID0gcjIuaTMyIDw8IGludDMyX3QoMHgzKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxhMD4gPSBpbmRleDxhMD4g
PDwgMzsKICAgIHIxLmkgPSByMS5pICsgcjIuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5k
ZXg8YTA+XTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNvbnN0YW50PGExPi5QYXlsb2FkOwog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNCk7ICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIHRhZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdl
X19jb250aW51YXRpb25fXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAg
Ly8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICAqQ0FTVDxpbnQz
Ml90Kj4ocjQuaThwICsgNCkgPSByMS5pMzI7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihy
UEMuaThwICsgMjQpOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCkgPSByMi5pMzI7CiAgICAq
Q0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQpID0gcjEuaTsKICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNp
emVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihy
UEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpCiAgICByNC5pID0gKkNBU1Q8dWludDMy
X3QqPihyUEMuaThwICsgNCk7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsg
MTYpOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4
cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbSguLi4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7CiAgICBpZiAocjQu
aTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAg
aWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50OwogICAgLy8gICB0YWdDaGVjayhjZnJbaW5kZXhdLlRhZyk7CiAgICBpZiAo
KkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAh
PSBpbnQzMl90KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5z
bG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsKICAgIHIwLmkgPSAq
Q0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI4X2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9u
X19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxwYXlsb2Fk
PiA9IGNmci5Db2RlQmxvY2s7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0
ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPHBheWxvYWQ+ID0gY29k
ZUJsb2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvcmVCdWZmZXI7CiAgICAvLyAg
IHRhZ0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FT
VDxpbnQzMl90Kj4ocjAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGlu
dDMyX3QoLTUpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjAuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAg
IHBheWxvYWQgPSB2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlBheWxvYWQ7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b21fX2RvbmUpCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbS4KICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkLgogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDEyKTsKICAg
IGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQpICE9IHIxLmkpCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBD
Lmk4cCArIDIwKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAg
cjQuaSA9IHI0LmkgKyByMS5pOwogICAgLy8gbWFjcm86IGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAgIGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQw
MDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVh
dGlvbl9fMjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OwogICAgcjEuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
OyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMi5pID0gKkNBU1Q8dWlu
dDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5
bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzI4X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9w
ZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdf
X2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAg
ICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAg
cjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAg
ICAvLyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2RlQmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJz
LnZlY3RvckJ1ZmZlcjsKICAgIHIyLmkzMiA9IHIyLmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBieXRlSW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7
CiAgICByMS5pID0gcjEuaSArIHIyLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEw
Pl07CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIx
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRhZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29u
dGludWF0aW9uX18yOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0g
RU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgKkNBU1Q8aW50MzJfdCo+
KHI0Lmk4cCArIDQpID0gcjEuaTMyOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4
cCArIDI0KTsKICAgICpDQVNUPGludDMyX3QqPihyNC5pOHApID0gcjIuaTMyOwogICAgKkNBU1Q8
aW50cHRyX3QqPihyMC5pOHAgKyA0KSA9IHIxLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRy
X3QoMHgyNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2Yo
Y3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKQogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQp
OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDE2KTsKICAgIC8vIG1hY3Jv
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9h
ZCwgc2xvdykgewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
Li4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
KGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHI0LmkzMiA+PSBpbnQzMl90KDB4
NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleCA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDsKICAg
IC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihm
cC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNSkpIC8v
ICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihm
cC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNm
cltpbmRleF0uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25f
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbV9fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2Nr
OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsgICAgICAgICAgICAg
ICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2FkPi5j
b25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2ZWN0b3JC
dWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHIwLmk4
cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC01KSkgLy8gICBp
ZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0gdmVjdG9y
QnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQog
ICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20u
CiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIHIy
LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICBpZiAoKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyA0KSAhPSByMS5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRC
eUlkU2xvdzsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJQQy5pOHAgKyAyOCk7CiAgICAv
LyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBpZiAocjQuaSAhPSAwKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfXzI5X2Fz
c2VydF9fb2s7CiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVO
RCBjcmFzaC4KCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRy
YW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfXzI5X2Fzc2VydF9fb2spCiAgICAvLyB9IEVORCBh
c3NlcnQuCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA4KTsKICAgIC8vIG1h
Y3JvIGFzc2VydChhc3NlcnRpb24pIHsKICAgIGlmIChyNC5pICE9IDApCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19fMzBfYXNzZXJ0
X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNy
YXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNp
dGlvbl9fYWRkaXRpb25hbENoZWNrc19fMzBfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2Vy
dC4KICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4ocjEuaThwICsgMjApID09IGludDMyX3QoLTMpKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVj
a3NfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX19hZGRpdGlvbmFsQ2hlY2tzX19sb29wKQogICAgcjEuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4ocjEuaThwICsgMTYpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsg
NCk7CiAgICBpZiAocjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCkpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjQuaSA9IHI0LmkgKyBpbnRwdHJfdCgw
eDQpOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihyMS5pOHAgKyAyMCkgIT0gaW50MzJfdCgtMykp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENo
ZWNrc19fbG9vcDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJ
ZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfX2RvbmUpCiAgICByMS5pID0gKkNBU1Q8dWlu
dDMyX3QqPihyUEMuaThwICsgMjApOwogICAgcjQuaSA9IHIwLmkgKyByMS5pOwogICAgLy8gbWFj
cm86IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAg
IGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3Rv
IC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19n
ZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzBfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIy
LmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+
XS5UYWc7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXls
b2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlT
dG9yYWdlX19jb250aW51YXRpb25fXzMwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
OyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzBf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9j
azxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2Rl
QmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIyLmkzMiA9IHIy
LmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBieXRl
SW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByMS5pID0gcjEuaSArIHIyLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZl
Y3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBj
b25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCAr
IDQpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRh
ZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRp
b25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zMF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnLgogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCArIDQpID0gcjEuaTMyOwogICAgcjEu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDI0KTsKICAgICpDQVNUPGludDMyX3QqPihy
NC5pOHApID0gcjIuaTMyOwogICAgKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0KSA9IHIxLmk7
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyNCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQog
ICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgcjEuaSA9ICpDQVNU
PHVpbnQzMl90Kj4oclBDLmk4cCArIDE2KTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykgewogICAgLy8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oLi4uKTsKICAgIC8vIG1hY3Jv
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywg
cGF5bG9hZCkgewogICAgaWYgKHI0LmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJh
bnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMwX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDsKICAgIC8vICAgdGFnQ2hlY2soY2Zy
W2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAh
PSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0
QnlJZFNsb3c7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsK
ICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX18zMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMw
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjAuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3Rv
ckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52
ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5k
ZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCArIChyNC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4
cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlk
U2xvdzsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyNC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2lu
ZGV4XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRC
eUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMwX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAgICAvLyB9IEVORCBtYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJf
dCo+KHJQQy5pOHAgKyAxMik7CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0KSAh
PSByMS5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsKICAgIHI0Lmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHJQQy5pOHAgKyAyOCk7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNz
ZXJ0aW9uKSB7CiAgICBpZiAocjQuaSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfXzMxX2Fzc2VydF9fb2s7CiAgICAvLyBt
YWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9u
YWxDaGVja3NfXzMxX2Fzc2VydF9fb2spCiAgICAvLyB9IEVORCBhc3NlcnQuCiAgICByNC5pID0g
KkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA4KTsKICAgIC8vIG1hY3JvIGFzc2VydChhc3NlcnRp
b24pIHsKICAgIGlmIChyNC5pICE9IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19fMzJfYXNzZXJ0X19vazsKICAgIC8vIG1hY3Jv
IGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENo
ZWNrc19fMzJfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2VydC4KICAgIGlmICgqQ0FTVDxp
bnQzMl90Kj4ocjEuaThwICsgMjApID09IGludDMyX3QoLTMpKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzMyX2FkZGl0aW9uYWxDaGVja3NfX2RvbmU7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zMl9h
ZGRpdGlvbmFsQ2hlY2tzX19sb29wKQogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjEuaThw
ICsgMTYpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNCk7CiAgICBpZiAo
cjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV9vcFB1dEJ5SWRTbG93OwogICAgcjQuaSA9IHI0LmkgKyBpbnRwdHJfdCgweDQpOwogICAgaWYg
KCpDQVNUPGludDMyX3QqPihyMS5pOHAgKyAyMCkgIT0gaW50MzJfdCgtMykpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzJfYWRkaXRpb25hbENoZWNrc19fbG9v
cDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRp
b25fXzMyX2FkZGl0aW9uYWxDaGVja3NfX2RvbmUpCiAgICByMS5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgMjApOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOCk7
CiAgICByNC5pID0gcjQuaSArIHIxLmk7CiAgICAvLyBtYWNybzogbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90
KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4g
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29u
dGludWF0aW9uX18zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICBy
MS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIyLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
ICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5l
YXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9f
MzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dl
dFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGExPiA9IGNmci5Db2RlQmxvY2s7
CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA0ODQpOyAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGExPiA9IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdp
c3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjIuaTMyID0gcjIuaTMyIDw8IGludDMyX3QoMHgzKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxhMD4gPSBpbmRleDxhMD4g
PDwgMzsKICAgIHIxLmkgPSByMS5pICsgcjIuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5k
ZXg8YTA+XTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IGNvbnN0YW50PGExPi5QYXlsb2FkOwog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNCk7ICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgIHRhZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdl
X19jb250aW51YXRpb25fXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAg
Ly8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICAqQ0FTVDxpbnQz
Ml90Kj4ocjQuaThwICsgNCkgPSByMS5pMzI7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihy
UEMuaThwICsgMjQpOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCkgPSByMi5pMzI7CiAgICAq
Q0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQpID0gcjEuaTsKICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNp
emVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihy
UEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfYnlf
dmFsKQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMi5pID0g
KkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgMTIpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNDgp
OwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVj
dGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbSguLi4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7CiAgICBpZiAocjIuaTMy
ID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYg
KGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMl9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ7CiAgICAvLyAg
IHRhZ0NoZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThw
ICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTUpKSAvLyAgIGlm
IChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcEdldEJ5VmFsU2xvdzsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4
cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0gY2ZyW2lu
ZGV4XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7
IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4g
PSBjZnIuQ29kZUJsb2NrOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0
KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVC
bG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0
YWdDaGVjayh2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8
aW50MzJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQz
Ml90KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93Owog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3c7CiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAg
cGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAg
Ly8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAg
ICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIHIyLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDY1NTIpOwogICAgLy8gbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7
CiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSguLi4pOwogICAg
Ly8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRh
Z0NoZWNrLCBwYXlsb2FkKSB7CiAgICBpZiAocjQuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkp
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ7CiAgICAvLyAgIHRhZ0NoZWNrKGNmcltpbmRleF0uVGFn
KTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0
cl90KDB4NCkpICE9IGludDMyX3QoLTEpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRU
YWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdzsK
ICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAgZ290byBf
b2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzNfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzMzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFu
dCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAv
LyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJl
Z2lzdGVycy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2ZWN0b3JCdWZmZXI8cGF5
bG9hZD5baW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHIxLmk4cCArIChyNC5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC0xKSkgLy8gICBpZiAoYWN0dWFs
VGFnICE9IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
b3BHZXRCeVZhbFNsb3c7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjQu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxw
YXlsb2FkPltpbmRleF0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMzX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCkg
IT0gcjIuaSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93OwogICAgcjQu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMjQpOwogICAgaWYgKHIxLnUzMiA+PSAqQ0FT
VDx1aW50MzJfdCo+KHIwLmk4cCArIDE2KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0
QnlWYWxTbG93OwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAg
cjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjQuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MTQpKTsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHI0Lmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBpZiAocjIuaTMyID09IGludDMyX3QoLTYpKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3c7CiAgICAqQ0FTVDxpbnQzMl90Kj4o
ZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpID0gcjIuaTMyOwogICAgKkNB
U1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIx
LmkzMjsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxNik7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93KQogICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24o
YXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihm
cC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52
cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVY
VF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RF
X0xBQkVMKG9wX2dldF9hcmd1bWVudF9ieV92YWwpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgOCk7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIp
OwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg0KSkgIT0gaW50MzJfdCgtNikpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEFy
Z3VtZW50QnlWYWxTbG93OwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAvLyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSguLi4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7
CiAgICBpZiAocjEuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3Rv
IC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQ7CiAgICAvLyAgIHRhZ0NoZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxp
bnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMy
X3QoLTEpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEFyZ3VtZW50QnlWYWxTbG93OwogICAgcjIuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyAgIHBheWxvYWQgPSBjZnJbaW5kZXhdLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNt
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbV9fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzRf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KQogICAgcjIu
aSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGNvZGVCbG9jazxwYXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMi5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMi5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9y
QnVmZmVyPHBheWxvYWQ+ID0gY29kZUJsb2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZl
Y3RvcmVCdWZmZXI7CiAgICAvLyAgIHRhZ0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRl
eF0uVGFnKTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4ocjIuaThwICsgKHIxLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTEpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhw
ZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEFyZ3Vt
ZW50QnlWYWxTbG93OwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgKHIxLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQgPSB2ZWN0b3JCdWZmZXI8cGF5
bG9hZD5baW5kZXhdLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tLgogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQuCiAgICByMi5pMzIgPSByMi5pMzIgKyBpbnQzMl90KDB4MSk7
CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0OCk7CiAgICBpZiAocjIudTMy
ID49IHIxLnUzMikKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRCeVZhbFNs
b3c7CiAgICByMi5pMzIgPSAtcjIuaTMyOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBD
Lmk4cCArIDQpOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8
PCAzKSArIGludHB0cl90KC01MikpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThw
ICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KC01NikpOwogICAgcjIuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDE2KTsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjQuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSByMC5pMzI7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAu
aThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjEuaTMyOwogICAgclBDLmkg
PSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNU
UlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9vcEdldEFyZ3VtZW50QnlWYWxTbG93KQogICAgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVu
Y3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3Rh
dGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3df
cGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2Rl
UmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICBy
UEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhl
Y1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9ieV9wbmFtZSkKICAgIHIwLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpIHsKICAgIC8vIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKC4uLik7CiAgICAvLyBtYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBh
eWxvYWQpIHsKICAgIGlmIChyMC5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19jb25zdGFudDsKICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOwogICAgaWYg
KCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkg
IT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAu
c2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlQbmFtZVNsb3c7CiAgICByMS5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVh
c21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18z
NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpCiAgICBy
MS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgY29kZUJsb2NrPHBheWxvYWQ+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0
b3JCdWZmZXI8cGF5bG9hZD4gPSBjb2RlQmxvY2s8cGF5bG9hZD4uY29uc3RhbnRSZWdpc3RlcnMu
dmVjdG9yZUJ1ZmZlcjsKICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVmZmVyPHBheWxvYWQ+W2lu
ZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBl
eHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlQ
bmFtZVNsb3c7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2Fk
PltpbmRleF0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZC4KICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAx
Nik7CiAgICBpZiAocjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlQbmFt
ZVNsb3c7CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7CiAgICAvLyBt
YWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBh
eWxvYWQsIHNsb3cpIHsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tKC4uLik7CiAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpIHsKICAgIGlmIChyMC5pMzIgPj0gaW50MzJf
dCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXggPj0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM2X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDsKICAgIC8vICAgdGFnQ2hlY2so
Y2ZyW2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjAuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRh
ZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29w
R2V0QnlQbmFtZVNsb3c7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5
bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzM2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOyAvLyAgIGdv
dG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18zNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fY29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4
KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPHBheWxvYWQ+ID0gY2ZyLkNv
ZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQ4NCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8cGF5bG9hZD4gPSBjb2RlQmxvY2s8cGF5
bG9hZD4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yZUJ1ZmZlcjsKICAgIC8vICAgdGFnQ2hlY2so
dmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3Qq
PihyMi5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtNSkp
IC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX29wR2V0QnlQbmFtZVNsb3c7CiAgICByMi5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMi5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9h
ZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM2
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAgLy8gfSBF
TkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAgICAvLyB9
IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIHIwLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KHJQQy5pOHAgKyAyMCk7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihm
cC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMi5pOHAgKyA0KTsKICAgIGlmIChyMC5pICE9ICpDQVNUPGludHB0cl90Kj4o
cjQuaThwICsgOCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEJ5UG5hbWVTbG93Owog
ICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDI0KTsKICAgIHIwLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAg
IHIwLmkzMiA9IHIwLmkzMiAtIGludDMyX3QoMHgxKTsKICAgIGlmIChyMC51MzIgPj0gKkNBU1Q8
dWludDMyX3QqPihyNC5pOHAgKyAxNikpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEJ5
UG5hbWVTbG93OwogICAgcjAuaTMyID0gcjAuaTMyICsgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCAr
IDI0KTsKICAgIGlmIChyMC5pMzIgPCBpbnQzMl90KDB4NikpCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGluZTsKICAgIHIyLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDgpOwogICAgcjAuaTMyID0gLXIwLmkzMjsKICAgIGdv
dG8gX29mZmxpbmVhc21fbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHk7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXRfX2lzSW5saW5lKQogICAgcjIuaSA9IHIyLmkgKyBpbnRwdHJfdCgtMTYpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0X19yZWFkeSkKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIyLmk4cCArIChyMC5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDI0KSk7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihyMi5p
OHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyMCkpOwogICAgcjAuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IHIxLmkzMjsKICAgICpDQVNUPGludDMyX3QqPihm
cC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByNC5pMzI7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX29wR2V0QnlQbmFtZVNsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlv
bihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+
KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBD
LnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRo
X2dldF9ieV9wbmFtZShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1
bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5p
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJl
c3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4K
ICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDFjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0g
KkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09Q
Q09ERV9MQUJFTChvcF9wdXRfYnlfdmFsKQogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBD
Lmk4cCArIDQpOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5k
ZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAvLyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSguLi4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKSB7CiAgICBp
ZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25z
dGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX18zN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ7
CiAgICAvLyAgIHRhZ0NoZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxpbnQzMl90
Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTUp
KSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9vcFB1dEJ5VmFsU2xvdzsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJf
dCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2Fk
ID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM3X2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8
cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEu
aThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxwYXlsb2Fk
PiA9IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JlQnVmZmVyOwog
ICAgLy8gICB0YWdDaGVjayh2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CiAgICBp
ZiAoKkNBU1Q8aW50MzJfdCo+KHIxLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQp
KSAhPSBpbnQzMl90KC01KSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFnKSBnb3Rv
IC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeVZhbFNsb3c7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19k
b25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b20uCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4K
ICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsKICAgIC8vIG1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwg
c2xvdykgewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oLi4u
KTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGlu
ZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHIwLmkzMiA+PSBpbnQzMl90KDB4NDAw
MDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleCA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzhfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OwogICAgLy8gICB0YWdDaGVjayhjZnJbaW5k
ZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC0xKSkgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4
cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeVZh
bFNsb3c7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKICAg
IGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM4X2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX18zOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
Y29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPHBheWxvYWQ+ID0gY2ZyLkNvZGVCbG9jazsK
ICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAg
ICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8cGF5bG9hZD4gPSBjb2RlQmxvY2s8cGF5bG9hZD4uY29u
c3RhbnRSZWdpc3RlcnMudmVjdG9yZUJ1ZmZlcjsKICAgIC8vICAgdGFnQ2hlY2sodmVjdG9yQnVm
ZmVyPHBheWxvYWQ+W2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGludDMyX3QqPihyMi5pOHAg
KyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJfdCgtMSkpIC8vICAgaWYg
KGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX29wUHV0QnlWYWxTbG93OwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThw
ICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQgPSB2ZWN0b3JC
dWZmZXI8cGF5bG9hZD5baW5kZXhdLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zOF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tLgogICAgLy8gfSBFTkQgbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQuCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQ4KTsK
ICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDY1NTIpOwogICAgaWYgKCpDQVNU
PGludHB0cl90Kj4ocjEuaThwKSAhPSByMC5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQ
dXRCeVZhbFNsb3c7CiAgICBpZiAocjIudTMyID49ICpDQVNUPHVpbnQzMl90Kj4ocjEuaThwICsg
MTYpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeVZhbFNsb3c7CiAgICByMC5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAyNCk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHIw
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE0KSkgPT0gaW50MzJfdCgtNikpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5VmFsRW1wdHk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wUHV0QnlWYWxTdG9yZVJlc3VsdCkKICAgIHI0LmkgPSAq
Q0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICAvLyBtYWNybzogbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHI0LmkzMiA+PSBp
bnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRl
eDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fMzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0
YW50OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSAr
IGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICBy
NC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOwogICAgZ290
byBfb2ZmbGluZWFzbV8zOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZTsgICAgICAv
LyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM4
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29k
ZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5pMzIgPSBy
NC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0
ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjEuaSA9IHIxLmkgKyByNC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50PGExPiA9ICZ2
ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90
Kj4ocjEuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+ID0g
Y29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAg
KyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5U
YWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcuCiAgICAqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MTQpKSA9IHIxLmkzMjsKICAgICpDQVNUPGludDMyX3QqPihyMC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpID0gcjQuaTMyOwogICAgclBDLmkgPSByUEMu
aSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBj
ICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29k
ZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElP
TjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9vcFB1dEJ5VmFsRW1wdHkpCiAgICAqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgNCkg
PSAqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgNCkgKyBpbnQzMl90KDB4MSk7CiAgICBpZiAocjIu
dTMyIDwgKkNBU1Q8dWludDMyX3QqPihyMC5pOHApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
b3BQdXRCeVZhbFN0b3JlUmVzdWx0OwogICAgcjEuaTMyID0gcjIuaTMyICsgaW50MzJfdCgweDEp
OwogICAgKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCkgPSByMS5pMzI7CiAgICBnb3RvIF9vZmZsaW5l
YXNtX29wUHV0QnlWYWxTdG9yZVJlc3VsdDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fb3BQdXRCeVZhbFNsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBh
cmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3B1dF9ieV92
YWwoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0
cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1
Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RS
VUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwo
b3BfbG9vcCkKICAgIC8vIG5vcAoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2ptcCkKICAg
IHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIHIwLmkzMiA9IHIwLmkz
MiA8PCBpbnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3BfamVxX251bGwpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMu
aThwICsgNCk7CiAgICAvLyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgpOwogICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHIwLmkzMiA8
IGludDMyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9lcXVhbE51bGxf
X2Fzc2VydE5vdENvbnN0YW50X18zOF9hc3NlcnRfX29rOwogICAgLy8gbWFjcm8gY3Jhc2goKSB7
CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX2VxdWFsTnVsbF9fYXNzZXJ0Tm90Q29uc3RhbnRfXzM4X2Fzc2VydF9f
b2spCiAgICAvLyB9IEVORCBhc3NlcnQuCiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5p
OHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7CiAgICByMC5pID0gKkNBU1Q8dWlu
dDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBpZiAo
cjEuaTMyICE9IGludDMyX3QoLTUpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZXF1YWxOdWxs
X19pbW1lZGlhdGU7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0KTsKICAg
IGlmICgoKkNBU1Q8aW50OF90Kj4ocjIuaThwICsgOSkgJiBpbnQ4X3QoMHgxKSkgIT0gMCkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX2VxdWFsTnVsbF9fdGFyZ2V0OwogICAgclBDLmkgPSByUEMu
aSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBj
ICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29k
ZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElP
TjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9lcXVhbE51bGxfX3RhcmdldCkKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQ
Qy5pOHAgKyA4KTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7CiAgICByUEMu
aSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Vx
dWFsTnVsbF9faW1tZWRpYXRlKQogICAgcjEuaTMyID0gcjEuaTMyIHwgaW50MzJfdCgweDEpOwog
ICAgaWYgKHIxLmkzMiA9PSBpbnQzMl90KC0zKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Vx
dWFsTnVsbF9fdGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29k
ZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2puZXFfbnVsbCkKICAgIHIwLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIC8vIGFzc2VydChpbmRleDxhMD4gPCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7
CiAgICBpZiAocjAuaTMyIDwgaW50MzJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX2VxdWFsTnVsbF9fYXNzZXJ0Tm90Q29uc3RhbnRfXzM5X2Fzc2VydF9fb2s7CiAgICAv
LyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZXF1YWxOdWxsX19hc3NlcnROb3RDb25z
dGFudF9fMzlfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2VydC4KICAgIHIxLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsKICAg
IHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsKICAgIGlmIChyMS5pMzIgIT0gaW50MzJfdCgtNSkpCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV8zOV9lcXVhbE51bGxfX2ltbWVkaWF0ZTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIwLmk4cCArIDQpOwogICAgaWYgKCgqQ0FTVDxpbnQ4X3QqPihyMi5pOHAgKyA5KSAmIGlu
dDhfdCgweDEpKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzlfZXF1YWxOdWxsX190
YXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9w
Y29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM5X2VxdWFsTnVsbF9fdGFyZ2V0KQogICAg
cjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgcjAuaTMyID0gcjAuaTMy
IDw8IGludDMyX3QoMHgyKTsKICAgIHJQQy5pID0gclBDLmkgKyByMC5pOwogICAgb3Bjb2RlID0g
KkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3Rv
IE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMzlfZXF1YWxOdWxsX19pbW1lZGlhdGUpCiAgICByMS5p
MzIgPSByMS5pMzIgfCBpbnQzMl90KDB4MSk7CiAgICBpZiAocjEuaTMyICE9IGludDMyX3QoLTMp
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzlfZXF1YWxOdWxsX190YXJnZXQ7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3Bfam5lcV9wdHIpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7
CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7CiAgICBpZiAoKkNBU1Q8
aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQz
Ml90KC01KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wSm5lcVB0ckJyYW5jaDsKICAgIGlm
ICgqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KSA9PSByMS5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BKbmVxUHRyRmFsbFRocm91Z2g7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wSm5lcVB0ckJyYW5jaCkK
ICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICByMC5pMzIgPSBy
MC5pMzIgPDwgaW50MzJfdCgweDIpOwogICAgclBDLmkgPSByUEMuaSArIHIwLmk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcEpuZXFQdHJGYWxsVGhyb3VnaCkKICAgIHJQ
Qy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8
TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRf
SU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9zd2l0Y2hfaW1tKQogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCAr
IDEyKTsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIGlmIChy
Mi5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25z
dGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzM5X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8
PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7
CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAg
ICBnb3RvIF9vZmZsaW5lYXNtXzM5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgICAg
ICAgIC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fMzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJs
b2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNv
ZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjEuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAv
LyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjAuaSA9
ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM5X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2RvbmUpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsK
ICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDU4OCk7CiAgICByNC5pMzIgPSBy
NC5pMzIgKiBpbnQzMl90KDB4MTApOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThw
ICsgNDApOwogICAgcjIuaSA9IHIyLmkgKyByNC5pOwogICAgaWYgKHIxLmkzMiAhPSBpbnQzMl90
KC0xKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tTm90SW50OwogICAgcjAu
aTMyID0gcjAuaTMyIC0gKkNBU1Q8aW50MzJfdCo+KHIyLmk4cCArIDEyKTsKICAgIGlmIChyMC51
MzIgPj0gKkNBU1Q8dWludDMyX3QqPihyMi5pOHApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
b3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4
cCArIDQpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjQuaThwICsgKHIwLmkzMiA8PCAy
KSArIGludHB0cl90KDB4MCkpOwogICAgaWYgKHIxLmkzMiA9PSAwKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fb3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDsKICAgIHIxLmkzMiA9IHIxLmkzMiA8PCBp
bnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjEuaTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhU
X0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tTm90SW50KQogICAgaWYgKHIxLnUzMiA8IHVp
bnQzMl90KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdzsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aCkKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsKICAgIHIwLmkzMiA9
IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9w
Y29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdykKICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENB
U1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5z
dHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBs
bGludF9zbG93X3BhdGhfc3dpdGNoX2ltbShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29k
ZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAg
clBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDApOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9G
RkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9zd2l0Y2hfY2hhcikKICAgIHIyLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMu
aThwICsgNCk7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80MF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0g
Y2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsg
KHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2lu
ZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV80MF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lOyAgICAgICAgICAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtXzQwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIGNvZGVCbG9jazxhMj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZl
Y3RvckJ1ZmZlcjxhMj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1
ZmZlcjsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxh
MD5dLlRhZzsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5b
aW5kZXg8YTA+XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV80MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgcjIuaSA9ICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA1
ODgpOwogICAgcjQuaTMyID0gcjQuaTMyICogaW50MzJfdCgweDEwKTsKICAgIHIyLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIyLmk4cCArIDUyKTsKICAgIHIyLmkgPSByMi5pICsgcjQuaTsKICAgIGlm
IChyMS5pMzIgIT0gaW50MzJfdCgtNSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQp
OwogICAgaWYgKCpDQVNUPGludDhfdCo+KHIxLmk4cCArIDgpICE9IGludDhfdCgweDUpKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g7CiAgICBpZiAoKkNB
U1Q8aW50MzJfdCo+KHIwLmk4cCArIDEyKSAhPSBpbnQzMl90KDB4MSkpCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIwLmk4cCArIDE2KTsKICAgIGlmIChyMC5pID09IDApCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcFN3aXRjaE9uUm9wZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIDgpOwogICAgaWYgKCgqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgMTYpICYgaW50MzJfdCgw
eDQwKSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNoQ2hhcjhCaXQ7CiAg
ICByMC5pID0gKkNBU1Q8dWludDE2X3QqPihyMS5pOHApOwogICAgZ290byBfb2ZmbGluZWFzbV9v
cFN3aXRjaENoYXJSZWFkeTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
b3BTd2l0Y2hDaGFyOEJpdCkKICAgIHIwLmkgPSAqQ0FTVDx1aW50OF90Kj4ocjEuaThwKTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyUmVhZHkpCiAg
ICByMC5pMzIgPSByMC5pMzIgLSAqQ0FTVDxpbnQzMl90Kj4ocjIuaThwICsgMTIpOwogICAgaWYg
KHIwLnUzMiA+PSAqQ0FTVDx1aW50MzJfdCo+KHIyLmk4cCkpCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIyLmk4cCArIDQpOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjIuaThwICsgKHIwLmkz
MiA8PCAyKSArIGludHB0cl90KDB4MCkpOwogICAgaWYgKHIxLmkzMiA9PSAwKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g7CiAgICByMS5pMzIgPSByMS5p
MzIgPDwgaW50MzJfdCgweDIpOwogICAgclBDLmkgPSByUEMuaSArIHIxLmk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaCkKICAgIHIw
LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8
PCBpbnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wU3dpdGNoT25Sb3BlKQogICAgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVu
Y3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3Rh
dGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3df
cGF0aF9zd2l0Y2hfY2hhcihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChy
ZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSBy
MC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0
MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNN
X09QQ09ERV9MQUJFTChvcF9uZXdfZnVuYykKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oclBDLmk4
cCArIDEyKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BOZXdGdW5jVW5jaGVja2Vk
OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgaWYgKCpDQVNU
PGludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50
MzJfdCgtNikpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcE5ld0Z1bmNEb25lOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcE5ld0Z1bmNVbmNoZWNrZWQpCiAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNU
PEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
ID0gbGxpbnRfc2xvd19wYXRoX25ld19mdW5jKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVj
b2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAg
ICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQu
ZXhlY1N0YXRlPHQxPgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcE5l
d0Z1bmNEb25lKQogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pCiAgICByMC5pID0g
KkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3Qq
PihyUEMuaThwICsgOCk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC02KSkKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX29wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOwogICAgaWYgKCpDQVNUPGludDMyX3Qq
PihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPT0gaW50MzJfdCgtNikp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BUZWFyT2ZmQWN0aXZhdGlv
bkNyZWF0ZWQpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVj
dGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJl
dHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24oZXhl
YywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlv
biwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248
dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkKQogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVY
VF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RF
X0xBQkVMKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cykKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsKICAgIHIwLmkzMiA9IHIwLmkzMiAtIGludDMyX3QoMHgxKTsKICAgIGlm
ICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
ID09IGludDMyX3QoLTYpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BUZWFyT2ZmQXJndW1l
bnRzTm90Q3JlYXRlZDsKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAg
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIElu
c3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRz
KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1
Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkKQog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IHJl
dCByZXN1bHRSZWdJZAovLyBmdW5jdGlvbjogcmV0dXJuIGNmcltyZXN1bHRSZWdJZF07Ci8vIAov
LyAgIFJldHVybiByZWdpc3RlciByZXN1bHQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY3Vy
cmVudAovLyAgIGZ1bmN0aW9uIGNhbGwsIHdyaXRpbmcgaXQgaW50byBmdW5jdGlvblJldHVyblZh
bHVlLgovLyAgIEluIGFkZGl0aW9uLCB1bndpbmQgb25lIGNhbGwgZnJhbWUgYW5kIHJlc3RvcmUg
dGhlIHNjb3BlCi8vICAgY2hhaW4sIGNvZGUgYmxvY2sgaW5zdHJ1Y3Rpb24gcG9pbnRlciBhbmQg
cmVnaXN0ZXIgYmFzZQovLyAgIHRvIHRob3NlIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLgoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3JldCkKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+
KHJQQy5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0SWQ8dDI+ID0gb3Bl
cmFuZHNbcmVzdWx0UmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShjZnJbcmVz
dWx0SWQ8dDI+XSA9PT4gdGFnPHQxPiwgcGF5bG9hZDx0MD4pOwogICAgaWYgKHIyLmkzMiA+PSBp
bnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRl
eDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7
CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29m
ZmxpbmVhc21fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAgICAgICAgLy8gICBn
b3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80MV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0g
Y2ZyLkNvZGVCbG9jazsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQ4NCk7
ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2NrPGEy
Pi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMS5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGEx
PiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5
bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZSkKICAgIC8vIGRvUmV0dXJuKCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgLSAxNik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVyblBDPHQyPiA9IGNmci5SZXR1
cm5QQzsKICAgIGZwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDQwKTsgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gY2ZyLkNhbGxlckZyYW1lOwogICAgclJldFZQQy5pID0gcjIu
aTsKICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZG8gcmV0dXJuOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2NhbGxf
cHV0X3Jlc3VsdCkKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsKICAgICpDQVNUPGludDMyX3Qq
PihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgPSByMS5pMzI7CiAgICAq
Q0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0g
cjAuaTMyOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX3JldF9vYmplY3Rfb3JfdGhpcykKICAgIHIyLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIGlmIChyMi5pMzIgPj0gaW50MzJfdCgweDQw
MDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtXzQyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjEuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
OyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8dWlu
dDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5
bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzQy
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7ICAgICAgICAgIC8vICAgZ290byAuZG9uZTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDJfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4
KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxv
Y2s7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0ODQpOyAgICAgICAgICAg
ICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRS
ZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThw
ICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JC
dWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAu
aThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0g
dmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtXzQyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBp
ZiAocjEuaTMyICE9IGludDMyX3QoLTUpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BSZXRP
YmplY3RPclRoaXNOb3RPYmplY3Q7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAg
KyA0KTsKICAgIGlmICgqQ0FTVDx1aW50OF90Kj4ocjIuaThwICsgOCkgPCB1aW50OF90KDB4ZCkp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDsKICAg
IHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDE2KTsgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmV0dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDOwogICAgZnAuaSA9ICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gNDApOyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSBjZnIuQ2Fs
bGVyRnJhbWU7CiAgICByUmV0VlBDLmkgPSByMi5pOwogICAgZ290byBkb1JldHVybkhlbHBlcjsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyByZXR1cm47CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wUmV0T2JqZWN0T3JUaGlzTm90T2Jq
ZWN0KQogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgaWYgKHIy
LmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0
YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsK
ICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAg
IGdvdG8gX29mZmxpbmVhc21fNDNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAgICAg
ICAgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV80M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29k
ZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMS5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8v
ICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDNfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZSkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDE2KTsg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDOwogICAg
ZnAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gNDApOyAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIgPSBjZnIuQ2FsbGVyRnJhbWU7CiAgICByUmV0VlBDLmkgPSByMi5pOwogICAgZ290
byBkb1JldHVybkhlbHBlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkbyByZXR1cm47CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfdG9fcHJpbWl0aXZlKQog
ICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgcjQuaSA9ICpDQVNU
PHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90KDB4NDAw
MDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0g
KkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7
IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIwLmkgPSAqQ0FTVDx1aW50
MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXls
b2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fNDRf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80NF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNvZGVCbG9j
azsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDQ4NCk7ICAgICAgICAgICAg
ICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2NrPGEyPi5jb25zdGFudFJl
Z2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAg
KyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IHZlY3RvckJ1
ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSB2
ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlm
IChyMS5pMzIgIT0gaW50MzJfdCgtNSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFRvUHJp
bWl0aXZlSXNJbW07CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0KTsKICAg
IGlmICgqQ0FTVDxpbnQ4X3QqPihyMi5pOHAgKyA4KSAhPSBpbnQ4X3QoMHg1KSkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVTbG93Q2FzZTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fb3BUb1ByaW1pdGl2ZUlzSW1tKQogICAgKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKSA9IHIxLmkzMjsKICAg
ICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkg
PSByMC5pMzI7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAg
IG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVTbG93Q2FzZSkK
ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9
IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQgPSBsbGludF9zbG93X3BhdGhfdG9fcHJpbWl0aXZlKGV4ZWMsIHBjKTsKICAgICAgICBM
TEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7
CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIx
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIg
PSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRC
eXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09Q
Q09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX25leHRfcG5hbWUpCiAgICByMS5p
ID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIpOwogICAgcjIuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDE2KTsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAr
IChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGlmIChyMC5pMzIgPT0gKkNBU1Q8
aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lRW5kOwogICAgcjIuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDIwKTsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAr
IChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIyLmk4cCArIDI4KTsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHI0Lmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIHIwLmkzMiA9IHIwLmkzMiArIGludDMy
X3QoMHgxKTsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSkgPSByMC5pMzI7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThw
ICsgNCk7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0
cl90KDB4NCkpID0gaW50MzJfdCgtNSk7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIx
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjQuaTMyOwogICAgcjQuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThw
ICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjQuaThwICsgNCk7CiAgICBpZiAocjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4
cCArIDgpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BOZXh0UG5hbWVTbG93OwogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgMTIpOwogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjAuaThwICsgOCk7CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMC5pOHApID09IDAp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcE5leHRQbmFtZVRhcmdldDsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3Ap
CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHIxLmk4cCArIDIwKSA9PSBpbnQzMl90KC0zKSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lU2xvdzsKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIxLmk4cCArIDE2KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4
cCArIDQpOwogICAgaWYgKHIxLmkgIT0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHApKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fb3BOZXh0UG5hbWVTbG93OwogICAgcjAuaSA9IHIwLmkgKyBpbnRw
dHJfdCgweDQpOwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4ocjAuaThwKSAhPSAwKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fb3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lVGFyZ2V0KQogICAgcjAu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDI0KTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8
PCBpbnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lRW5kKQogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4MWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9vcE5leHRQbmFtZVNsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcy
KTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAg
ICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAg
ICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX25leHRfcG5hbWUo
ZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVj
dGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rp
b248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogY2F0Y2ggZXgocikKLy8g
Ci8vICAgUmV0cmlldmVzIHRoZSBWTSdzIGN1cnJlbnQgZXhjZXB0aW9uIGFuZCBwdXRzIGl0IGlu
IHJlZ2lzdGVyCi8vICAgZXguIFRoaXMgaXMgb25seSB2YWxpZCBhZnRlciBhbiBleGNlcHRpb24g
aGFzIGJlZW4gcmFpc2VkLAovLyAgIGFuZCB1c3VhbGx5IGZvcm1zIHRoZSBiZWdpbm5pbmcgb2Yg
YW4gZXhjZXB0aW9uIGhhbmRsZXIuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfY2F0Y2gp
CiAgICBmcC5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmciA9IGNhdGNoZXJGcmFtZTx0MD47CiAgICByNC5pID0gKkNBU1Q8aW50cHRy
X3QqPigoYXNzZXJ0KDAgPT0gb2Zmc2V0b2YoSklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkpLCAm
c3AtPmdsb2JhbERhdGEpKTsgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5n
bG9iYWxEYXRhOwogICAgclBDLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHI0Lmk4cCArIDY1ODQpOyAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IGdsb2JhbERhdGEudGFyZ2V0SW50ZXJwcmV0ZXJQQ0Zv
clRocm93OwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjQuaThwICsgNjU0NCk7ICAgICAg
ICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQwPiA9IGdsb2JhbERhdGEuZXhjZXB0aW9uLlBheWxv
YWQ7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyNC5pOHAgKyA2NTQ4KTsgICAgICAgICAg
ICAgICAgICAgIC8vIHRhZzx0MT4gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5UYWc7CiAgICAqQ0FT
VDxpbnQzMl90Kj4ocjQuaThwICsgNjU0NCkgPSBpbnQzMl90KDB4MCk7ICAgICAgICAgICAgIC8v
IGdsb2JhbERhdGEuZXhjZXB0aW9uLlBheWxvYWQgPSAwOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0
Lmk4cCArIDY1NDgpID0gaW50MzJfdCgtNik7ICAgICAgICAgICAgICAvLyBnbG9iYWxEYXRhLmV4
Y2VwdGlvbi5UYWcgPSBFbXB0eVZhbHVlVGFnOwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBleFJlZ0lkPHQyPiA9IG9wZXJh
bmRzWzBdOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKSA9IHIwLmkzMjsgLy8gY2ZyW2V4UmVnSWQ8dDI+XS5QYXlsb2FkID0gcGF5bG9h
ZDx0MD47CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0
cl90KDB4NCkpID0gcjEuaTMyOyAvLyBjZnJbZXhSZWdJZDx0Mj5dLlRhZyA9IHRhZzx0MT47CiAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg4
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZW5kKQogICAgcjAuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgLy8gYXNzZXJ0KGluZGV4PGEwPiA8IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKICAgIC8vIG1hY3JvIGFzc2VydChhc3NlcnRpb24p
IHsKICAgIGlmIChyMC5pMzIgPCBpbnQzMl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzQ0X2Fzc2VydF9fb2s7CiAgICAvLyBtYWNybyBj
cmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzQ0X2Fzc2VydF9fb2sp
CiAgICAvLyB9IEVORCBhc3NlcnQuCiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAg
KyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7CiAgICByMC5pID0gKkNBU1Q8dWludDMy
X3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICByMi5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHJl
dHVyblBDPHQyPiA9IGNmci5SZXR1cm5QQzsKICAgIGZwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDQwKTsgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gY2ZyLkNhbGxlckZyYW1l
OwogICAgclJldFZQQy5pID0gcjIuaTsKICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gcmV0dXJuOwoKT0ZGTElORV9BU01f
R0xVRV9MQUJFTChsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUs
IGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDE+ID0gaml0
U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIx
Lmk4cCArIDY1NzYpOyAgICAgICAgICAgICAgICAgICAgLy8gY2FsbEZyYW1lPHQwPiA9IGdsb2Jh
bERhdGE8dDE+LmNhbGxGcmFtZUZvclRocm93OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyMS5pOHAgKyA2NTgwKTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
R0xVRV9MQUJFTChsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKQogICAgcjIuaSA9
IHJSZXRWUEMuaTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KChhc3NlcnQoMCA9PSBvZmZz
ZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRhKSksICZzcC0+Z2xvYmFsRGF0YSkpOwogICAg
cjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNjU3Nik7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHIxLmk4cCArIDY1ODApOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpP
RkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbmV3X2FycmF5KQogICAgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVu
Y3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3Rh
dGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3df
cGF0aF9uZXdfYXJyYXkoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVz
dWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBy
ZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9u
KGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4o
ZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMu
dnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhf
bmV3X2FycmF5X2J1ZmZlcihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChy
ZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSBy
MC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0
MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNN
X09QQ09ERV9MQUJFTChvcF9uZXdfcmVnZXhwKQogICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJn
MSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52
cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7
CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9uZXdf
cmVnZXhwKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAu
aW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmlu
c3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9J
TlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX2xlc3MpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0
cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0
aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2xlc3MoZXhlYywgcGMpOwogICAg
ICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0
YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5p
ID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7
ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbGVzc2VxKQogICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
Q0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJ
bnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9
IGxsaW50X3Nsb3dfcGF0aF9sZXNzZXEoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVS
ZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQ
Qy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVj
U3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAg
IG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZM
SU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ3JlYXRlcikKICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9u
KGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4o
ZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMu
dnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhf
Z3JlYXRlcihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
Lmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5p
bnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQ
Qy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8
TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRf
SU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9ncmVhdGVyZXEpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsK
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAg
ICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2dyZWF0ZXJlcShleGVj
LCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9u
LCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0
MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkg
KyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyAr
IHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUq
PihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047
CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9tb2Qp
CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMg
PSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX21vZChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRl
Y29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQog
ICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0
LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsK
Ck9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF90eXBlb2YpCiAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5j
dGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0
ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4o
clBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19w
YXRoX3R5cGVvZihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQs
IHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3Vs
dC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5F
WFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09E
RV9MQUJFTChvcF9pc19vYmplY3QpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcy
KTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAg
ICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAg
ICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2lzX29iamVjdChl
eGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0
aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlv
bjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9p
c19mdW5jdGlvbikKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3Ry
dWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRo
UmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfaXNfZnVuY3Rpb24oZXhlYywgcGMp
OwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEu
ZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAg
ICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50
cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXpl
b2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBD
Lmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAg
RElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfaW4pCiAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNU
PEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
ID0gbGxpbnRfc2xvd19wYXRoX2luKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVz
dWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMu
aSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0
YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAg
IC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX3Jlc29sdmUpCiAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihh
cmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZw
LnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZw
KTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3Jl
c29sdmUoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5p
bnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5z
dHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfcmVzb2x2ZV9za2lwKQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7
CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAg
U2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3NraXAo
ZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVj
dGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rp
b248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bf
cmVzb2x2ZV9iYXNlKQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Jhc2UoZXhlYywg
cGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwg
cjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+
CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsg
aW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBz
aXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4o
clBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cykKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwog
ICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAg
IEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5
X2V4aXN0cyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
Lmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5p
bnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQ
Qy5pID0gclBDLmkgKyBpbnRwdHJfdCgweGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8
TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRf
SU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9yZXNvbHZlX3dpdGhfYmFzZSkKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEs
IGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnAp
OwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwog
ICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcmVzb2x2
ZV93aXRoX2Jhc2UoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0
LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgxNCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBO
RVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfcmVzb2x2ZV93aXRoX3RoaXMpCiAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihh
cmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZw
LnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZw
KTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3Jl
c29sdmVfd2l0aF90aGlzKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJl
c3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIw
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQx
PgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX2RlbF9ieV9pZCkKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEs
IGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnAp
OwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwog
ICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfZGVsX2J5
X2lkKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5z
dHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3Ry
dWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkg
PSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNU
UlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVM
KG9wX2RlbF9ieV92YWwpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJ
bnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2RlbF9ieV92YWwoZXhlYywg
cGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwg
cjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+
CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsg
aW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBz
aXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4o
clBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0X2J5
X2luZGV4KQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhl
Y1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rp
b24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaW5kZXgoZXhlYywgcGMpOwog
ICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhl
Y1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBm
cC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRy
X3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2Yo
Y3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0X2dldHRlcl9z
ZXR0ZXIpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlv
biogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVy
blR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3B1dF9nZXR0ZXJfc2V0dGVyKGV4ZWMsIHBj
KTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIx
LmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgog
ICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4MTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQ
Qy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAg
IERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2ptcF9zY29w
ZXMpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiog
cGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5
cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2ptcF9zY29wZXMoZXhlYywgcGMpOwogICAgICAg
IExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRl
KTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0g
cjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
ciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgw
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbG9vcF9pZl90cnVlKQogICAg
Ly8gbm9wCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfanRydWUpCiAgICByMS5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpIHsKICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKC4uLik7CiAgICAvLyBtYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ss
IHBheWxvYWQpIHsKICAgIGlmIChyMS5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fanVtcFRydWVP
ckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDRfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OwogICAgLy8gICB0YWdDaGVjayhjZnJb
aW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC0yKSkgLy8gICBpZiAoYWN0dWFsVGFnICE9
IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fanVtcFRy
dWVPckZhbHNlX19zbG93OwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIx
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQgPSBjZnJbaW5kZXhdLlBh
eWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRfXzQ0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzQ0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkKICAg
IHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBjb2RlQmxvY2s8cGF5bG9hZD4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjAuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZl
Y3RvckJ1ZmZlcjxwYXlsb2FkPiA9IGNvZGVCbG9jazxwYXlsb2FkPi5jb25zdGFudFJlZ2lzdGVy
cy52ZWN0b3JlQnVmZmVyOwogICAgLy8gICB0YWdDaGVjayh2ZWN0b3JCdWZmZXI8cGF5bG9hZD5b
aW5kZXhdLlRhZyk7CiAgICBpZiAoKkNBU1Q8aW50MzJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDQpKSAhPSBpbnQzMl90KC0yKSkgLy8gICBpZiAoYWN0dWFsVGFnICE9
IGV4cGVjdGVkVGFnKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fanVtcFRy
dWVPckZhbHNlX19zbG93OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIx
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQgPSB2ZWN0b3JCdWZmZXI8
cGF5bG9hZD5baW5kZXhdLlBheWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ0
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKQogICAgLy8gfSBF
TkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20uCiAgICAvLyB9
IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZC4KICAgIGlmIChyMC5pMzIg
IT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fdGFyZ2V0Owog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8g
TkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX3RhcmdldCkKICAgIHIwLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBp
bnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhU
X0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fc2xvdykKICAgIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBD
IGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhl
Y1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rp
b24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9z
bG93X3BhdGhfanRydWUoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVz
dWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBy
ZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3BfbG9vcF9pZl9mYWxzZSkKICAgIC8vIG5vcAoKT0ZGTElORV9BU01fT1BD
T0RFX0xBQkVMKG9wX2pmYWxzZSkKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAg
KyA0KTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBl
eHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykgewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRUYWdDdXN0b20oLi4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHIx
LmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IGlmIChpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX180NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fY29uc3RhbnQ7CiAgICAvLyAgIHRhZ0NoZWNrKGNmcltpbmRleF0uVGFnKTsKICAgIGlmICgq
Q0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9
IGludDMyX3QoLTIpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNs
b3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80NV9qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3c7CiAg
ICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9hZDsKICAgIGdvdG8gX29m
ZmxpbmVhc21fanVtcFRydWVPckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9f
NDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8vICAgZ290
byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fanVtcFRydWVP
ckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDVfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxw
YXlsb2FkPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPHBheWxvYWQ+
ID0gY29kZUJsb2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvcmVCdWZmZXI7CiAg
ICAvLyAgIHRhZ0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uVGFnKTsKICAgIGlm
ICgqQ0FTVDxpbnQzMl90Kj4ocjAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkp
ICE9IGludDMyX3QoLTIpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8g
LnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80NV9qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3c7
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0u
UGF5bG9hZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fanVtcFRydWVP
ckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDVfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbS4KICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkLgogICAgaWYgKHIwLmkzMiA9PSAwKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fNDVfanVtcFRydWVPckZhbHNlX190YXJnZXQ7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHhjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtXzQ1X2p1bXBUcnVlT3JGYWxzZV9fdGFyZ2V0KQogICAgcjAuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3QoMHgy
KTsKICAgIHJQQy5pID0gclBDLmkgKyByMC5pOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fNDVfanVtcFRydWVPckZhbHNlX19zbG93KQogICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rp
b24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUq
PihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQ
Qy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0
aF9qZmFsc2UoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCBy
MC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQu
aW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhU
X0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVf
TEFCRUwob3BfbG9vcF9pZl9sZXNzKQogICAgLy8gbm9wCgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3Bfamxlc3MpCiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAg
ICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7CiAgICBpZiAocjIuaTMyID49
IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGlu
ZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX180NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFn
OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwog
ICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX180NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2NvbXBhcmVfXzQ1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGNvZGVCbG9jazxhMj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZl
cjxhMj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAg
IHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDQpKTsgLy8gICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlRhZzsK
ICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+
XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJl
X180NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbWFjcm86IGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAgIGlmIChyNC5pMzIg
Pj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAo
aW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ1X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19jb25zdGFudDsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChy
NC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEw
Pl0uVGFnOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPl0uUGF5
bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fNDVfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2RvbmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fY29tcGFyZV9fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Nv
bnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjIu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAv
LyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2RlQmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZl
Y3RvckJ1ZmZlcjsKICAgIHI0LmkzMiA9IHI0LmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBieXRlSW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAg
ICByMi5pID0gcjIuaSArIHI0Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07
CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIyLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRhZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fY29tcGFyZV9fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUp
CiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZy4KICAgIGlmIChy
MC5pMzIgIT0gaW50MzJfdCgtMSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX19v
cDFOb3RJbnQ7CiAgICBpZiAocjIuaTMyICE9IGludDMyX3QoLTEpKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fY29tcGFyZV9fb3AyTm90SW50OwogICAgaWYgKHIxLmkzMiA8IHI0LmkzMikKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNU
SU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludCkKICAgIGlmIChyMC51MzIgPiB1aW50MzJfdCgt
NykpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX19zbG93OwogICAgaWYgKHIyLnUz
MiA8IHVpbnQzMl90KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5v
dEludE9wMkRvdWJsZTsKICAgIGlmIChyMi5pMzIgIT0gaW50MzJfdCgtMSkpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9jb21wYXJlX19zbG93OwogICAgZDEuZCA9IHI0LmkzMjsKICAgIGdvdG8g
X29mZmxpbmVhc21fY29tcGFyZV9fb3AxTm90SW50UmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkKICAgIGQxLmQg
PSBJbnRzMkRvdWJsZShyNC51MzIsIHIyLnUzMik7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludFJlYWR5KQogICAgZDAuZCA9IEludHMyRG91
YmxlKHIxLnUzMiwgcjAudTMyKTsKICAgIGlmIChkMC5kIDwgZDEuZCkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRy
X3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2Yo
Y3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Nv
bXBhcmVfX29wMk5vdEludCkKICAgIGQwLmQgPSByMS5pMzI7CiAgICBpZiAocjIudTMyID4gdWlu
dDMyX3QoLTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fc2xvdzsKICAgIGQx
LmQgPSBJbnRzMkRvdWJsZShyNC51MzIsIHIyLnUzMik7CiAgICBpZiAoZDAuZCA8IGQxLmQpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9jb21wYXJlX19qdW1wVGFyZ2V0KQogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90
Kj4oclBDLmk4cCArIDEyKTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7CiAg
ICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4o
clBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2NvbXBhcmVfX3Nsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsK
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAg
ICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2psZXNzKGV4ZWMsIHBj
KTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIx
LmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgog
ICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQ
Qy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAg
IERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IGpubGVzcyBzcmMxKHIpIHNyYzIocikg
dGFyZ2V0KG9mZnNldCkKLy8gCi8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBs
ZXNzIHRoYW4gcmVnaXN0ZXIgc3JjMiwgYXMKLy8gICB3aXRoIHRoZSBFQ01BU2NyaXB0ICc8JyBv
cGVyYXRvciwgYW5kIHRoZW4ganVtcHMgdG8gb2Zmc2V0Ci8vICAgdGFyZ2V0IGZyb20gdGhlIGN1
cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlmIHRoZSAKLy8gICByZXN1bHQgb2YgdGhl
IGNvbXBhcmlzb24gaXMgZmFsc2UuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bfam5sZXNz
KQogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgcjQuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90KDB4
NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fY29tcGFyZV9fNDZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7
CiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29m
ZmxpbmVhc21fY29tcGFyZV9fNDZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgLy8gICBn
b3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJl
X180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTI+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29k
ZUJsb2NrPGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8v
ICAgdGFnPGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vICAgcGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNDZfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjQuaTMyID49IGludDMyX3Qo
MHg0MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9jb21wYXJlX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29u
c3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAg
IHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19k
b25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2NvbXBhcmVfXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAg
IHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBjb2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIyLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JC
dWZmZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7
CiAgICByNC5pMzIgPSByNC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIy
LmkgKyByNC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNv
bnN0YW50PGExPiA9ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjQuaSA9
ICpDQVNUPGludHB0cl90Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAg
IHBheWxvYWQ8YTI+ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMi5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9
IGNvbnN0YW50PGExPi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBF
TkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjAuaTMyICE9IGlu
dDMyX3QoLTEpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDZfY29tcGFyZV9fb3AxTm90SW50
OwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzQ2X2NvbXBhcmVfX29wMk5vdEludDsKICAgIGlmIChyMS5pMzIgPj0gcjQuaTMyKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fNDZfY29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fNDZfY29tcGFyZV9fb3AxTm90SW50KQogICAgaWYgKHIwLnUzMiA+IHVpbnQzMl90
KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ2X2NvbXBhcmVfX3Nsb3c7CiAgICBpZiAo
cjIudTMyIDwgdWludDMyX3QoLTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDZfY29tcGFy
ZV9fb3AxTm90SW50T3AyRG91YmxlOwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ2X2NvbXBhcmVfX3Nsb3c7CiAgICBkMS5kID0gcjQuaTMy
OwogICAgZ290byBfb2ZmbGluZWFzbV80Nl9jb21wYXJlX19vcDFOb3RJbnRSZWFkeTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDZfY29tcGFyZV9fb3AxTm90SW50T3Ay
RG91YmxlKQogICAgZDEuZCA9IEludHMyRG91YmxlKHI0LnUzMiwgcjIudTMyKTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDZfY29tcGFyZV9fb3AxTm90SW50UmVhZHkp
CiAgICBkMC5kID0gSW50czJEb3VibGUocjEudTMyLCByMC51MzIpOwogICAgaWYgKGlzbmFuKGQw
LmQpIHx8IGlzbmFuKGQxLmQpCiAgICAgICAgfHwgKGQwLmQgPj0gZDEuZCkpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV80Nl9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV80Nl9jb21wYXJlX19vcDJOb3RJbnQpCiAgICBkMC5kID0gcjEuaTMyOwogICAgaWYgKHIy
LnUzMiA+IHVpbnQzMl90KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ2X2NvbXBhcmVf
X3Nsb3c7CiAgICBkMS5kID0gSW50czJEb3VibGUocjQudTMyLCByMi51MzIpOwogICAgaWYgKGlz
bmFuKGQwLmQpIHx8IGlzbmFuKGQxLmQpCiAgICAgICAgfHwgKGQwLmQgPj0gZDEuZCkpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV80Nl9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV80Nl9jb21wYXJlX19qdW1wVGFyZ2V0KQogICAgcjAuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDEyKTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7
CiAgICByUEMuaSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtXzQ2X2NvbXBhcmVfX3Nsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBh
cmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2pubGVzcyhl
eGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0
aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlv
bjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJ
T047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9s
b29wX2lmX2dyZWF0ZXIpCiAgICAvLyBub3AKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9q
Z3JlYXRlcikKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA0KTsKICAgIHI0
LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyA4KTsKICAgIGlmIChyMi5pMzIgPj0gaW50
MzJfdCgweDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8
YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50OwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAz
KSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5UYWc7CiAg
ICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+LlBheWxvYWQ7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7
IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
Y29tcGFyZV9fNDdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAg
Y29kZUJsb2NrPGEyPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPGEy
PiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yQnVmZmVyOwogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4
NCkpOyAvLyAgIHRhZzxhMT4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOwogICAg
cjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlBh
eWxvYWQ7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ3
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAvLyBtYWNybzogbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkgewogICAgaWYgKHI0LmkzMiA+PSBp
bnQzMl90KDB4NDAwMDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRl
eDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fNDdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2NvbnN0YW50OwogICAgcjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHI0Lmkz
MiA8PCAzKSArIGludHB0cl90KDB4NCkpOyAvLyAgIHRhZzxhMT4gPSBjZnJbaW5kZXg8YTA+XS5U
YWc7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2Fk
OwogICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9jb21wYXJlX180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3Rh
bnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAg
ICAgICAgICAgIC8vICAgY29kZUJsb2NrPGExPiA9IGNmci5Db2RlQmxvY2s7CiAgICByMi5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAg
dmVjdG9yQnVmZmVyPGExPiA9IGNvZGVCbG9jazxhMT4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9y
QnVmZmVyOwogICAgcjQuaTMyID0gcjQuaTMyIDw8IGludDMyX3QoMHgzKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIGJ5dGVJbmRleDxhMD4gPSBpbmRleDxhMD4gPDwgMzsKICAgIHIy
LmkgPSByMi5pICsgcjQuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGExPltieXRlSW5kZXg8YTA+XTsKICAg
IHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gICBwYXlsb2FkPGEyPiA9IGNvbnN0YW50PGExPi5QYXlsb2FkOwogICAgcjIuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjIuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRh
ZzxhMT4gPSBjb25zdGFudDxhMT4uVGFnOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9jb21wYXJlX180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkKICAg
IC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnLgogICAgaWYgKHIwLmkz
MiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ3X2NvbXBhcmVfX29w
MU5vdEludDsKICAgIGlmIChyMi5pMzIgIT0gaW50MzJfdCgtMSkpCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV80N19jb21wYXJlX19vcDJOb3RJbnQ7CiAgICBpZiAocjEuaTMyID4gcjQuaTMyKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDdfY29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5p
ID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJ
bnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5T
VFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fNDdfY29tcGFyZV9fb3AxTm90SW50KQogICAgaWYgKHIwLnUzMiA+IHVp
bnQzMl90KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ3X2NvbXBhcmVfX3Nsb3c7CiAg
ICBpZiAocjIudTMyIDwgdWludDMyX3QoLTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDdf
Y29tcGFyZV9fb3AxTm90SW50T3AyRG91YmxlOwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0x
KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ3X2NvbXBhcmVfX3Nsb3c7CiAgICBkMS5kID0g
cjQuaTMyOwogICAgZ290byBfb2ZmbGluZWFzbV80N19jb21wYXJlX19vcDFOb3RJbnRSZWFkeTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDdfY29tcGFyZV9fb3AxTm90
SW50T3AyRG91YmxlKQogICAgZDEuZCA9IEludHMyRG91YmxlKHI0LnUzMiwgcjIudTMyKTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDdfY29tcGFyZV9fb3AxTm90SW50
UmVhZHkpCiAgICBkMC5kID0gSW50czJEb3VibGUocjEudTMyLCByMC51MzIpOwogICAgaWYgKGQw
LmQgPiBkMS5kKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDdfY29tcGFyZV9fanVtcFRhcmdl
dDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDdfY29tcGFyZV9fb3AyTm90SW50KQogICAgZDAu
ZCA9IHIxLmkzMjsKICAgIGlmIChyMi51MzIgPiB1aW50MzJfdCgtNykpCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV80N19jb21wYXJlX19zbG93OwogICAgZDEuZCA9IEludHMyRG91YmxlKHI0LnUz
MiwgcjIudTMyKTsKICAgIGlmIChkMC5kID4gZDEuZCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzQ3X2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgx
MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzQ3X2NvbXBh
cmVfX2p1bXBUYXJnZXQpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIp
OwogICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3QoMHgyKTsKICAgIHJQQy5pID0gclBDLmkg
KyByMC5pOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDdfY29tcGFyZV9f
c2xvdykKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9u
KiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfamdyZWF0ZXIoZXhlYywgcGMpOwogICAgICAg
IExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRl
KTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0g
cjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
ciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgw
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bfam5ncmVhdGVyKQogICAgcjIu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgcjQuaSA9ICpDQVNUPHVpbnQz
Ml90Kj4oclBDLmk4cCArIDgpOwogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDAp
KSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fY29tcGFyZV9fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0
KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDx1
aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBw
YXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21f
Y29tcGFyZV9fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgLy8gICBnb3RvIC5kb25l
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX180OF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0g
Y2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4NCk7
ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2NrPGEy
Pi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGEx
PiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5
bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNDhfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZSkKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhp
bmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjQuaTMyID49IGludDMyX3QoMHg0MDAwMDAw
MCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9jb21wYXJlX180OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAg
ICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHI0LmkgPSAq
Q0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZs
aW5lYXNtX2NvbXBhcmVfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOyAvLyAg
IGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBh
cmVfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIyLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBj
b2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIyLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+
ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5p
MzIgPSByNC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkgKyByNC5p
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50PGEx
PiA9ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjQuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8
YTI+ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihy
Mi5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50
PGExPi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVf
XzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjAuaTMyICE9IGludDMyX3QoLTEp
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDhfY29tcGFyZV9fb3AxTm90SW50OwogICAgaWYg
KHIyLmkzMiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ4X2NvbXBh
cmVfX29wMk5vdEludDsKICAgIGlmIChyMS5pMzIgPD0gcjQuaTMyKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fNDhfY29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMu
aThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
NDhfY29tcGFyZV9fb3AxTm90SW50KQogICAgaWYgKHIwLnUzMiA+IHVpbnQzMl90KC03KSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ4X2NvbXBhcmVfX3Nsb3c7CiAgICBpZiAocjIudTMyIDwg
dWludDMyX3QoLTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDhfY29tcGFyZV9fb3AxTm90
SW50T3AyRG91YmxlOwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtXzQ4X2NvbXBhcmVfX3Nsb3c7CiAgICBkMS5kID0gcjQuaTMyOwogICAgZ290
byBfb2ZmbGluZWFzbV80OF9jb21wYXJlX19vcDFOb3RJbnRSZWFkeTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDhfY29tcGFyZV9fb3AxTm90SW50T3AyRG91YmxlKQog
ICAgZDEuZCA9IEludHMyRG91YmxlKHI0LnUzMiwgcjIudTMyKTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fNDhfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpCiAgICBkMC5k
ID0gSW50czJEb3VibGUocjEudTMyLCByMC51MzIpOwogICAgaWYgKGlzbmFuKGQwLmQpIHx8IGlz
bmFuKGQxLmQpCiAgICAgICAgfHwgKGQwLmQgPD0gZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV80OF9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90
KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1
cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHAp
OyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80OF9j
b21wYXJlX19vcDJOb3RJbnQpCiAgICBkMC5kID0gcjEuaTMyOwogICAgaWYgKHIyLnUzMiA+IHVp
bnQzMl90KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzQ4X2NvbXBhcmVfX3Nsb3c7CiAg
ICBkMS5kID0gSW50czJEb3VibGUocjQudTMyLCByMi51MzIpOwogICAgaWYgKGlzbmFuKGQwLmQp
IHx8IGlzbmFuKGQxLmQpCiAgICAgICAgfHwgKGQwLmQgPD0gZDEuZCkpCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV80OF9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQ
Qy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAg
IERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV80OF9jb21wYXJlX19qdW1wVGFyZ2V0KQogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBD
Lmk4cCArIDEyKTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7CiAgICByUEMu
aSA9IHJQQy5pICsgcjAuaTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElT
UEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzQ4
X2NvbXBhcmVfX3Nsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJ
bnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2puZ3JlYXRlcihleGVjLCBw
Yyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCBy
MS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4K
ICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNp
emVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihy
UEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9sb29wX2lm
X2xlc3NlcSkKICAgIC8vIG5vcAoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2psZXNzZXEp
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICByNC5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgOCk7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0
MDAwMDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV9jb21wYXJlX180OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsK
ICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9
ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2Zm
bGluZWFzbV9jb21wYXJlX180OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOyAvLyAgIGdv
dG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVf
XzQ5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9j
azxhMj4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMj4gPSBjb2Rl
QmxvY2s8YTI+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIwLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8g
ICB0YWc8YTE+ID0gdmVjdG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX180OV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgLy8gbWFjcm86IGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpIHsKICAgIGlmIChyNC5pMzIgPj0gaW50MzJfdCgw
eDQwMDAwMDAwKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25z
dGFudDsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAg
cjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOyAvLyAgIHBheWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPl0uUGF5bG9hZDsKICAgIGdv
dG8gX29mZmxpbmVhc21fY29tcGFyZV9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmU7IC8vICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fY29tcGFyZV9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KQogICAg
cjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAg
ICAvLyAgIGNvZGVCbG9jazxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjIuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjIuaThwICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1
ZmZlcjxhMT4gPSBjb2RlQmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsK
ICAgIHI0LmkzMiA9IHI0LmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICBieXRlSW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByMi5pID0gcjIu
aSArIHI0Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29u
c3RhbnQ8YTE+ID0gJnZlY3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICByNC5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMi5pOHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAg
cGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIyLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0g
Y29uc3RhbnQ8YTE+LlRhZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
Y29tcGFyZV9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpCiAgICAvLyB9IEVO
RCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZy4KICAgIGlmIChyMC5pMzIgIT0gaW50
MzJfdCgtMSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80OV9jb21wYXJlX19vcDFOb3RJbnQ7
CiAgICBpZiAocjIuaTMyICE9IGludDMyX3QoLTEpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
NDlfY29tcGFyZV9fb3AyTm90SW50OwogICAgaWYgKHIxLmkzMiA8PSByNC5pMzIpCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV80OV9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMu
aSArIGludHB0cl90KDB4MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBj
ICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29k
ZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElP
TjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV80OV9jb21wYXJlX19vcDFOb3RJbnQpCiAgICBpZiAocjAudTMyID4gdWludDMyX3Qo
LTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDlfY29tcGFyZV9fc2xvdzsKICAgIGlmIChy
Mi51MzIgPCB1aW50MzJfdCgtNykpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80OV9jb21wYXJl
X19vcDFOb3RJbnRPcDJEb3VibGU7CiAgICBpZiAocjIuaTMyICE9IGludDMyX3QoLTEpKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fNDlfY29tcGFyZV9fc2xvdzsKICAgIGQxLmQgPSByNC5pMzI7
CiAgICBnb3RvIF9vZmZsaW5lYXNtXzQ5X2NvbXBhcmVfX29wMU5vdEludFJlYWR5OwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80OV9jb21wYXJlX19vcDFOb3RJbnRPcDJE
b3VibGUpCiAgICBkMS5kID0gSW50czJEb3VibGUocjQudTMyLCByMi51MzIpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80OV9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkK
ICAgIGQwLmQgPSBJbnRzMkRvdWJsZShyMS51MzIsIHIwLnUzMik7CiAgICBpZiAoZDAuZCA8PSBk
MS5kKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNDlfY29tcGFyZV9fanVtcFRhcmdldDsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5F
WFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fNDlfY29tcGFyZV9fb3AyTm90SW50KQogICAgZDAuZCA9IHIx
LmkzMjsKICAgIGlmIChyMi51MzIgPiB1aW50MzJfdCgtNykpCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV80OV9jb21wYXJlX19zbG93OwogICAgZDEuZCA9IEludHMyRG91YmxlKHI0LnUzMiwgcjIu
dTMyKTsKICAgIGlmIChkMC5kIDw9IGQxLmQpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80OV9j
b21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRl
Y29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09E
RSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80OV9jb21wYXJlX19q
dW1wVGFyZ2V0KQogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDEyKTsKICAg
IHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5pICsgcjAu
aTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzQ5X2NvbXBhcmVfX3Nsb3cp
CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMg
PSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2psZXNzZXEoZXhlYywgcGMpOwogICAgICAgIExMSW50
OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAg
IH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJl
c3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bfam5sZXNzZXEpCiAgICByMi5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihy
UEMuaThwICsgOCk7CiAgICBpZiAocjIuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21w
YXJlX181MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8g
ICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90
Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBheWxvYWQ8
YTI+ID0gY2ZyW2luZGV4PGEwPi5QYXlsb2FkOwogICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJl
X181MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOyAvLyAgIGdvdG8gLmRvbmU7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzUwX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThw
IC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMj4gPSBjZnIuQ29k
ZUJsb2NrOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgNDg0KTsgICAgICAg
ICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMj4gPSBjb2RlQmxvY2s8YTI+LmNvbnN0
YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIx
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQpKTsgLy8gICB0YWc8YTE+ID0gdmVj
dG9yQnVmZmVyPGEyPltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkPGEy
PiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5QYXlsb2FkOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX181MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lKQogICAgLy8gbWFjcm86IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0
YWcsIHBheWxvYWQpIHsKICAgIGlmIChyNC5pMzIgPj0gaW50MzJfdCgweDQwMDAwMDAwKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Nv
bXBhcmVfXzUwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudDsKICAgIHIyLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQp
KTsgLy8gICB0YWc8YTE+ID0gY2ZyW2luZGV4PGEwPl0uVGFnOwogICAgcjQuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyAgIHBh
eWxvYWQ8YTI+ID0gY2ZyW2luZGV4PGEwPl0uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21f
Y29tcGFyZV9fNTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU7IC8vICAgZ290byAu
ZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNTBf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9j
azxhMT4gPSBjZnIuQ29kZUJsb2NrOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThw
ICsgNDg0KTsgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlY3RvckJ1ZmZlcjxhMT4gPSBjb2Rl
QmxvY2s8YTE+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvckJ1ZmZlcjsKICAgIHI0LmkzMiA9IHI0
LmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBieXRl
SW5kZXg8YTA+ID0gaW5kZXg8YTA+IDw8IDM7CiAgICByMi5pID0gcjIuaSArIHI0Lmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc3RhbnQ8YTE+ID0gJnZl
Y3RvckJ1ZmZlcjxhMT5bYnl0ZUluZGV4PGEwPl07CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMi5pOHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBj
b25zdGFudDxhMT4uUGF5bG9hZDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCAr
IDQpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY29uc3RhbnQ8YTE+LlRh
ZzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNTBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZy4KICAgIGlmIChyMC5pMzIgIT0gaW50MzJfdCgtMSkpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV81MF9jb21wYXJlX19vcDFOb3RJbnQ7CiAgICBpZiAocjIuaTMy
ICE9IGludDMyX3QoLTEpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNTBfY29tcGFyZV9fb3Ay
Tm90SW50OwogICAgaWYgKHIxLmkzMiA+IHI0LmkzMikKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzUwX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgx
MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzUwX2NvbXBh
cmVfX29wMU5vdEludCkKICAgIGlmIChyMC51MzIgPiB1aW50MzJfdCgtNykpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV81MF9jb21wYXJlX19zbG93OwogICAgaWYgKHIyLnUzMiA8IHVpbnQzMl90
KC03KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUwX2NvbXBhcmVfX29wMU5vdEludE9wMkRv
dWJsZTsKICAgIGlmIChyMi5pMzIgIT0gaW50MzJfdCgtMSkpCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV81MF9jb21wYXJlX19zbG93OwogICAgZDEuZCA9IHI0LmkzMjsKICAgIGdvdG8gX29mZmxp
bmVhc21fNTBfY29tcGFyZV9fb3AxTm90SW50UmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzUwX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkKICAgIGQxLmQg
PSBJbnRzMkRvdWJsZShyNC51MzIsIHIyLnUzMik7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzUwX2NvbXBhcmVfX29wMU5vdEludFJlYWR5KQogICAgZDAuZCA9IEludHMy
RG91YmxlKHIxLnUzMiwgcjAudTMyKTsKICAgIGlmIChpc25hbihkMC5kKSB8fCBpc25hbihkMS5k
KQogICAgICAgIHx8IChkMC5kID4gZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV81MF9j
b21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRl
Y29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09E
RSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV81MF9jb21wYXJlX19v
cDJOb3RJbnQpCiAgICBkMC5kID0gcjEuaTMyOwogICAgaWYgKHIyLnUzMiA+IHVpbnQzMl90KC03
KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUwX2NvbXBhcmVfX3Nsb3c7CiAgICBkMS5kID0g
SW50czJEb3VibGUocjQudTMyLCByMi51MzIpOwogICAgaWYgKGlzbmFuKGQwLmQpIHx8IGlzbmFu
KGQxLmQpCiAgICAgICAgfHwgKGQwLmQgPiBkMS5kKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzUwX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgx
MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzUwX2NvbXBh
cmVfX2p1bXBUYXJnZXQpCiAgICByMC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIp
OwogICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3QoMHgyKTsKICAgIHJQQy5pID0gclBDLmkg
KyByMC5pOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNTBfY29tcGFyZV9f
c2xvdykKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9u
KiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfam5sZXNzZXEoZXhlYywgcGMpOwogICAgICAg
IExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRl
KTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0g
cjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
ciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgw
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbG9vcF9pZl9ncmVhdGVyZXEp
CiAgICAvLyBub3AKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9qZ3JlYXRlcmVxKQogICAg
cjIuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgcjQuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oclBDLmk4cCArIDgpOwogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAw
MDApKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fY29tcGFyZV9fNTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICBy
MC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FT
VDx1aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
ICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVh
c21fY29tcGFyZV9fNTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgLy8gICBnb3RvIC5k
b25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX181MV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+
ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4
NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2Nr
PGEyPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFn
PGExPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAg
cGF5bG9hZDxhMj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNTFfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZSkKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
ZyhpbmRleCwgdGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjQuaTMyID49IGludDMyX3QoMHg0MDAw
MDAwMCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9jb21wYXJlX181MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7
CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHI0Lmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOyAv
LyAgIGdvdG8gLmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Nv
bXBhcmVfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIyLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBjb2RlQmxvY2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIyLmk4cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8
YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICBy
NC5pMzIgPSByNC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkgKyBy
NC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50
PGExPiA9ICZ2ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjQuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxv
YWQ8YTI+ID0gY29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMi5pOHAgKyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0
YW50PGExPi5UYWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBh
cmVfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFj
cm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjAuaTMyICE9IGludDMyX3Qo
LTEpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNTFfY29tcGFyZV9fb3AxTm90SW50OwogICAg
aWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUxX2Nv
bXBhcmVfX29wMk5vdEludDsKICAgIGlmIChyMS5pMzIgPj0gcjQuaTMyKQogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fNTFfY29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNp
emVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihy
UEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fNTFfY29tcGFyZV9fb3AxTm90SW50KQogICAgaWYgKHIwLnUzMiA+IHVpbnQzMl90KC03KSkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUxX2NvbXBhcmVfX3Nsb3c7CiAgICBpZiAocjIudTMy
IDwgdWludDMyX3QoLTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNTFfY29tcGFyZV9fb3Ax
Tm90SW50T3AyRG91YmxlOwogICAgaWYgKHIyLmkzMiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtXzUxX2NvbXBhcmVfX3Nsb3c7CiAgICBkMS5kID0gcjQuaTMyOwogICAg
Z290byBfb2ZmbGluZWFzbV81MV9jb21wYXJlX19vcDFOb3RJbnRSZWFkeTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNTFfY29tcGFyZV9fb3AxTm90SW50T3AyRG91Ymxl
KQogICAgZDEuZCA9IEludHMyRG91YmxlKHI0LnUzMiwgcjIudTMyKTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNTFfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpCiAgICBk
MC5kID0gSW50czJEb3VibGUocjEudTMyLCByMC51MzIpOwogICAgaWYgKGQwLmQgPj0gZDEuZCkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUxX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lO
U1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzUxX2NvbXBhcmVfX29wMk5vdEludCkKICAgIGQwLmQgPSByMS5pMzI7
CiAgICBpZiAocjIudTMyID4gdWludDMyX3QoLTcpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21f
NTFfY29tcGFyZV9fc2xvdzsKICAgIGQxLmQgPSBJbnRzMkRvdWJsZShyNC51MzIsIHIyLnUzMik7
CiAgICBpZiAoZDAuZCA+PSBkMS5kKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNTFfY29tcGFy
ZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNTFfY29tcGFyZV9fanVtcFRh
cmdldCkKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7CiAgICByMC5p
MzIgPSByMC5pMzIgPDwgaW50MzJfdCgweDIpOwogICAgclBDLmkgPSByUEMuaSArIHIwLmk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV81MV9jb21wYXJlX19zbG93KQogICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FT
VDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IGxsaW50X3Nsb3dfcGF0aF9qZ3JlYXRlcmVxKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6
ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9
CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29k
ZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2puZ3JlYXRlcmVxKQogICAgcjIuaSA9ICpD
QVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOwogICAgcjQuaSA9ICpDQVNUPHVpbnQzMl90Kj4o
clBDLmk4cCArIDgpOwogICAgaWYgKHIyLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDApKSAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleDxhMD4gPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fY29t
cGFyZV9fNTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNB
U1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8v
ICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJf
dCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2Fk
PGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFy
ZV9fNTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsgLy8gICBnb3RvIC5kb25lOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX181Ml9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0gY2ZyLkNv
ZGVCbG9jazsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDQ4NCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTI+ID0gY29kZUJsb2NrPGEyPi5jb25z
dGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSk7IC8vICAgdGFnPGExPiA9IHZl
Y3RvckJ1ZmZlcjxhMj5baW5kZXg8YTA+XS5UYWc7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZDxh
Mj4gPSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uUGF5bG9hZDsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNTJfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZSkKICAgIC8vIG1hY3JvOiBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwg
dGFnLCBwYXlsb2FkKSB7CiAgICBpZiAocjQuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4PGEwPiA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9j
b21wYXJlX181Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ7CiAgICByMi5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0
KSk7IC8vICAgdGFnPGExPiA9IGNmcltpbmRleDxhMD5dLlRhZzsKICAgIHI0LmkgPSAqQ0FTVDx1
aW50MzJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gICBw
YXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD5dLlBheWxvYWQ7CiAgICBnb3RvIF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzUyX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOyAvLyAgIGdvdG8g
LmRvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzUy
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxv
Y2s8YTE+ID0gY2ZyLkNvZGVCbG9jazsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4
cCArIDQ4NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29k
ZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0b3JCdWZmZXI7CiAgICByNC5pMzIgPSBy
NC5pMzIgPDwgaW50MzJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYnl0
ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOwogICAgcjIuaSA9IHIyLmkgKyByNC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0YW50PGExPiA9ICZ2
ZWN0b3JCdWZmZXI8YTE+W2J5dGVJbmRleDxhMD5dOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90
Kj4ocjIuaThwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQ8YTI+ID0g
Y29uc3RhbnQ8YTE+LlBheWxvYWQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAg
KyA0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5U
YWc7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzUyX2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKQogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcuCiAgICBpZiAocjAuaTMyICE9IGludDMyX3QoLTEpKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fNTJfY29tcGFyZV9fb3AxTm90SW50OwogICAgaWYgKHIyLmkz
MiAhPSBpbnQzMl90KC0xKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUyX2NvbXBhcmVfX29w
Mk5vdEludDsKICAgIGlmIChyMS5pMzIgPCByNC5pMzIpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV81Ml9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAg
ICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV81Ml9jb21w
YXJlX19vcDFOb3RJbnQpCiAgICBpZiAocjAudTMyID4gdWludDMyX3QoLTcpKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fNTJfY29tcGFyZV9fc2xvdzsKICAgIGlmIChyMi51MzIgPCB1aW50MzJf
dCgtNykpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV81Ml9jb21wYXJlX19vcDFOb3RJbnRPcDJE
b3VibGU7CiAgICBpZiAocjIuaTMyICE9IGludDMyX3QoLTEpKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fNTJfY29tcGFyZV9fc2xvdzsKICAgIGQxLmQgPSByNC5pMzI7CiAgICBnb3RvIF9vZmZs
aW5lYXNtXzUyX2NvbXBhcmVfX29wMU5vdEludFJlYWR5OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9M
QUJFTChfb2ZmbGluZWFzbV81Ml9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3VibGUpCiAgICBkMS5k
ID0gSW50czJEb3VibGUocjQudTMyLCByMi51MzIpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV81Ml9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkKICAgIGQwLmQgPSBJbnRz
MkRvdWJsZShyMS51MzIsIHIwLnUzMik7CiAgICBpZiAoaXNuYW4oZDAuZCkgfHwgaXNuYW4oZDEu
ZCkKICAgICAgICB8fCAoZDAuZCA8IGQxLmQpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNTJf
Y29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEwKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0
ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNTJfY29tcGFyZV9f
b3AyTm90SW50KQogICAgZDAuZCA9IHIxLmkzMjsKICAgIGlmIChyMi51MzIgPiB1aW50MzJfdCgt
NykpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV81Ml9jb21wYXJlX19zbG93OwogICAgZDEuZCA9
IEludHMyRG91YmxlKHI0LnUzMiwgcjIudTMyKTsKICAgIGlmIChpc25hbihkMC5kKSB8fCBpc25h
bihkMS5kKQogICAgICAgIHx8IChkMC5kIDwgZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV81Ml9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAg
ICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV81Ml9jb21w
YXJlX19qdW1wVGFyZ2V0KQogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDEy
KTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90KDB4Mik7CiAgICByUEMuaSA9IHJQQy5p
ICsgcjAuaTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzUyX2NvbXBhcmVf
X3Nsb3cpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlv
biogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVy
blR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2puZ3JlYXRlcmVxKGV4ZWMsIHBjKTsKICAg
ICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNT
dGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAu
aSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90
KDB4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1
cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHAp
OyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2xvb3BfaGludCkKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5F
WFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09E
RV9MQUJFTChvcF9zd2l0Y2hfc3RyaW5nKQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwg
YXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7
CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAg
ICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9zd2l0Y2hf
c3RyaW5nKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAu
aW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmlu
c3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9J
TlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX25ld19mdW5jX2V4cCkKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIp
OwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAg
ICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAg
IFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhw
KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1
Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IGNhbGwgZnVuYyhyKSBh
cmdDb3VudChuKSByZWdpc3Rlck9mZnNldChuKQovLyAKLy8gICBQZXJmb3JtIGEgZnVuY3Rpb24g
Y2FsbC4KLy8gICAgICAgICAgIAovLyAgIHJlZ2lzdGVyT2Zmc2V0IGlzIHRoZSBkaXN0YW5jZSB0
aGUgY2FsbEZyYW1lIHBvaW50ZXIgc2hvdWxkIG1vdmUKLy8gICBiZWZvcmUgdGhlIFZNIGluaXRp
YWxpemVzIHRoZSBuZXcgY2FsbCBmcmFtZSdzIGhlYWRlci4KLy8gICAgICAgICAgIAovLyAgIGRz
dCBpcyB3aGVyZSBvcF9yZXQgc2hvdWxkIHN0b3JlIGl0cyByZXN1bHQuCgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3BfY2FsbCkKICAgIC8vIG1hY3JvIGRvQ2FsbChzbG93UGF0aCkgewogICAg
cjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oclBDLmk4cCArIDQpOyAgICAgICAgICAgICAgICAgICAg
ICAvLyBmdW5jSWQ8dDA+ID0gcGNbMV07CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMu
aThwICsgMTYpOyAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxMaW5rSW5mbzx0MT4gPSBwY1s0
XTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDgpOyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FsbGVlPHQyPiA9IGNhbGxMaW5rSW5mbzx0MT4uY2FsbGVlOwogICAgLy8g
bG9hZChmdW5jSWQ8dDA+ID09PiBmdW5jPHQzPiwgLi4uKTsKICAgIC8vIG1hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykg
ewogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oLi4uKTsKICAg
IC8vIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0
YWdDaGVjaywgcGF5bG9hZCkgewogICAgaWYgKHIwLmkzMiA+PSBpbnQzMl90KDB4NDAwMDAwMDAp
KSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRleCA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgZ290byAuY29uc3RhbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9k
b0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181Ml9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ7CiAgICAvLyAgIHRhZ0NoZWNrKGNmcltp
bmRleF0uVGFnKTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAz
KSArIGludHB0cl90KDB4NCkpICE9IGludDMyX3QoLTUpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0g
ZXhwZWN0ZWRUYWcpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9kb0NhbGxf
X29wQ2FsbFNsb3c7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgKyAocjAuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vICAgcGF5bG9hZCA9IGNmcltpbmRleF0uUGF5bG9h
ZDsKICAgIGdvdG8gX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fNTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU7IC8v
ICAgZ290byAuZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZG9D
YWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNTJfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KQogICAgcjQuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwIC0gOCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxwYXls
b2FkPiA9IGNmci5Db2RlQmxvY2s7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAg
KyA0ODQpOyAgICAgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9yQnVmZmVyPHBheWxvYWQ+ID0g
Y29kZUJsb2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZlY3RvcmVCdWZmZXI7CiAgICAv
LyAgIHRhZ0NoZWNrKHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uVGFnKTsKICAgIGlmICgq
Q0FTVDxpbnQzMl90Kj4ocjQuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4NCkpICE9
IGludDMyX3QoLTUpKSAvLyAgIGlmIChhY3R1YWxUYWcgIT0gZXhwZWN0ZWRUYWcpIGdvdG8gLnNs
b3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3c7CiAgICByNC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vICAgcGF5bG9hZCA9IHZlY3RvckJ1ZmZlcjxwYXlsb2FkPltpbmRleF0uUGF5bG9hZDsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fNTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2RvbmUpCiAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbS4KICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkLgogICAgaWYgKHI0LmkzMiAhPSByMi5pMzIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAoZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNv
ZGUoKT8pIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2Fs
bFNsb3c7CiAgICByNC5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwICsgMTIpOyAgICAgICAg
ICAgICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBwY1szXTsKICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDE4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgKz0gMjQgaS5l
LiBwb2ludCB0byB0aGUgcmV0dXJuIGFkZHJlc3MuCiAgICAvLyBuZXdGcmFtZTx0Mz4gPSBjZnIg
KyBvZmZzZXQ8dDM+IDw8IDM7ICAvLyBvZmZzZXQgPSBzaXplb2YgY3VycmVudCBmcmFtZTsKICAg
IHI0LmkzMiA9IHI0LmkzMiA8PCBpbnQzMl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gb2Zmc2V0PHQzPiA9IG9mZnNldDx0Mz4gPDwgMzsKICAgIHI0LmkgPSByNC5pICsgZnAu
aTsKICAgIC8vIEluaXRpYWxpemUgdGhlIG5ld0ZyYW1lOgogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjIuaThwICsgMjApOyAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZTx0MD4gPSBj
YWxsZWU8dDI+LnNjb3BlQ2hhaW47CiAgICAqQ0FTVDxpbnQzMl90Kj4ocjQuaThwIC0gMzIpID0g
cjIuaTMyOyAgICAgICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5DYWxsZWUuUGF5bG9h
ZCA9IGNhbGxlZTx0Mj47CiAgICAqQ0FTVDxpbnQzMl90Kj4ocjQuaThwIC0gMjQpID0gcjAuaTMy
OyAgICAgICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5TY29wZUNoYWluLlBheWxvYWQg
PSBzY29wZTx0MD47CiAgICByMi5pID0gKkNBU1Q8dWludDMyX3QqPihyUEMuaThwIC0gMTYpOyAg
ICAgICAgICAgICAgICAgICAgIC8vIG51bUFyZ3M8dDI+ID0gLi4uOwogICAgKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCAtIDQ0KSA9IHJQQy5pMzI7ICAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJn
dW1lbnRDb3VudC5UYWcgPSBwYzsgLy8gU3Rhc2ggdGhlIHJldHVybiBQQy4KICAgICpDQVNUPGlu
dHB0cl90Kj4ocjQuaThwIC0gNDApID0gZnAuaTsgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3
RnJhbWU8dDM+LkNhbGxlckZyYW1lID0gY2ZyOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCAt
IDQ4KSA9IHIyLmkzMjsgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQXJndW1l
bnRDb3VudC5QYXlsb2FkID0gbnVtQXJnczx0Mj47CiAgICAqQ0FTVDxpbnQzMl90Kj4ocjQuaThw
IC0gMjgpID0gaW50MzJfdCgtNSk7ICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5DYWxs
ZWUuVGFnID0gQ2VsbFRhZzsKICAgICpDQVNUPGludDMyX3QqPihyNC5pOHAgLSAyMCkgPSBpbnQz
Ml90KC01KTsgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4uVGFnID0g
Q2VsbFRhZzsKICAgIGZwLmkgPSByNC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyID0gbmV3RnJhbWU8dDM+OwogICAgLy8gQ2FsbCB0aGUgdGFy
Z2V0IGFzIGlmIGl0J3MgYSBjb21waWxlZCBtZXRob2Q6CiAgICAvLyBjYWxsVGFyZ2V0RnVuY3Rp
b24oY2FsbExpbmtJbmZvPHQxPik7CiAgICBvcGNvZGUgPSBMTEludE9wY29kZSgqQ0FTVDxpbnRw
dHJfdCo+KHIxLmk4cCArIDE2KSk7ICAgICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvLm1hY2hpbmVD
b2RlVGFyZ2V0OwogICAgZ290byBkb0NhbGxIZWxwZXI7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX2RvQ2FsbF9fb3BDYWxsU2xvdykKICAgIC8vIGNhbGwgc2xvd1BhdGg7
CiAgICByMC5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE4KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJldHVyblBDPHQwPiA9IHBjICsgYWR2YW5jZSo0OwogICAgKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA0NCkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJn
dW1lbnRDb3VudC5UYWcgPSByZXR1cm5QQzx0MD47CiAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihh
cmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZw
LnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZw
KTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2Nh
bGwoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0
cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIGZwLmkgPSByMS5pOwogICAgb3Bjb2Rl
ID0gTExJbnRPcGNvZGUocjAuaSk7CiAgICBnb3RvIGRvQ2FsbEhlbHBlcjsKICAgIC8vIFJlbG9h
ZCB0aGUgcmV0dXJuIFBDIGZyb20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJlOgog
ICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKICAgIHJQQy5pID0g
KkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSBjZnIuQXJndW1lbnRDb3VudC5UYWc7IC8vIFJlbG9hZCBhIHByZXZpb3VzbHkgc3Rhc2hlZCBy
ZXR1cm5QQy4KICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAg
ICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CiAgICAvLyB9IEVORCBkb0NhbGwuCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bf
Y29uc3RydWN0KQogICAgLy8gbWFjcm8gZG9DYWxsKHNsb3dQYXRoKSB7CiAgICByMC5pID0gKkNB
U1Q8dWludDMyX3QqPihyUEMuaThwICsgNCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmNJ
ZDx0MD4gPSBwY1sxXTsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxNik7
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbExpbmtJbmZvPHQxPiA9IHBjWzRdOwogICAgcjIu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgOCk7ICAgICAgICAgICAgICAgICAgICAgICAv
LyBjYWxsZWU8dDI+ID0gY2FsbExpbmtJbmZvPHQxPi5jYWxsZWU7CiAgICAvLyBsb2FkKGZ1bmNJ
ZDx0MD4gPT0+IGZ1bmM8dDM+LCAuLi4pOwogICAgLy8gbWFjcm8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KSB7CiAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSguLi4pOwogICAgLy8gbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBw
YXlsb2FkKSB7CiAgICBpZiAocjAuaTMyID49IGludDMyX3QoMHg0MDAwMDAwMCkpICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KSBnb3RvIC5jb25zdGFudDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzUzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19jb25zdGFudDsKICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcp
OwogICAgaWYgKCpDQVNUPGludDMyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg0KSkgIT0gaW50MzJfdCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRh
ZykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUzX2RvQ2FsbF9fb3BDYWxs
U2xvdzsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwogICAg
Z290byBfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181
M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZTsgLy8gICBnb3Rv
IC5kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9kb0NhbGxfX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPHBheWxvYWQ+ID0g
Y2ZyLkNvZGVCbG9jazsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDQ4NCk7
ICAgICAgICAgICAgICAgICAgICAgLy8gICB2ZWN0b3JCdWZmZXI8cGF5bG9hZD4gPSBjb2RlQmxv
Y2s8cGF5bG9hZD4uY29uc3RhbnRSZWdpc3RlcnMudmVjdG9yZUJ1ZmZlcjsKICAgIC8vICAgdGFn
Q2hlY2sodmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5UYWcpOwogICAgaWYgKCpDQVNUPGlu
dDMyX3QqPihyNC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg0KSkgIT0gaW50MzJf
dCgtNSkpIC8vICAgaWYgKGFjdHVhbFRhZyAhPSBleHBlY3RlZFRhZykgZ290byAuc2xvdzsKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzUzX2RvQ2FsbF9fb3BDYWxsU2xvdzsKICAgIHI0LmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gICBwYXlsb2FkID0gdmVjdG9yQnVmZmVyPHBheWxvYWQ+W2luZGV4XS5QYXlsb2FkOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX181M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fZG9uZSkKICAgIC8vIH0gRU5EIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tLgogICAgLy8gfSBFTkQgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQuCiAgICBpZiAocjQuaTMyICE9IHIyLmkzMikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmIChmdW5jPHQzPiAhPSBjYWxsZWU8dDI+IGkuZS4gaXNCeXRlY29kZSgp
PykgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzUzX2RvQ2FsbF9fb3BDYWxs
U2xvdzsKICAgIHI0LmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgKyAxMik7ICAgICAgICAg
ICAgICAgICAgICAgLy8gb2Zmc2V0PHQzPiA9IHBjWzNdOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4MTgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyArPSAyNCBpLmUu
IHBvaW50IHRvIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciAr
IG9mZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9IHNpemVvZiBjdXJyZW50IGZyYW1lOwogICAg
cjQuaTMyID0gcjQuaTMyIDw8IGludDMyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBvZmZzZXQ8dDM+ID0gb2Zmc2V0PHQzPiA8PCAzOwogICAgcjQuaSA9IHI0LmkgKyBmcC5p
OwogICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV3RnJhbWU6CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMi5pOHAgKyAyMCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNh
bGxlZTx0Mj4uc2NvcGVDaGFpbjsKICAgICpDQVNUPGludDMyX3QqPihyNC5pOHAgLSAzMikgPSBy
Mi5pMzI7ICAgICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZS5QYXlsb2Fk
ID0gY2FsbGVlPHQyPjsKICAgICpDQVNUPGludDMyX3QqPihyNC5pOHAgLSAyNCkgPSByMC5pMzI7
ICAgICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LlNjb3BlQ2hhaW4uUGF5bG9hZCA9
IHNjb3BlPHQwPjsKICAgIHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHJQQy5pOHAgLSAxNik7ICAg
ICAgICAgICAgICAgICAgICAgLy8gbnVtQXJnczx0Mj4gPSAuLi47CiAgICAqQ0FTVDxpbnQzMl90
Kj4oZnAuaThwIC0gNDQpID0gclBDLmkzMjsgICAgICAgICAgICAgICAgICAgIC8vIGNmci5Bcmd1
bWVudENvdW50LlRhZyA9IHBjOyAvLyBTdGFzaCB0aGUgcmV0dXJuIFBDLgogICAgKkNBU1Q8aW50
cHRyX3QqPihyNC5pOHAgLSA0MCkgPSBmcC5pOyAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdG
cmFtZTx0Mz4uQ2FsbGVyRnJhbWUgPSBjZnI7CiAgICAqQ0FTVDxpbnQzMl90Kj4ocjQuaThwIC0g
NDgpID0gcjIuaTMyOyAgICAgICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5Bcmd1bWVu
dENvdW50LlBheWxvYWQgPSBudW1BcmdzPHQyPjsKICAgICpDQVNUPGludDMyX3QqPihyNC5pOHAg
LSAyOCkgPSBpbnQzMl90KC01KTsgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxl
ZS5UYWcgPSBDZWxsVGFnOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCAtIDIwKSA9IGludDMy
X3QoLTUpOyAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uU2NvcGVDaGFpbi5UYWcgPSBD
ZWxsVGFnOwogICAgZnAuaSA9IHI0Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnIgPSBuZXdGcmFtZTx0Mz47CiAgICAvLyBDYWxsIHRoZSB0YXJn
ZXQgYXMgaWYgaXQncyBhIGNvbXBpbGVkIG1ldGhvZDoKICAgIC8vIGNhbGxUYXJnZXRGdW5jdGlv
bihjYWxsTGlua0luZm88dDE+KTsKICAgIG9wY29kZSA9IExMSW50T3Bjb2RlKCpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgMTYpKTsgICAgICAgLy8gY2FsbCBjYWxsTGlua0luZm8ubWFjaGluZUNv
ZGVUYXJnZXQ7CiAgICBnb3RvIGRvQ2FsbEhlbHBlcjsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fNTNfZG9DYWxsX19vcENhbGxTbG93KQogICAgLy8gY2FsbCBzbG93UGF0
aDsKICAgIHIwLmkgPSByUEMuaSArIGludHB0cl90KDB4MTgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcmV0dXJuUEM8dDA+ID0gcGMgKyBhZHZhbmNlKjQ7CiAgICAqQ0FTVDxpbnRw
dHJfdCo+KGZwLmk4cCAtIDQ0KSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5B
cmd1bWVudENvdW50LlRhZyA9IHJldHVyblBDPHQwPjsKICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9u
KGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4o
ZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMu
dnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhf
Y29uc3RydWN0KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICBmcC5pID0gcjEuaTsKICAg
IG9wY29kZSA9IExMSW50T3Bjb2RlKHIwLmkpOwogICAgZ290byBkb0NhbGxIZWxwZXI7CiAgICAv
LyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0
aGVyZToKICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAgZ290byAqcGM7CiAgICBy
UEMuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDQpOyAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAvLyBSZWxvYWQgYSBwcmV2aW91c2x5IHN0
YXNoZWQgcmV0dXJuUEMuCiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHAp
OyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BB
VENIX09QQ09ERSgpOwogICAgLy8gfSBFTkQgZG9DYWxsLgoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX2NhbGxfdmFyYXJncykKICAgIHIwLmkgPSByUEMuaSArIGludHB0cl90KDB4MTgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuUEM8dDA+ID0gcGMgKyBhZHZhbmNl
KjQ7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDQ0KSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHJldHVyblBDPHQwPjsKICAgIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6
ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9
CiAgICBmcC5pID0gcjEuaTsKICAgIG9wY29kZSA9IExMSW50T3Bjb2RlKHIwLmkpOwogICAgZ290
byBkb0NhbGxIZWxwZXI7CiAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdl
IHN0YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQu
VGFnOyAgZ290byAqcGM7CiAgICByUEMuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDQp
OyAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAvLyBS
ZWxvYWQgYSBwcmV2aW91c2x5IHN0YXNoZWQgcmV0dXJuUEMuCiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9J
TlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX2NhbGxfZXZhbCkKICAgIHIwLmkgPSByUEMuaSArIGludHB0cl90KDB4MTApOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuUEM8dDA+ID0gcGMgKyBhZHZhbmNlKjQ7
CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDQ0KSA9IHIwLmk7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHJldHVyblBDPHQwPjsKICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENB
U1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5z
dHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBs
bGludF9zbG93X3BhdGhfY2FsbF9ldmFsKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2Rl
UmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICBm
cC5pID0gcjEuaTsKICAgIG9wY29kZSA9IExMSW50T3Bjb2RlKHIwLmkpOwogICAgZ290byBkb0Nh
bGxIZWxwZXI7CiAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNo
ZWQgaXQsIGFuZCBnbyB0aGVyZToKICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAg
Z290byAqcGM7CiAgICByUEMuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDQpOyAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAvLyBSZWxvYWQg
YSBwcmV2aW91c2x5IHN0YXNoZWQgcmV0dXJuUEMuCiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVD
VElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCkKICAgIHJQQy5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5p
OHAgLSA0NCk7ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5U
YWc7IC8vIFJlbG9hZCBhIHByZXZpb3VzbHkgc3Rhc2hlZCByZXR1cm5QQy4KICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3Bfc3RyY2F0KQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJn
Mik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAg
ICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAg
ICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9zdHJjYXQoZXhl
YywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlv
biwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248
dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9O
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbWV0
aG9kX2NoZWNrKQogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAgICAg
ICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9wbmFtZXMpCiAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5j
dGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0
ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4o
clBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19w
YXRoX2dldF9wbmFtZXMoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVz
dWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBy
ZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4oclBDLmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290
byBORVhUX0lOU1RSVUNUSU9OOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3BfcHVzaF9zY29wZSkKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEs
IGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnAp
OwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwog
ICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcHVzaF9z
Y29wZShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmlu
c3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0
cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5p
ID0gclBDLmkgKyBpbnRwdHJfdCgweDgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJ
bnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5T
VFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJF
TChvcF9wb3Bfc2NvcGUpCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJ
bnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3BvcF9zY29wZShleGVjLCBw
Yyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCBy
MS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4K
ICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBp
bnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNp
emVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihy
UEMuaThwKTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9wdXNoX25l
d19zY29wZSkKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0
aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0
dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcHVzaF9uZXdfc2NvcGUoZXhlYywgcGMp
OwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEu
ZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAg
ICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmciA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByUEMuaSA9IHJQQy5pICsgaW50
cHRyX3QoMHgxMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXpl
b2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4oclBD
Lmk4cCk7ICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogICAg
RElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfdGhyb3cpCiAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcxLCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBD
QVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVz
dWx0ID0gbGxpbnRfc2xvd19wYXRoX3Rocm93KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVj
b2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAg
ICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSByZXN1bHQu
ZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENIX09QQ09ERSgpOwoK
T0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKICAgIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKGV4ZWMsIHBjKTsKICAgICAg
ICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0
ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9
IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
ZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
OCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5pOHApOyAg
ICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3Byb2ZpbGVfd2lsbF9jYWxs
KQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBj
ID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBl
IHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9wcm9maWxlX3dpbGxfY2FsbChleGVjLCBwYyk7CiAg
ICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVj
U3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZw
LmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJf
dCgweDgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihj
dXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThw
KTsgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9wcm9maWxlX2RpZF9j
YWxsKQogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0
YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24q
IHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5U
eXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2RpZF9jYWxsKGV4ZWMsIHBjKTsK
ICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4
ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAg
ZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgclBDLmkgPSByUEMuaSArIGludHB0
cl90KDB4OCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9m
KGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJQQy5p
OHApOyAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2RlYnVnKQogICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FT
VDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IGxsaW50X3Nsb3dfcGF0aF9kZWJ1ZyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29k
ZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAg
clBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDE0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyUEMuaThwKTsgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIE5FWFRfSU5TVFJVQ1RJT047CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9G
RkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSkKICAgIC8v
IEluaXQgY2ZyW0NvZGVCbG9jaywgU2NvcGVDaGFpbiwgUmV0dXJuUENdOgogICAgKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA4KSA9IGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAvLyBjZnIu
Q29kZUJsb2NrID0gMDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDQwKTsg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVyRnJhbWU8dDA+ID0gY2ZyLkNhbGxlckZyYW1l
OwogICAgcjEuaSA9ICpDQVNUPHVpbnQzMl90Kj4ocjAuaThwIC0gMjQpOyAgICAgICAgICAgICAg
ICAgICAgICAvLyBzY29wZTx0MT4gPSBjYWxsZXJGcmFtZTx0MD4uU2NvcGVDaGFpbi5QYXlsb2Fk
OwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAtIDIwKSA9IGludDMyX3QoLTUpOyAgICAgICAg
ICAgICAgICAvLyBjZnIuU2NvcGVDaGFpbi5UYWcgPSBDZWxsVGFnOwogICAgKkNBU1Q8aW50MzJf
dCo+KGZwLmk4cCAtIDI0KSA9IHIxLmkzMjsgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuU2Nv
cGVDaGFpbi5QYXlsb2FkID0gc2NvcGU8dDE+OwogICAgLy8gU2V0IGdsb2JhbERhdGEudG9wQ2Fs
bEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4oKGFzc2Vy
dCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxE
YXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsK
ICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgMjk4NCkgPSBmcC5pOyAgICAgICAgICAgICAg
ICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9wQ2FsbEZyYW1lID0gY2ZyOwogICAgcjIuaSA9IHIw
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZl
ZENhbGxlckZyYW1lPHQyPiA9IGNhbGxlckZyYW1lPHQwPjsKICAgIC8vIHNhdmVkUmV0dXJuUEM8
dDM+ID0gcmV0dXJuUEM7CiAgICByNC5pID0gclJldFZQQy5pOwogICAgKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgLSAxNikgPSByNC5pOyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJu
UEMgPSA8dDM+OwogICAgLy8gUGFzcyBjdXJyZW50RnJhbWUgYXMgYW4gYXJnIHRvIHRoZSB0YXJn
ZXQ6CiAgICByMC5pID0gZnAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFyZzA6IGFyZzA8dDA+ID0gY2ZyOwogICAgLy8gQ2FsbCB0aGUgZnVuY3Rp
b24gd2l0aCByMCA9IGN1cnJlbnRGcmFtZSwgY2ZyID0gb2xkRnJhbWU6IFdoeT8/PwogICAgcjEu
aSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gMzIpOyAgICAgICAgICAgICAgICAgICAgICAv
LyBqc2Z1bmM8dDE+ID0gY2ZyLkNhbGxlZS5QYXlsb2FkOwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgMTYpOyAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcxOiBleGVjdXRh
YmxlPHQxPiA9IGpzZnVuYzx0MT4uZXhlY3V0YWJsZTsKICAgIGZwLmkgPSByMi5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gc2F2ZWRDYWxs
ZXJGcmFtZTx0Mj47CiAgICBuYXRpdmVGdW5jID0gKkNBU1Q8TmF0aXZlRnVuY3Rpb24qPihyMS5p
OHAgKyA1Nik7ICAgICAgICAgIC8vIGNhbGwgZXhlY3V0YWJsZTx0MT4uQ2FsbE9yQ29uc3RydWN0
OwogICAgZnVuY3Rpb25SZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShuYXRpdmVGdW5jKHIw
LmV4ZWNTdGF0ZSkpOwogICAgI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgcjEuaSA9IGZ1
bmN0aW9uUmV0dXJuVmFsdWUudGFnKCk7CiAgICAgICAgcjAuaSA9IGZ1bmN0aW9uUmV0dXJuVmFs
dWUucGF5bG9hZCgpOwogICAgI2Vsc2UgLy8gVVNFX0pTVkFMVUU2NCkKICAgICAgICByMC5lbmNv
ZGVkSlNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZShmdW5jdGlvblJldHVyblZhbHVlKTsKICAgICNl
bmRpZiAvLyBVU0VfSlNWQUxVRTY0KQogICAgLy8gcmV0dXJuUEMgPSBzYXZlZFJldHVyblBDPHQz
PjsKICAgIHJSZXRWUEMuaSA9IHI0Lmk7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPigoYXNz
ZXJ0KDAgPT0gb2Zmc2V0b2YoSklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkpLCAmc3AtPmdsb2Jh
bERhdGEpKTsgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRh
OwogICAgaWYgKCpDQVNUPGludDMyX3QqPihyNC5pOHAgKyA2NTQ4KSAhPSBpbnQzMl90KC02KSkg
ICAgICAgICAvLyBpZiAoZ2xvYmFsRGF0YTx0Mz4uZXhjZXB0aW9uLFRhZyAhPSBFbXB0eVZhbHVl
VGFnKSBnb3RvIC5leGNlcHRpb247CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9uYXRpdmVDYWxs
VHJhbXBvbGluZV9fZXhjZXB0aW9uOwogICAgZ290byBkb1JldHVybkhlbHBlcjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm47CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX25hdGl2ZUNhbGxUcmFtcG9saW5lX19leGNlcHRpb24pCiAg
ICByMS5pID0gclJldFZQQy5pOwogICAgclBDLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAt
IDQ0KTsgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IGNmci5Bcmd1bWVudENvdW50LlRhZzsK
ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2FsbCBDIGZ1bmN0aW9uKGFyZzEsIGFyZzIpOwogICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9
IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQgPSBsbGludF90aHJvd19mcm9tX25hdGl2ZV9jYWxsKGV4ZWMsIHBjKTsKICAgICAgICBM
TEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7
CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIx
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIg
PSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgZ290byBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lOwoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9uYXRpdmVfY29uc3Ry
dWN0X3RyYW1wb2xpbmUpCiAgICAvLyBJbml0IGNmcltDb2RlQmxvY2ssIFNjb3BlQ2hhaW4sIFJl
dHVyblBDXToKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCkgPSBpbnRwdHJfdCgweDAp
OyAgICAgICAgICAgICAgLy8gY2ZyLkNvZGVCbG9jayA9IDA7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA0MCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlckZyYW1l
PHQwPiA9IGNmci5DYWxsZXJGcmFtZTsKICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIwLmk4
cCAtIDI0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVyRnJhbWU8
dDA+LlNjb3BlQ2hhaW4uUGF5bG9hZDsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgLSAyMCkg
PSBpbnQzMl90KC01KTsgICAgICAgICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4uVGFnID0gQ2Vs
bFRhZzsKICAgICpDQVNUPGludDMyX3QqPihmcC5pOHAgLSAyNCkgPSByMS5pMzI7ICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4uUGF5bG9hZCA9IHNjb3BlPHQxPjsKICAgIC8v
IFNldCBnbG9iYWxEYXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgIHI0LmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KChhc3NlcnQoMCA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9i
YWxEYXRhKSksICZzcC0+Z2xvYmFsRGF0YSkpOyAvLyBnbG9iYWxEYXRhPHQzPiA9IGppdFN0YWNr
RnJhbWU8c3A+Lmdsb2JhbERhdGE7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDI5ODQp
ID0gZnAuaTsgICAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbERhdGE8dDM+LnRvcENhbGxGcmFt
ZSA9IGNmcjsKICAgIHIyLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2F2ZWRDYWxsZXJGcmFtZTx0Mj4gPSBjYWxsZXJGcmFtZTx0MD47
CiAgICAvLyBzYXZlZFJldHVyblBDPHQzPiA9IHJldHVyblBDOwogICAgcjQuaSA9IHJSZXRWUEMu
aTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gMTYpID0gcjQuaTsgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQzPjsKICAgIC8vIFBhc3MgY3VycmVudEZyYW1l
IGFzIGFuIGFyZyB0byB0aGUgdGFyZ2V0OgogICAgcjAuaSA9IGZwLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmcwOiBhcmcwPHQwPiA9IGNmcjsK
ICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggcjAgPSBjdXJyZW50RnJhbWUsIGNmciA9IG9s
ZEZyYW1lOiBXaHk/Pz8KICAgIHIxLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAtIDMyKTsg
ICAgICAgICAgICAgICAgICAgICAgLy8ganNmdW5jPHQxPiA9IGNmci5DYWxsZWUuUGF5bG9hZDsK
ICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDE2KTsgICAgICAgICAgICAgICAg
ICAgICAgLy8gYXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7CiAg
ICBmcC5pID0gcjIuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OwogICAgbmF0aXZlRnVuYyA9ICpDQVNU
PE5hdGl2ZUZ1bmN0aW9uKj4ocjEuaThwICsgNjApOyAgICAgICAgICAvLyBjYWxsIGV4ZWN1dGFi
bGU8dDE+LkNhbGxPckNvbnN0cnVjdDsKICAgIGZ1bmN0aW9uUmV0dXJuVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUobmF0aXZlRnVuYyhyMC5leGVjU3RhdGUpKTsKICAgICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgIHIxLmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnRhZygpOwogICAgICAgIHIw
LmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnBheWxvYWQoKTsKICAgICNlbHNlIC8vIFVTRV9KU1ZB
TFVFNjQpCiAgICAgICAgcjAuZW5jb2RlZEpTVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoZnVuY3Rp
b25SZXR1cm5WYWx1ZSk7CiAgICAjZW5kaWYgLy8gVVNFX0pTVkFMVUU2NCkKICAgIC8vIHJldHVy
blBDID0gc2F2ZWRSZXR1cm5QQzx0Mz47CiAgICByUmV0VlBDLmkgPSByNC5pOwogICAgcjQuaSA9
ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGds
b2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3Rh
Y2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4ocjQuaThwICsg
NjU0OCkgIT0gaW50MzJfdCgtNikpICAgICAgICAgLy8gaWYgKGdsb2JhbERhdGE8dDM+LmV4Y2Vw
dGlvbixUYWcgIT0gRW1wdHlWYWx1ZVRhZykgZ290byAuZXhjZXB0aW9uOwogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fNTNfbmF0aXZlQ2FsbFRyYW1wb2xpbmVfX2V4Y2VwdGlvbjsKICAgIGdvdG8g
ZG9SZXR1cm5IZWxwZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cmV0dXJuOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV81M19uYXRpdmVD
YWxsVHJhbXBvbGluZV9fZXhjZXB0aW9uKQogICAgcjEuaSA9IHJSZXRWUEMuaTsKICAgIHJQQy5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0NCk7ICAgICAgICAgICAgICAgICAgICAgLy8g
cGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7CiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbihhcmcx
LCBhcmcyKTsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfdGhyb3dfZnJvbV9uYXRp
dmVfY2FsbChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
Lmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5p
bnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIGdv
dG8gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKCk9GRkxJTkVfQVNNX09Q
Q09ERV9MQUJFTChvcF9nZXRfYXJyYXlfbGVuZ3RoKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAg
ICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwo
b3BfZ2V0X2J5X2lkX2NoYWluKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFTSCgpOwog
ICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5X2lk
X2N1c3RvbV9jaGFpbikKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8v
IH0gRU5EIGNyYXNoLgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9ieV9pZF9jdXN0
b21fcHJvdG8pCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVO
RCBjcmFzaC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfYnlfaWRfY3VzdG9tX3Nl
bGYpCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFz
aC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfYnlfaWRfZ2VuZXJpYykKICAgIC8v
IG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4pCiAgICAvLyBtYWNy
byBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCk9GRkxJTkVfQVNN
X09QQ09ERV9MQUJFTChvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvKQogICAgLy8gbWFjcm8gY3Jh
c2goKSB7CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7
CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfZ2V0X2J5X2lkX3Byb3RvKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFTSCgp
OwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5
X2lkX3NlbGYpCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVO
RCBjcmFzaC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfc3RyaW5nX2xlbmd0aCkK
ICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoK
T0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3B1dF9ieV9pZF9nZW5lcmljKQogICAgLy8gbWFj
cm8gY3Jhc2goKSB7CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FT
TV9PUENPREVfTEFCRUwob3BfcHV0X2J5X2lkX3JlcGxhY2UpCiAgICAvLyBtYWNybyBjcmFzaCgp
IHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAg
Q1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGlu
dF9lbmQpCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBj
cmFzaC4KT0ZGTElORV9BU01fRU5ECiNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>158737</attachid>
            <date>2012-08-16 00:44:39 -0700</date>
            <delta_ts>2012-08-16 00:44:39 -0700</delta_ts>
            <desc>Example of generated 64-bit llint C loop code.</desc>
            <filename>LLIntAssembly-64bit.h</filename>
            <type>text/plain</type>
            <size>281090</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">Ly8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiBmOTM5OTM4M2VlZTAxMGQ0YzhhYmRkZTQzMmUxNTQ4
MmRmZmMyOGU2IGI5ZTQ2OTg2MDYzZmUxYjZiOTJjZWQwOWYzZGRhMWIxNjEwYTcxOWEgMDQyYWE5
NDg3ZDAxNGQxY2NmZGIyMThiYmYyMGM4ZmE2ZWViYTQzMQojaWYgIU9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEICYmIE9GRkxJTkVfQVNNX0NfTE9PUCAmJiBPRkZMSU5FX0FTTV9KU1ZBTFVFNjQgJiYg
IU9GRkxJTkVfQVNNX0JJR19FTkRJQU4gJiYgIU9GRkxJTkVfQVNNX0FMV0FZU19BTExPQ0FURV9T
TE9XICYmICFPRkZMSU5FX0FTTV9BUk12NyAmJiAhT0ZGTElORV9BU01fWDg2ICYmICFPRkZMSU5F
X0FTTV9WQUxVRV9QUk9GSUxFUiAmJiAhT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgJiYg
IU9GRkxJTkVfQVNNX1g4Nl82NCAmJiBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRApPRkZMSU5F
X0FTTV9CRUdJTgoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9iZWdpbikKICAgIC8vIG1h
Y3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKT0ZGTElORV9B
U01fR0xVRV9MQUJFTChsbGludF9wcm9ncmFtX3Byb2xvZ3VlKQogICAgLy8gZ2V0IHJldHVyblBD
PHQyPjsKICAgIHIyLmkgPSByUmV0VlBDLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAt
IDE2KSA9IHIyLmk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5SZXR1cm5QQyA9IDx0Mj47
CiAgICAvLyBnZXQgY29kZUJsb2NrPHQxPjsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDgpOwogICAgckJhc2VQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA4OCk7
CiAgICByUEMuaSA9IGludHB0cl90KDB4MCk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRf
ZXZhbF9wcm9sb2d1ZSkKICAgIC8vIGdldCByZXR1cm5QQzx0Mj47CiAgICByMi5pID0gclJldFZQ
Qy5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSByMi5pOyAgICAgICAgICAg
ICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDI+OwogICAgLy8gZ2V0IGNvZGVCbG9jazx0
MT47CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHJCYXNlUEMu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgODgpOwogICAgclBDLmkgPSBpbnRwdHJfdCgw
eDApOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKQogICAgLy8gZ2V0IHJldHVyblBDPHQyPjsKICAgIHIyLmkgPSByUmV0VlBDLmk7CiAgICAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDE2KSA9IHIyLmk7ICAgICAgICAgICAgICAgICAgICAg
IC8vIGNmci5SZXR1cm5QQyA9IDx0Mj47CiAgICAvLyBnZXQgY29kZUJsb2NrPHQxPjsKICAgIHIx
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDMyKTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2FsbGVlPHJlZz4gPSBjZnIuQ2FsbGVlOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4o
cjEuaThwICsgMjQpOyAgICAgICAgICAgICAgICAgICAgICAvLyBleGVjdXRhYmxlPHJlZz4gPSBK
U0Z1bmN0aW9uPHJlZz4uZXhlY3V0YWJsZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIx
Lmk4cCArIDE2MCk7ICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHJlZz4gPSBGdW5j
dGlvbkV4ZWN1dGFibGU8cmVnPi5jb2RlQmxvY2tGb3JDYWxsOyAKICAgICpDQVNUPGludHB0cl90
Kj4oZnAuaThwIC0gOCkgPSByMS5pOwogICAgckJhc2VQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MS5pOHAgKyA4OCk7CiAgICByUEMuaSA9IGludHB0cl90KDB4MCk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ2FsbEJlZ2luKQogICAgcjAuaSA9ICpD
QVNUPHVpbnQzMl90Kj4ocjEuaThwICsgNDgpOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4o
cjEuaThwICsgODApOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgMTA3NjAp
OwogICAgcjAuaTMyID0gcjAuaTMyIDw8IGludDMyX3QoMHgzKTsKICAgIHIwLmkgPSBmcC5pICsg
cjAuaTsKICAgIGlmICgqQ0FTVDx1aW50cHRyX3QqPihyMi5pOHAgKyAyNCkgPj0gcjAudSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0
T0s7CiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0g
ckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRl
Kj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihy
UEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9yZWdpc3Rl
cl9maWxlX2NoZWNrKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3Vs
dCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVz
dWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAg
ICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQ
Qy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0spCiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJ
TkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkK
ICAgIC8vIGdldCByZXR1cm5QQzx0Mj47CiAgICByMi5pID0gclJldFZQQy5pOwogICAgKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSByMi5pOyAgICAgICAgICAgICAgICAgICAgICAvLyBj
ZnIuUmV0dXJuUEMgPSA8dDI+OwogICAgLy8gZ2V0IGNvZGVCbG9jazx0MT47CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAzMik7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyAyNCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAxNjgp
OwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KSA9IHIxLmk7CiAgICByQmFzZVBDLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDg4KTsKICAgIHJQQy5pID0gaW50cHRyX3QoMHgw
KTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbikKICAgIHIwLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIxLmk4cCArIDQ4KTsKICAg
IHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDgwKTsKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIyLmk4cCArIDEwNzYwKTsKICAgIHIwLmkzMiA9IHIwLmkzMiA8PCBpbnQzMl90
KDB4Myk7CiAgICByMC5pID0gZnAuaSArIHIwLmk7CiAgICBpZiAoKkNBU1Q8dWludHB0cl90Kj4o
cjIuaThwICsgMjQpID49IHIwLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8wX2Z1bmN0aW9u
SW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0s7CiAgICByUEMuaThwID0gckJhc2VQQy5pOHAg
KyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9u
KiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSBsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKGV4ZWMsIHBjKTsKICAgICAg
ICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0
ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9
IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkg
PSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzBfZnVuY3Rpb25Jbml0aWFs
aXphdGlvbl9fc3RhY2tIZWlnaHRPSykKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50
Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCAr
IChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykKICAgIC8vIGdldCByZXR1cm5QQzx0Mj47CiAgICBy
Mi5pID0gclJldFZQQy5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSByMi5p
OyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDI+OwogICAgLy8gZ2V0
IGNvZGVCbG9jazx0MT47CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAzMik7
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlZTxyZWc+ID0gY2ZyLkNhbGxlZTsKICAgIHIx
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDI0KTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gZXhlY3V0YWJsZTxyZWc+ID0gSlNGdW5jdGlvbjxyZWc+LmV4ZWN1dGFibGU7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAxNjApOyAgICAgICAgICAgICAgICAgICAgIC8v
IGNvZGVCbG9jazxyZWc+ID0gRnVuY3Rpb25FeGVjdXRhYmxlPHJlZz4uY29kZUJsb2NrRm9yQ2Fs
bDsgCiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpID0gcjEuaTsKICAgIHJCYXNlUEMu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgODgpOwogICAgclBDLmkgPSBpbnRwdHJfdCgw
eDApOwogICAgcjAuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDgpOwogICAgaWYgKHIw
LnUzMiA+PSAqQ0FTVDx1aW50MzJfdCo+KHIxLmk4cCArIDY0KSkKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX2Z1bmN0aW9uRm9yQ2FsbEJlZ2luOwogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsg
KHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiog
cGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5
cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjayhleGVjLCBwYyk7CiAg
ICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVj
U3RhdGUpOwogICAgfQogICAgZnAuaSA9IHIxLmk7CiAgICBpZiAocjAuaTMyID09IDApCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvbnRpbnVlOwogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUs
IGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMS5pOHAgKyAxMDg0MCk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHIx
Lmk4cCArIDEwODQ4KTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvbnRpbnVlKQogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByQmFzZVBDLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIxLmk4cCArIDg4KTsKICAgIHJQQy5pID0gaW50cHRyX3QoMHgwKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fZnVuY3Rpb25Gb3JDYWxsQmVnaW47CgpPRkZMSU5FX0FTTV9HTFVFX0xB
QkVMKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spCiAgICAvLyBnZXQg
cmV0dXJuUEM8dDI+OwogICAgcjIuaSA9IHJSZXRWUEMuaTsKICAgICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gMTYpID0gcjIuaTsgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBD
ID0gPHQyPjsKICAgIC8vIGdldCBjb2RlQmxvY2s8dDE+OwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gMzIpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsg
MjQpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMTY4KTsKICAgICpDQVNU
PGludHB0cl90Kj4oZnAuaThwIC0gOCkgPSByMS5pOwogICAgckJhc2VQQy5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMS5pOHAgKyA4OCk7CiAgICByUEMuaSA9IGludHB0cl90KDB4MCk7CiAgICByMC5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0OCk7CiAgICBpZiAocjAudTMyID49ICpDQVNU
PHVpbnQzMl90Kj4ocjEuaThwICsgNjQpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RCZWdpbjsKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8
PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FT
VDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IGxsaW50X3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayhleGVjLCBwYyk7CiAgICAg
ICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3Rh
dGUpOwogICAgfQogICAgZnAuaSA9IHIxLmk7CiAgICBpZiAocjAuaTMyID09IDApCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV8wX2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWU7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPigoYXNzZXJ0KDAgPT0gb2Zmc2V0b2YoSklUU3RhY2tGcmFtZSwg
Z2xvYmFsRGF0YSkpLCAmc3AtPmdsb2JhbERhdGEpKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIxLmk4cCArIDEwODQwKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ocjEu
aThwICsgMTA4NDgpOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtXzBfZnVuY3Rpb25Bcml0eUNoZWNrX19jb250aW51ZSkKICAgIHIx
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgckJhc2VQQy5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMS5pOHAgKyA4OCk7CiAgICByUEMuaSA9IGludHB0cl90KDB4MCk7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW47CgovLyBieXRlY29kZTog
ZW50ZXIKLy8gCi8vICAgSW5pdGlhbGl6ZXMgbG9jYWwgdmFyaWFibGVzIHRvIHVuZGVmaW5lZC4g
SWYgdGhlIGNvZGUgYmxvY2sgcmVxdWlyZXMKLy8gICBhbiBhY3RpdmF0aW9uLCBlbnRlcl93aXRo
X2FjdGl2YXRpb24gaXMgdXNlZCBpbnN0ZWFkLgovLyAgIFRoaXMgb3Bjb2RlIGFwcGVhcnMgb25s
eSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9lbnRlcikKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOyAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJsb2NrPiA9IGNmci5Db2RlQmxvY2sKICAg
IHIyLmkgPSAqQ0FTVDx1aW50MzJfdCo+KHIyLmk4cCArIDUyKTsgICAgICAgICAgICAgICAgICAg
ICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCiAgICBpZiAocjIuaTMy
ID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChu
dW1WYXJzPHQyPiA9PSAwKSBnb3RvIC5kb25lOwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BF
bnRlckRvbmU7CiAgICByMC5pID0gaW50cHRyX3QoMHhhKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGpzVW5kZWZpbmVkPHQwPiA9IFVuZGVmaW5lZDsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BFbnRlckxvb3ApCiAgICByMi5pMzIgPSBy
Mi5pMzIgLSBpbnQzMl90KDB4MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbnVt
VmFyczx0Mj4tLTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpID0gcjAuaTsgLy8gICBjZnJbbnVtVmFyczx0Mj5dID0ganNVbmRlZmlu
ZWQ8dDA+OwogICAgaWYgKHIyLmkzMiAhPSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAobnVtVmFyczx0Mj4gIT0gMCkgZ290byAubG9vcDsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wRW50ZXJMb29wOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9vcEVudGVyRG9uZSkKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IGNyZWF0ZV9hY3RpdmF0aW9u
IGRzdChyKQovLyAKLy8gICBJZiB0aGUgYWN0aXZhdGlvbiBvYmplY3QgZm9yIHRoaXMgY2FsbGZy
YW1lIGhhcyBub3QgeWV0IGJlZW4gY3JlYXRlZCwKLy8gICB0aGlzIGNyZWF0ZXMgaXQgYW5kIHdy
aXRlcyBpdCBiYWNrIHRvIGRzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9jcmVhdGVf
YWN0aXZhdGlvbikKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBD
LmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOyAvLyBhY3RpdmF0aW9uUmVnPHQwPiA9IG9wZXJh
bmQ8ZHN0UmVnSWQ+OwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpICE9IGludHB0cl90KDB4MCkpIC8vIGlmIChjZnJbYWN0aXZh
dGlvblJlZzx0MD5dICE9IEVtcHR5KSBnb3RvIC5kb25lOwogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fb3BDcmVhdGVBY3RpdmF0aW9uRG9uZTsKICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV9h
Y3RpdmF0aW9uOwogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAg
cjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4
ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0
aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRf
c2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVj
b2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAg
ICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5l
eGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJC
YXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wQ3JlYXRlQWN0aXZhdGlvbkRvbmUpCiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5
dGVjb2RlOiBpbml0X2xhenlfcmVnIGRzdChyKQovLyAKLy8gICBJbml0aWFsaXNlcyBkc3Qocikg
dG8gSlNWYWx1ZSgpLgovLyAgIFRoaXMgb3Bjb2RlIGFwcGVhcnMgb25seSBhdCB0aGUgYmVnaW5u
aW5nIG9mIGEgY29kZSBibG9jay4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9pbml0X2xh
enlfcmVnKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg4KSk7IC8vIGRzdDx0MD4gPSBvcGVyYW5kPGRzdFJlZ0lkPjsK
ICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gaW50cHRyX3QoMHgwKTsgLy8gY2ZyW2RzdDx0MD5dID0gRW1wdHk7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHgyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCi8vIGJ5dGVjb2Rl
OiBjcmVhdGVfYXJndW1lbnRzIGRzdChyKQovLyAKLy8gICBDcmVhdGVzIHRoZSAnYXJndW1lbnRz
JyBvYmplY3QgYW5kIHBsYWNlcyBpdCBpbiBib3RoIHRoZQovLyAgICdhcmd1bWVudHMnIGNhbGwg
ZnJhbWUgc2xvdCBhbmQgdGhlIGxvY2FsICdhcmd1bWVudHMnCi8vICAgcmVnaXN0ZXIsIGlmIGl0
IGhhcyBub3QgYWxyZWFkeSBiZWVuIGluaXRpYWxpc2VkLgoKT0ZGTElORV9BU01fT1BDT0RFX0xB
QkVMKG9wX2NyZWF0ZV9hcmd1bWVudHMpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsgLy8gZHN0PHQwPiA9IG9w
ZXJhbmQ8ZHN0UmVnSWQ+OwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpICE9IGludHB0cl90KDB4MCkpIC8vIGlmIChjZnJbZHN0
PHQwPl0gIT0gRW1wdHkpIGdvdG8gLmRvbmU7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcENy
ZWF0ZUFyZ3VtZW50c0RvbmU7CiAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRz
OwogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJC
YXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+
KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBD
LnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRo
X2NyZWF0ZV9hcmd1bWVudHMoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQo
cmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0g
cjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0
MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwog
ICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fb3BDcmVhdGVBcmd1bWVudHNEb25lKQogICAgclBDLmkgPSByUEMu
aSArIGludHB0cl90KDB4Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBj
ICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29k
ZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogb3Bf
Y3JlYXRlX3RoaXMgdGhpcyhyKSBwcm90byhyKQovLyAKLy8gICBBbGxvY2F0ZSBhbiBvYmplY3Qg
YXMgJ3RoaXMnLCBmb3IgdXNlIGluIGNvbnN0cnVjdGlvbi4KLy8gICBUaGlzIG9wY29kZSBzaG91
bGQgb25seSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX2NyZWF0ZV90aGlzKQogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4oZnAuaThwIC0gMzIpOyAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzPHQwPiA9IGNm
ci5DYWxsZWU7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA0MCk7ICAgICAg
ICAgICAgICAgICAgICAgIC8vIGluaGVyaXRvcjx0Mj4gPSB0aGlzPHQwPi5jYWNoZWRJbmhlcml0
b3JJRDsKICAgIGlmIChyMi5pID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKGluaGVyaXRvciA9PSAwKSBnb3RvIC5zbG93OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdzsKICAgIC8vIGFsbG9jYXRlQmFzaWNKU09i
amVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIGpzRmluYWxPYmplY3QuY2xhc3MsIHQy
LCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdyk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGE0
PiA9IGNmci5Db2RlQmxvY2s7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA4
MCk7ICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ2xvYmFsRGF0YTxhND4gPSBjb2RlQmxvY2s8
YTQ+Lmdsb2JhbERhdGE7CiAgICAvLyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
ICAgCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAxNjgwKTsgICAgICAgICAg
ICAgICAgICAgIC8vICAgcmVzdWx0PGEzPiA9IGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZp
cnN0RnJlZUNlbGw7CiAgICBpZiAocjAuaSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKCFyZXN1bHQ8YTM+IGkuZS4gbm8gZnJlZSBjZWxs
KSBnb3RvIC5zbG93Q2FzZTsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wQ3JlYXRlVGhpc1Ns
b3c7CiAgICAvLyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCiAgICByNC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgbmV4dDxhNT4gPSByZXN1bHQ8YTM+LnB0cjsKICAgICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgMTY4MCkgPSByNC5pOyAgICAgICAgICAgICAgICAgICAgLy8gICBnbG9iYWxEYXRhPGE0Pi5N
eVNpemVDbGFzcy5GaXJzdEZyZWVDZWxsID0gbmV4dDxhNT47CiAgICAvLyBJbml0aWFsaXplIHRo
ZSBvYmplY3QuCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAxMDgwOCk7ICAg
ICAgICAgICAgICAgICAgIC8vICAgY2xhc3NJbmZvPGE1PiA9IGdsb2JhbERhdGE8YTQ+LmNsYXNz
SW5mb09mZnNldDsKICAgICpDQVNUPGludHB0cl90Kj4ocjAuaThwKSA9IHI0Lmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+LnB0ciA9IGNsYXNzSW5mbzxhNT47CiAg
ICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpID0gcjIuaTsgICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgcmVzdWx0PGEzPi5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU8YTI+OwogICAgKkNBU1Q8
aW50cHRyX3QqPihyMC5pOHAgKyAxNikgPSBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAvLyAg
IHJlc3VsdDxhMz4ub3V0T2ZMaW5lU3RvcmFnZSA9IDA7CiAgICByMS5pID0gKkNBU1Q8aW50MzJf
dCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsgLy8gdGhp
c0lEPHQxPiA9IG9wZXJhbmQ8dGhpc1JlZ0lkPjsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThw
ICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjAuaTsgLy8gY2ZyW3RoaXNJRDx0
MT5dID0gdGhpczx0MD47CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BD
cmVhdGVUaGlzU2xvdykKICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV90aGlzOwogICAgclBD
Lmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsK
ICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90
aGlzKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5z
dHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3Ry
dWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBD
LmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBD
LnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9jb252ZXJ0
X3RoaXMpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGlmICgocjAuaSAmIHRhZ01h
c2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wQ29udmVydFRoaXNTbG93Owog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOCk7CiAgICBpZiAoKkNBU1Q8dWlu
dDhfdCo+KHIwLmk4cCArIDE2KSA8IHVpbnQ4X3QoMHhkKSkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX29wQ29udmVydFRoaXNTbG93OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQ
Qy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcENvbnZlcnRUaGlzU2xvdykKICAgIHJQQy5pOHAgPSBy
QmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAg
ICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAg
SW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xv
d1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jb252ZXJ0X3RoaXMoZXhl
YywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlv
biwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248
dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0
Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1
aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX25ld19vYmplY3QpCiAg
ICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIwLmk4cCArIDMyKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIDc2MCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsgICAgICAg
ICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPGE0PiA9IGNmci5Db2RlQmxvY2s7CiAgICBy
Mi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA4MCk7ICAgICAgICAgICAgICAgICAgICAg
IC8vICAgZ2xvYmFsRGF0YTxhND4gPSBjb2RlQmxvY2s8YTQ+Lmdsb2JhbERhdGE7CiAgICAvLyBH
ZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMi5pOHAgKyAxNjgwKTsgICAgICAgICAgICAgICAgICAgIC8vICAgcmVzdWx0PGEz
PiA9IGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNlbGw7CiAgICBpZiAocjAu
aSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAg
aWYgKCFyZXN1bHQ8YTM+IGkuZS4gbm8gZnJlZSBjZWxsKSBnb3RvIC5zbG93Q2FzZTsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wTmV3T2JqZWN0U2xvdzsKICAgIC8vIFJlbW92ZSB0aGUgb2Jq
ZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBuZXh0PGE1PiA9IHJlc3VsdDxhMz4u
cHRyOwogICAgKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyAxNjgwKSA9IHI0Lmk7ICAgICAgICAg
ICAgICAgICAgICAvLyAgIGdsb2JhbERhdGE8YTQ+Lk15U2l6ZUNsYXNzLkZpcnN0RnJlZUNlbGwg
PSBuZXh0PGE1PjsKICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdC4KICAgIHI0LmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIyLmk4cCArIDEwODA4KTsgICAgICAgICAgICAgICAgICAgLy8gICBjbGFz
c0luZm88YTU+ID0gZ2xvYmFsRGF0YTxhND4uY2xhc3NJbmZvT2Zmc2V0OwogICAgKkNBU1Q8aW50
cHRyX3QqPihyMC5pOHApID0gcjQuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHJl
c3VsdDxhMz4ucHRyID0gY2xhc3NJbmZvPGE1PjsKICAgICpDQVNUPGludHB0cl90Kj4ocjAuaThw
ICsgOCkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgLy8gICByZXN1bHQ8YTM+LnN0cnVj
dHVyZSA9IHN0cnVjdHVyZTxhMj47CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDE2KSA9
IGludHB0cl90KDB4MCk7ICAgICAgICAgICAgIC8vICAgcmVzdWx0PGEzPi5vdXRPZkxpbmVTdG9y
YWdlID0gMDsKICAgIHIxLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAo
cjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX29wTmV3T2JqZWN0U2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBD
Lmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAg
RXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1
Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhS
ZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KGV4ZWMsIHBjKTsK
ICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4
ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAg
ZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAg
clBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90
KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9w
Y29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9tb3YpCiAgICByMS5pID0gKkNBU1Q8
aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7
CiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDgpKTsKICAgIGlmIChyMS5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7
CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThw
IC0gOCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA5MzYpOwogICAgcjEu
aSA9IHIxLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIyLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkK
ICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gcjIuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKLy8gYnl0ZWNvZGU6IG5vdCBkc3RSZWdJZCBzcmNSZWdJZAovLyBmdW5jdGlv
bjogY2ZyW2RzdHJlZ0lkXSA9ICFjZnJbc3JjcmVnSWRdOwovLyAKLy8gICBDb21wdXRlcyBsb2dp
Y2FsIE5PVCBvZiByZWdpc3RlciBzcmMgKGNvbnZlcnRlZCB0bwovLyAgIGJvb2xlYW4pLCBhbmQg
cHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJF
TChvcF9ub3QpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlmIChyMC5p
ID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxp
bmVhc21fMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV8wX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQog
ICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMi5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMi5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgweDQw
MDAwMDAwKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIChyMC5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgcjIuaSA9IHIyLmkgXiBpbnRw
dHJfdCgweDYpOwogICAgaWYgKChyMi5pICYgaW50cHRyX3QoLTIpKSAhPSAwKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fb3BOb3RTbG93OwogICAgcjIuaSA9IHIyLmkgXiBpbnRwdHJfdCgweDcp
OwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSkgPSByMi5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wTm90
U2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0Lmkg
PSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3Rh
dGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3df
cGF0aF9ub3QoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCBy
MC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQu
aW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJC
YXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUg
PSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2Vx
KQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgxOCkpOwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjQuaSA9ICpDQVNUPGlu
dDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAg
ICBpZiAocjAuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX2VxdWFsaXR5Q29tcGFyaXNvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX18xX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2Zm
bGluZWFzbV9lcXVhbGl0eUNvbXBhcmlzb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMl9f
MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9lcXVhbGl0eUNvbXBhcmlzb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVJ
bnQzMl9fMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEu
aThwICsgOTM2KTsKICAgIHIwLmkgPSByMC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICBy
MS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2VxdWFsaXR5Q29t
cGFyaXNvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX18xX2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2RvbmUpCiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX2VxdWFsaXR5Q29tcGFyaXNvbl9fc2xvdzsKICAgIGlmIChyMi5pID49IGlu
dHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZXF1YWxpdHlDb21w
YXJpc29uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzJfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2VxdWFsaXR5
Q29tcGFyaXNvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX18yX2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Vx
dWFsaXR5Q29tcGFyaXNvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX18yX2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAu
aThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAg
cjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZXF1YWxpdHlDb21wYXJpc29uX19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlSW50MzJfXzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAg
IGlmIChyMC51IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZXF1
YWxpdHlDb21wYXJpc29uX19zbG93OwogICAgcjAuaSA9IChyMC51MzIgPT0gcjEudTMyKTsKICAg
IHIwLmkgPSByMC5pIHwgaW50cHRyX3QoMHg2KTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThw
ICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9lcXVhbGl0eUNvbXBhcmlzb25fX3Nsb3cpCiAgICByUEMu
aThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwog
ICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwog
ICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAg
ICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfZXEoZXhlYywg
cGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwg
cjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+
CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7
CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50
cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX25lcSkKICAgIHIwLmkgPSAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MTgpKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQ
Qy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIwLmkgPj0g
aW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9lcXVhbGl0eUNv
bXBhcmlzb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMl9fM19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fZXF1YWxp
dHlDb21wYXJpc29uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzNfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
ZXF1YWxpdHlDb21wYXJpc29uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzNfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihm
cC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDkzNik7CiAg
ICByMC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjEuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9lcXVhbGl0eUNvbXBhcmlzb25fX2xvYWRD
b25zdGFudE9yVmFyaWFibGVJbnQzMl9fM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQog
ICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV80
X2VxdWFsaXR5Q29tcGFyaXNvbl9fc2xvdzsKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAw
MDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZXF1YWxpdHlDb21wYXJpc29uX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2VxdWFsaXR5Q29tcGFyaXNvbl9f
bG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX180X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2VxdWFsaXR5Q29tcGFy
aXNvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX180X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAg
ICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkg
LSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fZXF1YWxpdHlDb21wYXJpc29uX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlSW50MzJfXzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMC51IDwg
dGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNF9lcXVhbGl0eUNvbXBh
cmlzb25fX3Nsb3c7CiAgICByMC5pID0gKHIwLnUzMiAhPSByMS51MzIpOwogICAgcjAuaSA9IHIw
LmkgfCBpbnRwdHJfdCgweDYpOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjQuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0
cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9m
KGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzRfZXF1YWxpdHlDb21wYXJpc29uX19zbG93KQogICAgclBDLmk4cCA9IHJC
YXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJ
bnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX25lcShleGVjLCBwYyk7CiAg
ICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVj
U3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZw
LmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQ
Qy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgw
eDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZXFfbnVsbCkKICAgIHIwLmkgPSAqQ0FT
VDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTAp
KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsKICAgIGlmICgocjAuaSAmIHRhZ01hc2suaSkgIT0gMCkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX2VxdWFsTnVsbENvbXBhcmlzb25fX2ltbWVkaWF0ZTsKICAgIHIyLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgcjAuaSA9ICgoKkNBU1Q8aW50OF90
Kj4ocjIuaThwICsgMTcpICYgaW50OF90KDB4MSkpICE9IDApOwogICAgZ290byBfb2ZmbGluZWFz
bV9lcXVhbE51bGxDb21wYXJpc29uX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9lcXVhbE51bGxDb21wYXJpc29uX19pbW1lZGlhdGUpCiAgICByMC5pID0gcjAu
aSAmIGludHB0cl90KC05KTsKICAgIHIwLmkgPSAocjAudSA9PSB1aW50cHRyX3QoMHgyKSk7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2VxdWFsTnVsbENvbXBhcmlzb25f
X2RvbmUpCiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIwLmkgPSByMC5pIHwgaW50cHRyX3QoMHg2KTsK
ICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX25lcV9udWxsKQogICAgcjAu
aSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgxMCkpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgaWYgKChyMC5pICYgdGFnTWFzay5pKSAhPSAwKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fNF9lcXVhbE51bGxDb21wYXJpc29uX19pbW1lZGlhdGU7
CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KTsKICAgIHIwLmkgPSAoKCpD
QVNUPGludDhfdCo+KHIyLmk4cCArIDE3KSAmIGludDhfdCgweDEpKSAhPSAwKTsKICAgIGdvdG8g
X29mZmxpbmVhc21fNF9lcXVhbE51bGxDb21wYXJpc29uX19kb25lOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV80X2VxdWFsTnVsbENvbXBhcmlzb25fX2ltbWVkaWF0ZSkK
ICAgIHIwLmkgPSByMC5pICYgaW50cHRyX3QoLTkpOwogICAgcjAuaSA9IChyMC51ID09IHVpbnRw
dHJfdCgweDIpKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNF9lcXVh
bE51bGxDb21wYXJpc29uX19kb25lKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMC5pID0gcjAuaSBe
IGludHB0cl90KDB4Nyk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9z
dHJpY3RlcSkKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MTgpKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIGlmIChyMC5p
ID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fc3RyaWN0
RXFfXzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX3N0cmljdEVxX181X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX181X2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwog
ICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIxLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fc3RyaWN0RXFfXzVfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fc3RyaWN0RXFfXzZfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3N0cmljdEVxX182
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtX3N0cmljdEVxX182X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgw
eDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fc3RyaWN0RXFfXzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIHIyLmkg
PSByMC5pOwogICAgcjIuaSA9IHIyLmkgfCByMS5pOwogICAgaWYgKChyMi5pICYgdGFnTWFzay5p
KSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fc3RyaWN0RXFfX3Nsb3c7CiAgICBpZiAo
cjAudSA+PSB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9zdHJpY3RF
cV9fbGVmdE9LOwogICAgaWYgKChyMC5pICYgdGFnVHlwZU51bWJlci5pKSAhPSAwKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fc3RyaWN0RXFfX3Nsb3c7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX19sZWZ0T0spCiAgICBpZiAocjEudSA+PSB0YWdUeXBl
TnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9zdHJpY3RFcV9fcmlnaHRPSzsKICAg
IGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX3N0cmljdEVxX19zbG93OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9zdHJpY3RFcV9fcmlnaHRPSykKICAgIHIwLmkgPSAocjAudSA9PSByMS51KTsKICAgIHIxLmkg
PSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4OCkpOwogICAgcjAuaSA9IHIwLmkgfCBpbnRwdHJfdCgweDYpOwogICAgKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX19zbG93KQogICAgclBD
Lmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsK
ICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3N0cmljdGVx
KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1
Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkg
PSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUg
Pj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBD
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9uc3RyaWN0ZXEp
CiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDE4KSk7CiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBpZiAocjAuaSA+PSBpbnRw
dHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3N0cmljdEVxX183X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2Zm
bGluZWFzbV9zdHJpY3RFcV9fN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9zdHJpY3RFcV9fN19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAt
IDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgOTM2KTsKICAgIHIwLmkg
PSByMC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0cmljdEVxX183X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmUpCiAgICBpZiAocjIuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX3N0cmljdEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9zdHJpY3RFcV9fOF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9zdHJpY3RFcV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIyLmkgPSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAw
MCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3N0
cmljdEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICByMi5pID0gcjAuaTsK
ICAgIHIyLmkgPSByMi5pIHwgcjEuaTsKICAgIGlmICgocjIuaSAmIHRhZ01hc2suaSkgPT0gMCkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzhfc3RyaWN0RXFfX3Nsb3c7CiAgICBpZiAocjAudSA+
PSB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X3N0cmljdEVxX19s
ZWZ0T0s7CiAgICBpZiAoKHIwLmkgJiB0YWdUeXBlTnVtYmVyLmkpICE9IDApCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV84X3N0cmljdEVxX19zbG93OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV84X3N0cmljdEVxX19sZWZ0T0spCiAgICBpZiAocjEudSA+PSB0YWdUeXBl
TnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X3N0cmljdEVxX19yaWdodE9LOwog
ICAgaWYgKChyMS5pICYgdGFnVHlwZU51bWJlci5pKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fOF9zdHJpY3RFcV9fc2xvdzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fOF9zdHJpY3RFcV9fcmlnaHRPSykKICAgIHIwLmkgPSAocjAudSAhPSByMS51KTsKICAg
IHIxLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4OCkpOwogICAgcjAuaSA9IHIwLmkgfCBpbnRwdHJfdCgweDYpOwogICAgKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5p
OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzhfc3RyaWN0RXFfX3Nsb3cp
CiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJh
c2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4o
ZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMu
dnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhf
bnN0cmljdGVxKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICBy
QmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51
ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9w
cmVfaW5jKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBpZiAocjEudSA8IHRhZ1R5
cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3ByZU9wX19zbG93OwogICAgewog
ICAgICAgIGludDMyX3QgYSA9IGludDMyX3QoMHgxKTsKICAgICAgICBpbnQzMl90IGIgPSByMS5p
MzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOgogICAgICAgIC8v
IDAgICAgICAgMCAgICAgICB8IHNpZ24oYithKSA9IDEgKHBvcyArIHBvcyAhPSBuZWcpCiAgICAg
ICAgLy8gMCAgICAgICAxICAgICAgIHwgbmV2ZXIKICAgICAgICAvLyAxICAgICAgIDAgICAgICAg
fCBuZXZlcgogICAgICAgIC8vIDEgICAgICAgMSAgICAgICB8IHNpZ24oYithKSA9IDAgKG5lZyAr
IG5lZyAhPSBwb3MpCiAgICAgICAgaWYgKChTSUdOX0JJVDMyKGIpID09IFNJR05fQklUMzIoYSkp
ICYmIChTSUdOX0JJVDMyKGIrYSkgIT0gU0lHTl9CSVQzMihhKSkpIHsKICAgICAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9wcmVPcF9fc2xvdzsKICAgICAgICB9CiAgICAgICAgcjEuaTMyID0gcjEu
aTMyICsgaW50MzJfdCgweDEpOwogICAgfQogICAgcjEuaSA9IHIxLmkgfCB0YWdUeXBlTnVtYmVy
Lmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKSA9IHIxLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHJl
T3BfX3Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICBy
NC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhl
Y1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rp
b24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9z
bG93X3BhdGhfcHJlX2luYyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChy
ZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSBy
MC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQx
PgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAg
ICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfcHJlX2RlYykKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgaWYgKHIxLnUg
PCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X3ByZU9wX19zbG93
OwogICAgewogICAgICAgIGludDMyX3QgYSA9IGludDMyX3QoMHgxKTsKICAgICAgICBpbnQzMl90
IGIgPSByMS5pMzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOgog
ICAgICAgIC8vIDAgICAgICAgMCAgICAgICB8IG5ldmVyCiAgICAgICAgLy8gMCAgICAgICAxICAg
ICAgIHwgc2lnbihiLWEpID0gMSAocG9zIC0gbmVnICE9IHBvcykKICAgICAgICAvLyAxICAgICAg
IDAgICAgICAgfCBzaWduKGItYSkgPSAwIChuZWcgLSBwb3MgIT0gcG9zKQogICAgICAgIC8vIDEg
ICAgICAgMSAgICAgICB8IG5ldmVyCiAgICAgICAgaWYgKChTSUdOX0JJVDMyKGIpICE9IFNJR05f
QklUMzIoYSkpICYmIChTSUdOX0JJVDMyKGItYSkgPT0gU0lHTl9CSVQzMihhKSkpIHsKICAgICAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV84X3ByZU9wX19zbG93OwogICAgICAgIH0KICAgICAgICBy
MS5pMzIgPSByMS5pMzIgLSBpbnQzMl90KDB4MSk7CiAgICB9CiAgICByMS5pID0gcjEuaSB8IHRh
Z1R5cGVOdW1iZXIuaTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpID0gcjEuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV84X3ByZU9wX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5p
IDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBD
QVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVz
dWx0ID0gbGxpbnRfc2xvd19wYXRoX3ByZV9kZWMoZXhlYywgcGMpOwogICAgICAgIExMSW50Ojpk
ZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0K
ICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0g
ckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5p
ID0gclBDLmkgKyBpbnRwdHJfdCgweDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJ
bnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9B
U01fT1BDT0RFX0xBQkVMKG9wX3Bvc3RfaW5jKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihy
QmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjEuaSA9
ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg4KSk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7CiAgICBpZiAocjAuaTMyID09IHIxLmkzMikKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX3Bvc3RPcF9fZG9uZTsKICAgIGlmIChyMi51IDwgdGFnVHlwZU51bWJlci51
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcG9zdE9wX19zbG93OwogICAgcjQuaSA9IHIyLmk7
CiAgICB7CiAgICAgICAgaW50MzJfdCBhID0gaW50MzJfdCgweDEpOwogICAgICAgIGludDMyX3Qg
YiA9IHI0LmkzMjsKICAgICAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6CiAg
ICAgICAgLy8gMCAgICAgICAwICAgICAgIHwgc2lnbihiK2EpID0gMSAocG9zICsgcG9zICE9IG5l
ZykKICAgICAgICAvLyAwICAgICAgIDEgICAgICAgfCBuZXZlcgogICAgICAgIC8vIDEgICAgICAg
MCAgICAgICB8IG5ldmVyCiAgICAgICAgLy8gMSAgICAgICAxICAgICAgIHwgc2lnbihiK2EpID0g
MCAobmVnICsgbmVnICE9IHBvcykKICAgICAgICBpZiAoKFNJR05fQklUMzIoYikgPT0gU0lHTl9C
SVQzMihhKSkgJiYgKFNJR05fQklUMzIoYithKSAhPSBTSUdOX0JJVDMyKGEpKSkgewogICAgICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX3Bvc3RPcF9fc2xvdzsKICAgICAgICB9CiAgICAgICAgcjQu
aTMyID0gcjQuaTMyICsgaW50MzJfdCgweDEpOwogICAgfQogICAgcjQuaSA9IHI0LmkgfCB0YWdU
eXBlTnVtYmVyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKSA9IHIyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHI0Lmk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX3Bvc3RPcF9fZG9uZSkKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9wb3N0T3BfX3Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAo
clBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBw
YyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcG9zdF9pbmMoZXhlYywgcGMpOwogICAgICAgIExM
SW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsK
ICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQ
Qy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3Bvc3RfZGVjKQogICAgcjAuaSA9ICpDQVNUPGludDMy
X3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAg
cjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg4KSk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBpZiAocjAuaTMyID09IHIxLmkzMikKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzhfcG9zdE9wX19kb25lOwogICAgaWYgKHIyLnUgPCB0YWdUeXBl
TnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X3Bvc3RPcF9fc2xvdzsKICAgIHI0
LmkgPSByMi5pOwogICAgewogICAgICAgIGludDMyX3QgYSA9IGludDMyX3QoMHgxKTsKICAgICAg
ICBpbnQzMl90IGIgPSByNC5pMzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZs
b3dzIGlmOgogICAgICAgIC8vIDAgICAgICAgMCAgICAgICB8IG5ldmVyCiAgICAgICAgLy8gMCAg
ICAgICAxICAgICAgIHwgc2lnbihiLWEpID0gMSAocG9zIC0gbmVnICE9IHBvcykKICAgICAgICAv
LyAxICAgICAgIDAgICAgICAgfCBzaWduKGItYSkgPSAwIChuZWcgLSBwb3MgIT0gcG9zKQogICAg
ICAgIC8vIDEgICAgICAgMSAgICAgICB8IG5ldmVyCiAgICAgICAgaWYgKChTSUdOX0JJVDMyKGIp
ICE9IFNJR05fQklUMzIoYSkpICYmIChTSUdOX0JJVDMyKGItYSkgPT0gU0lHTl9CSVQzMihhKSkp
IHsKICAgICAgICAgICAgZ290byBfb2ZmbGluZWFzbV84X3Bvc3RPcF9fc2xvdzsKICAgICAgICB9
CiAgICAgICAgcjQuaTMyID0gcjQuaTMyIC0gaW50MzJfdCgweDEpOwogICAgfQogICAgcjQuaSA9
IHI0LmkgfCB0YWdUeXBlTnVtYmVyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChy
MS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHI0Lmk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzhfcG9zdE9wX19kb25lKQogICAgclBDLmkg
PSByUEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzhfcG9zdE9wX19zbG93KQogICAgclBDLmk4cCA9
IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsK
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAg
ICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVjKGV4ZWMs
IHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24s
IHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQw
PgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5p
OwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWlu
dHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsK
ICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF90b19qc251bWJlcikKICAg
IHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MTApKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIwLmkgPj0gaW50cHRyX3Qo
MHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50OwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIw
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV85X2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtXzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMi5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIy
Lmk4cCArIDkzNik7CiAgICByMC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAg
cjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV85X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAocjIudSA+PSB0YWdUeXBlTnVtYmVyLnUpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFRvSnNudW1iZXJJc0ltbWVkaWF0ZTsKICAgIGlmICgo
cjIuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29w
VG9Kc251bWJlclNsb3c7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29w
VG9Kc251bWJlcklzSW1tZWRpYXRlKQogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMi5pOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX29wVG9Kc251bWJlclNsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5p
OHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0
aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0
dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIoZXhlYywgcGMpOwog
ICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhl
Y1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBm
cC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICBy
UEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3Qo
MHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09E
RSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX25lZ2F0ZSkKICAgIHIwLmkgPSAqQ0FT
VDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTAp
KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAz
KSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIwLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25z
dGFudDsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fMTBfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMTBf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA4KTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDkz
Nik7CiAgICByMC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjIuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjIuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8xMF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lKQogICAgaWYgKHIyLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9vcE5lZ2F0ZU5vdEludDsKICAgIGlmICgocjIuaTMyICYgaW50MzJfdCgw
eDdmZmZmZmZmKSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wTmVnYXRlU2xvdzsK
ICAgIHIyLmkzMiA9IC1yMi5pMzI7CiAgICByMi5pID0gcjIuaSB8IHRhZ1R5cGVOdW1iZXIuaTsK
ICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gcjIuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcE5lZ2F0
ZU5vdEludCkKICAgIGlmICgocjIuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX29wTmVnYXRlU2xvdzsKICAgIHIyLmkgPSByMi5pIF4gaW50cHRyX3Qo
MHg4MDAwMDAwMDAwMDAwMDAwKTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjIuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAo
clBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBw
YyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfbmVnYXRlKGV4ZWMsIHBjKTsKICAgICAgICBMTElu
dDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAg
ICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJl
c3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMu
aSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJ
TkVfQVNNX09QQ09ERV9MQUJFTChvcF9hZGQpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7IC8vIHNyYzJJZDx0
MD4gPSBvcGVyYW5kc1tzcmMyUmVnSWRdOwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOyAvLyBzcmMxSWQ8dDI+
ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3Jj
MklkPHQwPiA9PT4gc3JjMjx0MT4pOwogICAgaWYgKHIwLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAw
MCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9y
ZV9fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xMV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTFfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsK
ICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDkzNik7CiAgICByMC5pID0gcjAu
aSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEu
aThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTFfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c3JjMUlkPHQyPiA9PT4gc3JjMTx0MD4pOwogICAgaWYgKHIyLmkgPj0gaW50cHRyX3QoMHg0MDAw
MDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21T
dG9yZV9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAg
ICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xMl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4
KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByMi5pID0g
cjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4o
cjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMC51IDwgdGFnVHlwZU51bWJl
ci51KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzE8dDA+IGlzIE5P
VCBJbnQpIGdvdG8gLm9wMU5vdEludDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9w
X19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQ7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVO
dW1iZXIudSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmMyPHQxPiBp
cyBOT1QgSW50KSBnb3RvIC5vcDJOb3RJbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5h
cnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50OwogICAgLy8gb3AxIGFuZCBvcDIg
YXJlIGludDMyOiBkbyBmYXN0IGludDMyIG9wZXJhdGlvbiwgYW5kIGVuZC4KICAgIHIyLmkgPSAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
OCkpOyAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CiAgICAvLyB0MiA9IHQxIG9w
ZXJhdG9yIHQwOwogICAgewogICAgICAgIGludDMyX3QgYSA9IHIxLmkzMjsKICAgICAgICBpbnQz
Ml90IGIgPSByMC5pMzI7CiAgICAgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlm
OgogICAgICAgIC8vIDAgICAgICAgMCAgICAgICB8IHNpZ24oYithKSA9IDEgKHBvcyArIHBvcyAh
PSBuZWcpCiAgICAgICAgLy8gMCAgICAgICAxICAgICAgIHwgbmV2ZXIKICAgICAgICAvLyAxICAg
ICAgIDAgICAgICAgfCBuZXZlcgogICAgICAgIC8vIDEgICAgICAgMSAgICAgICB8IHNpZ24oYith
KSA9IDAgKG5lZyArIG5lZyAhPSBwb3MpCiAgICAgICAgaWYgKChTSUdOX0JJVDMyKGIpID09IFNJ
R05fQklUMzIoYSkpICYmIChTSUdOX0JJVDMyKGIrYSkgIT0gU0lHTl9CSVQzMihhKSkpIHsKICAg
ICAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9f
c2xvdzsKICAgICAgICB9CiAgICAgICAgcjAuaTMyID0gcjAuaTMyICsgcjEuaTMyOwogICAgfQog
ICAgcjAuaSA9IHIwLmkgfCB0YWdUeXBlTnVtYmVyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg1KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmlu
YXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludCkKICAgIC8vIG9wMSBpcyBkZWZp
bml0ZWx5IG5vdCBhbiBpbnQsIG9wMiBjb3VsZCBiZSBhbnl0aGluZy4KICAgIGlmICgocjAuaSAm
IHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNy
YzE8dDA+IGlzIGNvbXBsZXggdHlwZSkgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgaWYgKHIxLnUgPj0g
dGFnVHlwZU51bWJlci51KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3Jj
Mjx0MT4gPj0gdGFnVHlwZU51bWJlcikgZ290byAub3AxTm90SW50T3AySW50OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9w
MkludDsKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgKHNyYzI8dDE+IGlzIGNvbXBsZXggdHlwZSkgZ290byAuc2xvdzsK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19z
bG93OwogICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gc3JjMTx0MD4gaXMgYSBkb3VibGUsIGFu
ZCBzcmMyPHQxPiBpcyBhIGRvdWJsZToKICAgIHIxLmkgPSByMS5pICsgdGFnVHlwZU51bWJlci5p
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdDEgKz0gdGFnVHlwZU51bWJlcjsKICAg
IGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQ29udmVydCBzcmM8dDE+IHRvIGEgZG91YmxlPGZ0MT47CiAgICBnb3RvIF9vZmZsaW5l
YXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX29wMU5vdEludE9wMkludCkKICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHNyYzE8
dDA+IG11c3QgYmUgYSBkb3VibGUgKG9wMSBub3QgaW50LCBhbmQgbm90IGNvbXBsZXggdHlwZSk6
CiAgICBkMS5kID0gcjEuaTMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENvbnZlcnQgc3JjMjx0MT4gdG8gYSBkb3VibGU8ZnQxPjsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVf
X29wMU5vdEludFJlYWR5KQogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCAr
IChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMC5pID0gcjAuaSArIHRhZ1R5
cGVOdW1iZXIuaTsKICAgIGQwLmQgPSByMC5jYXN0VG9Eb3VibGU7CiAgICBkMC5kID0gZDAuZCAr
IGQxLmQ7CiAgICByMC52cCA9IGQwLmNhc3RUb1ZvaWRQdHI7CiAgICByMC5pID0gcjAuaSAtIHRh
Z1R5cGVOdW1iZXIuaTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50KQogICAgcjIu
aSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg4KSk7CiAgICBpZiAoKHIxLmkgJiB0YWdUeXBlTnVtYmVyLmkpID09IDApCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdzsKICAg
IGQwLmQgPSByMC5pMzI7CiAgICByMS5pID0gcjEuaSArIHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQx
LmQgPSByMS5jYXN0VG9Eb3VibGU7CiAgICBkMC5kID0gZDAuZCArIGQxLmQ7CiAgICByMC52cCA9
IGQwLmNhc3RUb1ZvaWRQdHI7CiAgICByMC5pID0gcjAuaSAtIHRhZ1R5cGVOdW1iZXIuaTsKICAg
ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
ID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAg
b3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09Q
Q09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9f
YmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChy
UEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBj
ID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBl
IHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9hZGQoZXhlYywgcGMpOwogICAgICAgIExMSW50Ojpk
ZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0K
ICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0g
ckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5p
ID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJ
bnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9B
U01fT1BDT0RFX0xBQkVMKG9wX211bCkKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQ
Qy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTgpKTsgLy8gc3JjMklkPHQwPiA9
IG9wZXJhbmRzW3NyYzJSZWdJZF07CiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7IC8vIHNyYzFJZDx0Mj4gPSBv
cGVyYW5kc1tzcmMxUmVnSWRdOwogICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8
dDA+ID09PiBzcmMyPHQxPik7CiAgICBpZiAocjAuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAu
aThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFz
bV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3Jl
X18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgOTM2KTsKICAgIHIwLmkgPSByMC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAvLyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNyYzFJZDx0Mj4gPT0+IHNyYzE8dDA+KTsKICAgIGlmIChyMi5pID49IGlu
dHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0
b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgw
eDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZSkKICAgIGlmIChyMC51IDwgdGFnVHlwZU51bWJlci51KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgKHNyYzE8dDA+IGlzIE5PVCBJbnQpIGdvdG8gLm9wMU5vdEludDsKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludDsK
ICAgIGlmIChyMS51IDwgdGFnVHlwZU51bWJlci51KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKHNyYzI8dDE+IGlzIE5PVCBJbnQpIGdvdG8gLm9wMk5vdEludDsKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludDsKICAg
IC8vIG9wMSBhbmQgb3AyIGFyZSBpbnQzMjogZG8gZmFzdCBpbnQzMiBvcGVyYXRpb24sIGFuZCBl
bmQuCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDgpKTsgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOwog
ICAgLy8gdDIgPSB0MSBvcGVyYXRvciB0MDsKICAgIHI0LmkgPSByMC5pOwogICAgewogICAgICAg
IHVpbnQzMl90IGEgPSByMS5pMzI7CiAgICAgICAgdWludDMyX3QgYiA9IHI0LmkzMjsKICAgICAg
ICBpZiAoKGIgfCBhKSA+PiAxNSkgewogICAgICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzE0X2Jp
bmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICAgICAgfQogICAgICAgIHI0LmkzMiA9IHI0Lmkz
MiAqIHIxLmkzMjsKICAgIH0KICAgIGlmIChyNC5pMzIgIT0gMCkKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX2ludGVnZXJPcGVyYXRpb25BbmRTdG9yZV9fZG9u
ZTsKICAgIGlmIChyMS5pMzIgPCBpbnQzMl90KDB4MCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV8xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgaWYgKHIwLmkzMiA8IGludDMyX3Qo
MHgwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Ns
b3c7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX2ludGVnZXJPcGVyYXRpb25BbmRTdG9yZV9fZG9uZSkKICAgIHI0LmkgPSByNC5pIHwg
dGFnVHlwZU51bWJlci5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSkgPSByNC5pOwogICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3Rv
cmVfX29wMU5vdEludCkKICAgIC8vIG9wMSBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIG9wMiBj
b3VsZCBiZSBhbnl0aGluZy4KICAgIGlmICgocjAuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzE8dDA+IGlzIGNvbXBsZXggdHlwZSkg
Z290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3Rv
cmVfX3Nsb3c7CiAgICBpZiAocjEudSA+PSB0YWdUeXBlTnVtYmVyLnUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGlmIChzcmMyPHQxPiA+PSB0YWdUeXBlTnVtYmVyKSBnb3RvIC5v
cDFOb3RJbnRPcDJJbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1c3Rv
bVN0b3JlX19vcDFOb3RJbnRPcDJJbnQ7CiAgICBpZiAoKHIxLmkgJiB0YWdUeXBlTnVtYmVyLmkp
ID09IDApICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmMyPHQxPiBpcyBjb21wbGV4
IHR5cGUpIGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1
c3RvbVN0b3JlX19zbG93OwogICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gc3JjMTx0MD4gaXMg
YSBkb3VibGUsIGFuZCBzcmMyPHQxPiBpcyBhIGRvdWJsZToKICAgIHIxLmkgPSByMS5pICsgdGFn
VHlwZU51bWJlci5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdDEgKz0gdGFnVHlw
ZU51bWJlcjsKICAgIGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29udmVydCBzcmM8dDE+IHRvIGEgZG91YmxlPGZ0MT47CiAgICBn
b3RvIF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5OwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1c3RvbVN0
b3JlX19vcDFOb3RJbnRPcDJJbnQpCiAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiBzcmMxPHQw
PiBtdXN0IGJlIGEgZG91YmxlIChvcDEgbm90IGludCwgYW5kIG5vdCBjb21wbGV4IHR5cGUpOgog
ICAgZDEuZCA9IHIxLmkzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDb252ZXJ0IHNyYzI8dDE+IHRvIGEgZG91YmxlPGZ0MT47CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdElu
dFJlYWR5KQogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMC5pID0gcjAuaSArIHRhZ1R5cGVOdW1iZXIu
aTsKICAgIGQwLmQgPSByMC5jYXN0VG9Eb3VibGU7CiAgICBkMC5kID0gZDAuZCAqIGQxLmQ7CiAg
ICByMC52cCA9IGQwLmNhc3RUb1ZvaWRQdHI7CiAgICByMC5pID0gcjAuaSAtIHRhZ1R5cGVOdW1i
ZXIuaTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNv
ZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8x
NF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpCiAgICByMi5pID0gKkNBU1Q8aW50MzJf
dCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlm
ICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICBkMC5kID0gcjAuaTMyOwogICAgcjEu
aSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMS5kID0gcjEuY2FzdFRvRG91YmxlOwog
ICAgZDAuZCA9IGQwLmQgKiBkMS5kOwogICAgcjAudnAgPSBkMC5jYXN0VG9Wb2lkUHRyOwogICAg
cjAuaSA9IHIwLmkgLSB0YWdUeXBlTnVtYmVyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHg1KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykKICAg
IHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBD
Lmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52
cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7
CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9tdWwo
ZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVj
dGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rp
b248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9
IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+
PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNv
ZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3N1YikKICAgIHIw
LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MTgpKTsgLy8gc3JjMklkPHQwPiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CiAgICByMi5p
ID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDEwKSk7IC8vIHNyYzFJZDx0Mj4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOwogICAgLy8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzcmMySWQ8dDA+ID09PiBzcmMyPHQxPik7CiAgICBpZiAocjAu
aSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFy
eU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25z
dGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9w
Q3VzdG9tU3RvcmVfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3Jl
X18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgOTM2KTsKICAgIHIwLmkgPSByMC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5h
cnlPcEN1c3RvbVN0b3JlX18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgLy8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmMxSWQ8dDI+ID09PiBzcmMxPHQwPik7CiAgICBpZiAo
cjIuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Jp
bmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFy
eU9wQ3VzdG9tU3RvcmVfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0
b3JlX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAu
aThwICsgOTM2KTsKICAgIHIyLmkgPSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19i
aW5hcnlPcEN1c3RvbVN0b3JlX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAg
aWYgKHIwLnUgPCB0YWdUeXBlTnVtYmVyLnUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAoc3JjMTx0MD4gaXMgTk9UIEludCkgZ290byAub3AxTm90SW50OwogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fYmluYXJ5T3BfXzE2X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdElu
dDsKICAgIGlmIChyMS51IDwgdGFnVHlwZU51bWJlci51KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgKHNyYzI8dDE+IGlzIE5PVCBJbnQpIGdvdG8gLm9wMk5vdEludDsKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX18xNl9iaW5hcnlPcEN1c3RvbVN0b3JlX19v
cDJOb3RJbnQ7CiAgICAvLyBvcDEgYW5kIG9wMiBhcmUgaW50MzI6IGRvIGZhc3QgaW50MzIgb3Bl
cmF0aW9uLCBhbmQgZW5kLgogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCAr
IChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7IC8vIGRzdElkPHQyPiA9IG9wZXJhbmRz
W2RzdFJlZ0lkXTsKICAgIC8vIHQyID0gdDEgb3BlcmF0b3IgdDA7CiAgICB7CiAgICAgICAgaW50
MzJfdCBhID0gcjEuaTMyOwogICAgICAgIGludDMyX3QgYiA9IHIwLmkzMjsKICAgICAgICAvLyBz
aWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6CiAgICAgICAgLy8gMCAgICAgICAwICAgICAg
IHwgbmV2ZXIKICAgICAgICAvLyAwICAgICAgIDEgICAgICAgfCBzaWduKGItYSkgPSAxIChwb3Mg
LSBuZWcgIT0gcG9zKQogICAgICAgIC8vIDEgICAgICAgMCAgICAgICB8IHNpZ24oYi1hKSA9IDAg
KG5lZyAtIHBvcyAhPSBwb3MpCiAgICAgICAgLy8gMSAgICAgICAxICAgICAgIHwgbmV2ZXIKICAg
ICAgICBpZiAoKFNJR05fQklUMzIoYikgIT0gU0lHTl9CSVQzMihhKSkgJiYgKFNJR05fQklUMzIo
Yi1hKSA9PSBTSUdOX0JJVDMyKGEpKSkgewogICAgICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Jp
bmFyeU9wX18xNl9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwogICAgICAgIH0KICAgICAgICBy
MC5pMzIgPSByMC5pMzIgLSByMS5pMzI7CiAgICB9CiAgICByMC5pID0gcjAuaSB8IHRhZ1R5cGVO
dW1iZXIuaTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpID0gcjAuaTsKICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIHJQQy5p
ID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJ
bnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTZfYmluYXJ5T3BDdXN0b21T
dG9yZV9fb3AxTm90SW50KQogICAgLy8gb3AxIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgb3Ay
IGNvdWxkIGJlIGFueXRoaW5nLgogICAgaWYgKChyMC5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAw
KSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjMTx0MD4gaXMgY29tcGxleCB0eXBl
KSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BfXzE2X2JpbmFy
eU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICBpZiAocjEudSA+PSB0YWdUeXBlTnVtYmVyLnUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmMyPHQxPiA+PSB0YWdUeXBlTnVt
YmVyKSBnb3RvIC5vcDFOb3RJbnRPcDJJbnQ7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5h
cnlPcF9fMTZfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AySW50OwogICAgaWYgKChy
MS5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAoc3JjMjx0MT4gaXMgY29tcGxleCB0eXBlKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fYmluYXJ5T3BfXzE2X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSwgdGhlbiBzcmMxPHQwPiBpcyBhIGRvdWJsZSwgYW5kIHNyYzI8dDE+IGlz
IGEgZG91YmxlOgogICAgcjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0MSArPSB0YWdUeXBlTnVtYmVyOwogICAgZDEuZCA9IHIxLmNh
c3RUb0RvdWJsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0
IHNyYzx0MT4gdG8gYSBkb3VibGU8ZnQxPjsKICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3Bf
XzE2X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5OwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTZfYmluYXJ5T3BDdXN0b21TdG9yZV9f
b3AxTm90SW50T3AySW50KQogICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gc3JjMTx0MD4gbXVz
dCBiZSBhIGRvdWJsZSAob3AxIG5vdCBpbnQsIGFuZCBub3QgY29tcGxleCB0eXBlKToKICAgIGQx
LmQgPSByMS5pMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQ29udmVydCBzcmMyPHQxPiB0byBhIGRvdWJsZTxmdDE+OwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTZfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3Ax
Tm90SW50UmVhZHkpCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQ
Qy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIwLmkgPSByMC5pICsgdGFnVHlwZU51
bWJlci5pOwogICAgZDAuZCA9IHIwLmNhc3RUb0RvdWJsZTsKICAgIGQwLmQgPSBkMC5kIC0gZDEu
ZDsKICAgIHIwLnZwID0gZDAuY2FzdFRvVm9pZFB0cjsKICAgIHIwLmkgPSByMC5pIC0gdGFnVHlw
ZU51bWJlci5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRC
eXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2JpbmFyeU9wX18xNl9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpCiAgICByMi5p
ID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDgpKTsKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wX18xNl9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93Owog
ICAgZDAuZCA9IHIwLmkzMjsKICAgIHIxLmkgPSByMS5pICsgdGFnVHlwZU51bWJlci5pOwogICAg
ZDEuZCA9IHIxLmNhc3RUb0RvdWJsZTsKICAgIGQwLmQgPSBkMC5kIC0gZDEuZDsKICAgIHIwLnZw
ID0gZDAuY2FzdFRvVm9pZFB0cjsKICAgIHIwLmkgPSByMC5pIC0gdGFnVHlwZU51bWJlci5pOwog
ICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9w
X18xNl9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThw
ICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlv
biogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVy
blR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3N1YihleGVjLCBwYyk7CiAgICAgICAgTExJ
bnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwog
ICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5p
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBy
ZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBD
LmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZM
SU5FX0FTTV9PUENPREVfTEFCRUwob3BfZGl2KQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihy
QmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOyAvLyBzcmMySWQ8
dDA+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsgLy8gc3JjMUlkPHQy
PiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CiAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNy
YzJJZDx0MD4gPT0+IHNyYzI8dDE+KTsKICAgIGlmIChyMC5pID49IGludHB0cl90KDB4NDAwMDAw
MDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfXzE3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpD
QVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MS5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAg
IHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BD
dXN0b21TdG9yZV9fMTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIC8vIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc3JjMUlkPHQyPiA9PT4gc3JjMTx0MD4pOwogICAgaWYgKHIyLmkg
Pj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlP
cEN1c3RvbVN0b3JlX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMThfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29u
c3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0
cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIy
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lKQogICAgaWYgKHIwLnUgPCB0YWdUeXBlTnVtYmVyLnUpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZiAoc3JjMTx0MD4gaXMgTk9UIEludCkgZ290byAub3AxTm90SW50
OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90
SW50OwogICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpZiAoc3JjMjx0MT4gaXMgTk9UIEludCkgZ290byAub3AyTm90SW50Owog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50
OwogICAgLy8gb3AxIGFuZCBvcDIgYXJlIGludDMyOiBkbyBmYXN0IGludDMyIG9wZXJhdGlvbiwg
YW5kIGVuZC4KICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4OCkpOyAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJ
ZF07CiAgICAvLyB0MiA9IHQxIG9wZXJhdG9yIHQwOwogICAgaWYgKHIxLmkzMiA9PSAwKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdzsKICAgIGlm
IChyMS5pMzIgIT0gaW50MzJfdCgtMSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaW5hcnlP
cEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX25vdE5lZzJUd29UaGUzMURp
dkJ5TmVnMTsKICAgIGlmIChyMC5pMzIgPT0gaW50MzJfdCgtMjE0NzQ4MzY0OCkpCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV8xOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93OwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2Vy
T3BlcmF0aW9uQW5kU3RvcmVfX25vdE5lZzJUd29UaGUzMURpdkJ5TmVnMSkKICAgIGlmIChyMC5p
MzIgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX2lu
dGVnZXJPcGVyYXRpb25BbmRTdG9yZV9faW50T0s7CiAgICBpZiAocjEuaTMyIDwgaW50MzJfdCgw
eDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xv
dzsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21T
dG9yZV9faW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19pbnRPSykKICAgIHI0LmkgPSByMS5pOwog
ICAgcjAuaSA9IHIwLmk7CiAgICB7CiAgICAgICAgaW50NjRfdCB0ZW1wID0gcjAuaTMyOyAvLyBz
aWduIGV4dGVuZCB0aGUgbG93IDMyYml0CiAgICAgICAgcjAuaTMyID0gdGVtcDsgLy8gbG93IHdv
cmQKICAgICAgICByMS5pMzIgPSB1aW50NjRfdCh0ZW1wKSA+PiAzMjsgLy8gaGlnaCB3b3JkCiAg
ICB9CiAgICB7CiAgICAgICAgaW50NjRfdCBkaXZpZGVuZCA9IChpbnQ2NF90KHIxLnUzMikgPDwg
MzIpIHwgcjAudTMyOwogICAgICAgIGludDY0X3QgZGl2aXNvciA9IHI0Lmk7CiAgICAgICAgcjEu
aTMyID0gZGl2aWRlbmQgJSBkaXZpc29yOyAvLyByZW1haW5kZXIKICAgICAgICByMC5pMzIgPSBk
aXZpZGVuZCAvIGRpdmlzb3I7IC8vIHF1b3RpZW50CiAgICB9CiAgICBpZiAocjEuaTMyICE9IDAp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8xOF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93Owog
ICAgcjAuaSA9IHIwLmkgfCB0YWdUeXBlTnVtYmVyLmk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg1KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMThf
YmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50KQogICAgLy8gb3AxIGlzIGRlZmluaXRlbHkg
bm90IGFuIGludCwgb3AyIGNvdWxkIGJlIGFueXRoaW5nLgogICAgaWYgKChyMC5pICYgdGFnVHlw
ZU51bWJlci5pKSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc3JjMTx0MD4g
aXMgY29tcGxleCB0eXBlKSBnb3RvIC5zbG93OwogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMThf
YmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdzsKICAgIGlmIChyMS51ID49IHRhZ1R5cGVOdW1iZXIu
dSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzI8dDE+ID49IHRhZ1R5
cGVOdW1iZXIpIGdvdG8gLm9wMU5vdEludE9wMkludDsKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzE4X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkludDsKICAgIGlmICgocjEuaSAm
IHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNy
YzI8dDE+IGlzIGNvbXBsZXggdHlwZSkgZ290byAuc2xvdzsKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtXzE4X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c7CiAgICAvLyBJZiB3ZSBnZXQgaGVyZSwg
dGhlbiBzcmMxPHQwPiBpcyBhIGRvdWJsZSwgYW5kIHNyYzI8dDE+IGlzIGEgZG91YmxlOgogICAg
cjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB0MSArPSB0YWdUeXBlTnVtYmVyOwogICAgZDEuZCA9IHIxLmNhc3RUb0RvdWJsZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNyYzx0MT4gdG8gYSBk
b3VibGU8ZnQxPjsKICAgIGdvdG8gX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0b21TdG9yZV9f
b3AxTm90SW50UmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzE4
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkludCkKICAgIC8vIElmIHdlIGdldCBo
ZXJlLCB0aGVuIHNyYzE8dDA+IG11c3QgYmUgYSBkb3VibGUgKG9wMSBub3QgaW50LCBhbmQgbm90
IGNvbXBsZXggdHlwZSk6CiAgICBkMS5kID0gcjEuaTMyOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgc3JjMjx0MT4gdG8gYSBkb3VibGU8ZnQx
PjsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0
b21TdG9yZV9fb3AxTm90SW50UmVhZHkpCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIwLmkgPSByMC5p
ICsgdGFnVHlwZU51bWJlci5pOwogICAgZDAuZCA9IHIwLmNhc3RUb0RvdWJsZTsKICAgIGQwLmQg
PSBkMC5kIC8gZDEuZDsKICAgIHIwLnZwID0gZDAuY2FzdFRvVm9pZFB0cjsKICAgIHIwLmkgPSBy
MC5pIC0gdGFnVHlwZU51bWJlci5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzE4X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludCkKICAgIHIy
LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4OCkpOwogICAgaWYgKChyMS5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAwKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fMThfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdzsKICAgIGQwLmQg
PSByMC5pMzI7CiAgICByMS5pID0gcjEuaSArIHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQxLmQgPSBy
MS5jYXN0VG9Eb3VibGU7CiAgICBkMC5kID0gZDAuZCAvIGQxLmQ7CiAgICByMC52cCA9IGQwLmNh
c3RUb1ZvaWRQdHI7CiAgICByMC5pID0gcjAuaSAtIHRhZ1R5cGVOdW1iZXIuaTsKICAgICpDQVNU
PGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjAu
aTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8xOF9iaW5hcnlPcEN1c3Rv
bVN0b3JlX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwog
ICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNU
PEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3Ry
dWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxp
bnRfc2xvd19wYXRoX2RpdihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChy
ZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSBy
MC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQx
PgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAg
ICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfbHNoaWZ0KQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChy
UEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgcjIuaSA9ICpDQVNUPGludDMyX3Qq
PihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjQu
aSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg4KSk7CiAgICBpZiAocjAuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2JpdE9wX18xOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4o
cjEuaThwICsgOTM2KTsKICAgIHIwLmkgPSByMC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAg
ICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18x
OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKHIyLmkgPj0gaW50cHRyX3Qo
MHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNt
X2JpdE9wX18yMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGlu
dHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsg
KHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAg
IGlmIChyMC51IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYml0
T3BfX3Nsb3c7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX2JpdE9wX19zbG93OwogICAgcjAuaTMyID0gcjAuaTMyIDw8IHIxLmkzMjsKICAg
IHIwLmkgPSByMC5pIHwgdGFnVHlwZU51bWJlci5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNl
UEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0
cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0
aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2xzaGlmdChleGVjLCBwYyk7CiAg
ICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVj
U3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZw
LmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQ
Qy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgw
eDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcnNoaWZ0KQogICAgcjAuaSA9ICpDQVNU
PGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkp
OwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICBpZiAocjAuaSA+PSBpbnRw
dHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxp
bmVhc21fYml0T3BfXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgOTM2KTsKICAgIHIwLmkgPSByMC5p
IC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5p
OHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
KQogICAgaWYgKHIyLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9iaXRPcF9fMjJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18yMl9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9f
MjJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCAr
IDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9
ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMjJfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMC51IDwgdGFnVHlwZU51bWJlci51KQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fMjJfYml0T3BfX3Nsb3c7CiAgICBpZiAocjEudSA8IHRh
Z1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzIyX2JpdE9wX19zbG93Owog
ICAgcjAuaTMyID0gcjAuaTMyID4+IHIxLmkzMjsKICAgIHIwLmkgPSByMC5pIHwgdGFnVHlwZU51
bWJlci5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRl
Y29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQ
Qy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAg
RElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
XzIyX2JpdE9wX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMp
OwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBD
QVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPElu
c3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0g
bGxpbnRfc2xvd19wYXRoX3JzaGlmdChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJl
c3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBD
LmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0
YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBD
Lmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMu
aSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBj
ICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29k
ZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfdXJzaGlmdCkKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTgpKTsKICAgIHIyLmkgPSAqQ0FTVDxp
bnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsK
ICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4OCkpOwogICAgaWYgKHIwLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18yM19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9iaXRPcF9fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICBy
MS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIxLmk4cCArIDkzNik7CiAgICByMC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAw
MDApOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIwLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9i
aXRPcF9fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMi5pID49IGlu
dHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzI0X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2Zm
bGluZWFzbV9iaXRPcF9fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzI0X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIy
LmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIw
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3BfXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUpCiAgICBpZiAocjAudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtXzI0X2JpdE9wX19zbG93OwogICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV8yNF9iaXRPcF9fc2xvdzsKICAgIHIwLnUzMiA9IHIwLnUzMiA+
PiByMS51MzI7CiAgICBpZiAocjAuaTMyIDwgaW50MzJfdCgweDApKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fMjRfYml0T3BfX3Nsb3c7CiAgICByMC5pID0gcjAuaSB8IHRhZ1R5cGVOdW1iZXIu
aTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8yNF9i
aXRPcF9fc2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAg
IHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxF
eGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVj
dGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50
X3Nsb3dfcGF0aF91cnNoaWZ0KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0
KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9
IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8
dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsK
ICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsg
aW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBz
aXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4o
ckJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9iaXRhbmQpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICByMi5pID0gKkNBU1Q8aW50MzJf
dCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBy
NC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDgpKTsKICAgIGlmIChyMC5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMjVfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fYml0T3BfXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9
ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMS5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsK
ICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3Bf
XzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAocjIuaSA+PSBpbnRwdHJf
dCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9wX18yNl9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVh
c21fYml0T3BfXzI2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18yNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAg
cjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIyLmkgPSByMi5pIC0g
aW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAg
KyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX2JpdE9wX18yNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQog
ICAgaWYgKHIwLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8y
Nl9iaXRPcF9fc2xvdzsKICAgIGlmIChyMS51IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fMjZfYml0T3BfX3Nsb3c7CiAgICByMC5pMzIgPSByMC5pMzIgJiByMS5p
MzI7CiAgICByMC5pID0gcjAuaSB8IHRhZ1R5cGVOdW1iZXIuaTsKICAgICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjAuaTsKICAgIHJQ
Qy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8
TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8yNl9iaXRPcF9fc2xvdykKICAgIHJQQy5p
OHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAg
ICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAg
ICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAg
ICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9iaXRhbmQoZXhl
YywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlv
biwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248
dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0
Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1
aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2JpdHhvcikKICAgIHIw
LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MTgpKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBD
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4o
ckJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIw
LmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9iaXRP
cF9fMjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBn
b3RvIF9vZmZsaW5lYXNtX2JpdE9wX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMjdfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDkzNik7CiAgICBy
MC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9iaXRPcF9fMjdfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZSkKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzI4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9fMjhfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fYml0T3BfXzI4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9
ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsK
ICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fYml0T3Bf
XzI4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAocjAudSA8IHRhZ1R5cGVO
dW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzI4X2JpdE9wX19zbG93OwogICAgaWYg
KHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8yOF9iaXRP
cF9fc2xvdzsKICAgIHIwLmkzMiA9IHIwLmkzMiBeIHIxLmkzMjsKICAgIHIwLmkgPSByMC5pIHwg
dGFnVHlwZU51bWJlci5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90
KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1
cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtXzI4X2JpdE9wX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQ
Qy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMg
PSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2JpdHhvcihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6
OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAg
fQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkg
LSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfYml0b3IpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICByMi5pID0g
KkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDEwKSk7CiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlmIChyMC5pID49IGludHB0cl90KDB4NDAwMDAw
MDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYml0T3BfXzI5X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIw
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9iaXRPcF9f
MjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fYml0T3BfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgw
eDQwMDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMC5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fYml0T3BfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAocjIu
aSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2JpdE9w
X18zMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fYml0T3BfXzMwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18zMF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIy
LmkgPSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2JpdE9wX18zMF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lKQogICAgaWYgKHIwLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV8zMF9iaXRPcF9fc2xvdzsKICAgIGlmIChyMS51IDwgdGFnVHlwZU51bWJlci51
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzBfYml0T3BfX3Nsb3c7CiAgICByMC5pMzIgPSBy
MC5pMzIgfCByMS5pMzI7CiAgICByMC5pID0gcjAuaSB8IHRhZ1R5cGVOdW1iZXIuaTsKICAgICpD
QVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0g
cjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09E
RSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8zMF9iaXRPcF9fc2xv
dykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSBy
QmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUq
PihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQ
Qy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0
aF9iaXRvcihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
Lmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5p
bnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJh
c2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9
IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfY2hl
Y2tfaGFzX2luc3RhbmNlKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCAr
IChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICBpZiAocjEuaSA+PSBpbnRwdHJf
dCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsX18zMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsKICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzMxX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX18zMV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIxLmkgPSBy
MS5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX18zMV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKChyMC5pICYgdGFnTWFzay5pKSAhPSAw
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BDaGVja0hhc0luc3RhbmNlU2xvdzsKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgaWYgKCgqQ0FTVDxpbnQ4X3Qq
PihyMC5pOHAgKyAxNykgJiBpbnQ4X3QoMHgyKSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNsb3c7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHgyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fb3BDaGVja0hhc0luc3RhbmNlU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4
cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhl
Y1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rp
b24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UoZXhlYywg
cGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwg
cjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+
CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7
CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50
cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2luc3RhbmNlb2YpCiAgICBy
MS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDE4KSk7CiAgICBpZiAocjEuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50Owog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV8zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8zMl9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAg
IHIxLmkgPSByMS5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmUpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KTsKICAgIGlmICgo
KkNBU1Q8aW50OF90Kj4ocjAuaThwICsgMTcpICYgaW50OF90KDB4OCkpID09IDApCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZTbG93OwogICAgcjAuaSA9ICpDQVNUPGludDMy
X3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyMCkpOwogICAg
cjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg4KSk7CiAgICBpZiAocjAuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX18zM19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVh
c21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzMzX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsX18zM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAg
IHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjEuaThwICsgOTM2KTsKICAgIHIwLmkgPSByMC5pIC0gaW50cHRyX3QoMHg0MDAw
MDAwMCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX18zM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lKQogICAgaWYgKChyMS5pICYgdGFnTWFzay5pKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fb3BJbnN0YW5jZW9mU2xvdzsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDgpOwogICAgaWYgKCpDQVNUPHVpbnQ4X3QqPihyMi5pOHAgKyAxNikgPCB1aW50OF90KDB4
ZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZTbG93OwogICAgcjAuaSA9
ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgxMCkpOwogICAgaWYgKHIwLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fMzRfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAg
KyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbF9fMzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMi5p
ID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIyLmk4cCArIDkzNik7CiAgICByMC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAwMDAp
OwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgKHIwLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fMzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkK
ICAgIGlmICgocjIuaSAmIHRhZ01hc2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
X29wSW5zdGFuY2VvZlNsb3c7CiAgICByMC5pID0gaW50cHRyX3QoMHgxKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mTG9vcCkKICAgIHIyLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDgpOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4o
cjIuaThwICsgMzIpOwogICAgaWYgKHIyLmkgPT0gcjEuaSkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX29wSW5zdGFuY2VvZkRvbmU7CiAgICBpZiAoKHIyLmkgJiB0YWdNYXNrLmkpID09IDApCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZMb29wOwogICAgcjAuaSA9IGludHB0
cl90KDB4MCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wSW5zdGFu
Y2VvZkRvbmUpCiAgICByMC5pID0gcjAuaSB8IGludHB0cl90KDB4Nik7CiAgICAqQ0FTVDxpbnRw
dHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIwLmk7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg1KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdykKICAg
IHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBD
Lmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52
cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7
CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9pbnN0
YW5jZW9mKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAu
aW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmlu
c3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFz
ZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0g
clBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg1
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAg
KyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9pc191
bmRlZmluZWQpCiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlmIChyMS5p
ID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzVfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZs
aW5lYXNtXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjEuaSA9IHIxLmkgLSBpbnRwdHJfdCgw
eDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fMzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmICgocjAuaSAmIHRh
Z01hc2suaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wSXNVbmRlZmluZWRDZWxs
OwogICAgcjQuaSA9IChyMC51ID09IHVpbnRwdHJfdCgweGEpKTsKICAgIHI0LmkgPSByNC5pIHwg
aW50cHRyX3QoMHg2KTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgw
eDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJy
ZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9vcElzVW5kZWZpbmVkQ2VsbCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIw
Lmk4cCArIDgpOwogICAgcjEuaSA9ICgoKkNBU1Q8aW50OF90Kj4ocjAuaThwICsgMTcpICYgaW50
OF90KDB4MSkpICE9IDApOwogICAgcjEuaSA9IHIxLmkgfCBpbnRwdHJfdCgweDYpOwogICAgKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSBy
MS5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfaXNfYm9vbGVhbikKICAgIHIxLmkgPSAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MTApKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIxLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAw
MCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8zNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fMzZfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
MzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCAr
IDkzNik7CiAgICByMS5pID0gcjEuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9
ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8zNl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lKQogICAgcjAuaSA9IHIwLmkgXiBpbnRwdHJfdCgweDYpOwogICAgcjAu
aSA9ICgocjAuaSAmIGludHB0cl90KC0yKSkgPT0gMCk7CiAgICByMC5pID0gcjAuaSB8IGludHB0
cl90KDB4Nik7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9pc19udW1i
ZXIpCiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlmIChyMS5pID49IGlu
dHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzdfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNt
XzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAg
cjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjEuaSA9IHIxLmkgLSBpbnRwdHJfdCgweDQwMDAw
MDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
MzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIHIxLmkgPSAoKHIwLmkgJiB0YWdU
eXBlTnVtYmVyLmkpICE9IDApOwogICAgcjEuaSA9IHIxLmkgfCBpbnRwdHJfdCgweDYpOwogICAg
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkg
PSByMS5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfaXNfc3RyaW5nKQogICAgcjEuaSA9
ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgxMCkpOwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICBpZiAocjEuaSA+PSBpbnRwdHJfdCgweDQwMDAw
MDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzM4X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV8zOF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV8zOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThw
ICsgOTM2KTsKICAgIHIxLmkgPSByMS5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAoKHIwLmkgJiB0YWdNYXNrLmkpICE9IDApCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcElzU3RyaW5nTm90Q2VsbDsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgcjEuaSA9ICgqQ0FTVDx1aW50OF90Kj4ocjAuaThw
ICsgMTYpID09IHVpbnQ4X3QoMHg1KSk7CiAgICByMS5pID0gcjEuaSB8IGludHB0cl90KDB4Nik7
CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKSA9IHIxLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsK
ICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BJc1N0
cmluZ05vdENlbGwpCiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKSA9IGludHB0cl90KDB4Nik7CiAgICByUEMuaSA9IHJQQy5pICsgaW50
cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXpl
b2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJF
TChvcF9yZXNvbHZlX2dsb2JhbCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAt
IDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMzIpOwogICAgcjEuaSA9
ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOCk7CiAgICBpZiAocjEuaSAhPSAqQ0FTVDxpbnRw
dHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSkpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFJlc29sdmVHbG9iYWxTbG93OwogICAgcjEuaSA9ICpD
QVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgy
MCkpOwogICAgaWYgKHIxLmkzMiA8IGludDMyX3QoMHg1KSkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtX3Jlc29sdmVHbG9iYWxfX2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX2lzSW5saW5l
OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMTYpOwogICAgcjEuaTMyID0g
LXIxLmkzMjsKICAgIHIxLmkgPSByMS5pMzI7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3Jlc29sdmVH
bG9iYWxfX2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX3JlYWR5OwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9yZXNvbHZlR2xvYmFsX19sb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0X19pc0lubGluZSkKICAgIHIwLmkgPSByMC5pICsgaW50cHRyX3QoMHgwKTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcmVzb2x2ZUdsb2JhbF9fbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkpCiAgICByMi5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgcjAuaSA9
ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHg4KSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKSA9IHIyLmk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyOCkpOwogICAgclBDLmkgPSByUEMuaSAr
IGludHB0cl90KDB4Nik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsg
c2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX29wUmVzb2x2ZUdsb2JhbFNsb3cpCiAgICByUEMuaThwID0gckJh
c2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAg
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIElu
c3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWwoZXhl
YywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlv
biwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248
dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0
Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1
aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDYpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPigoYXNzZXJ0KDAgPT0gb2Zmc2V0
b2YoSklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkpLCAmc3AtPmdsb2JhbERhdGEpKTsKICAgIHI0
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDQ1MzYpOwogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gMjQpOwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyOCkpOwogICAgaWYgKHIyLmkzMiA9
PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZ2V0U2NvcGVfX2RvbmU7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4ocjEu
aThwICsgMTEyKSAhPSBpbnQzMl90KDB4MikpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRT
Y29wZV9fbG9vcDsKICAgIGlmICgqQ0FTVDxpbnQ4X3QqPihyMS5pOHAgKyAxMDgpID09IDApCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRTY29wZV9fbG9vcDsKICAgIHIxLmkgPSAqQ0FTVDxp
bnQzMl90Kj4ocjEuaThwICsgMTA0KTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAr
IChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fZ2V0U2NvcGVfX25vQWN0aXZhdGlvbjsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIwLmk4cCArIDMyKTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDgpICE9IHI0
LmkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJT
bG93OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMjQpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9nZXRTY29wZV9fbm9BY3RpdmF0aW9uKQogICAg
cjIuaTMyID0gcjIuaTMyIC0gaW50MzJfdCgweDEpOwogICAgaWYgKHIyLmkzMiA9PSAwKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fZ2V0U2NvcGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX2dldFNjb3BlX19sb29wKQogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjAuaThwICsgMzIpOwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgOCkg
IT0gcjQuaSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
dXBlclNsb3c7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAyNCk7CiAgICBy
Mi5pMzIgPSByMi5pMzIgLSBpbnQzMl90KDB4MSk7CiAgICBpZiAocjIuaTMyICE9IDApCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9nZXRTY29wZV9fbG9vcDsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fZ2V0U2NvcGVfX2RvbmUpCiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDMy
KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgaWYgKHIxLmkg
IT0gKkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgxOCkpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BSZXNvbHZlR2xvYmFsRHluYW1p
Y1Nsb3c7CiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDIwKSk7CiAgICBpZiAocjEuaTMyIDwgaW50MzJfdCgweDUpKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fcmVzb2x2ZUdsb2JhbF9fMzhfbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldF9faXNJbmxpbmU7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyAxNik7CiAgICByMS5pMzIgPSAtcjEuaTMyOwogICAgcjEuaSA9IHIxLmkzMjsKICAgIGdv
dG8gX29mZmxpbmVhc21fcmVzb2x2ZUdsb2JhbF9fMzhfbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldF9fcmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3Jlc29s
dmVHbG9iYWxfXzM4X2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX2lzSW5saW5lKQogICAg
cjAuaSA9IHIwLmkgKyBpbnRwdHJfdCgweDApOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9yZXNvbHZlR2xvYmFsX18zOF9sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
X19yZWFkeSkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID0gcjIuaTsKICAgIHIw
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDMwKSk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg3KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsK
ICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BSZXNv
bHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChy
UEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBj
ID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBl
IHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5h
bWljKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5z
dHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3Ry
dWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBD
LmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBD
LnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg3KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fb3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAg
KyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9u
KiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyhleGVj
LCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9u
LCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0
MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQu
aTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVp
bnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Nyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X3Njb3BlZF92YXIp
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAyNCk7CiAgICByMi5pID0gKkNB
U1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4
KSk7CiAgICBpZiAocjIuaTMyID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8zOF9nZXRT
Y29wZV9fZG9uZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAg
aWYgKCpDQVNUPGludDMyX3QqPihyMS5pOHAgKyAxMTIpICE9IGludDMyX3QoMHgyKSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzM4X2dldFNjb3BlX19sb29wOwogICAgaWYgKCpDQVNUPGludDhf
dCo+KHIxLmk4cCArIDEwOCkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzM4X2dldFNj
b3BlX19sb29wOwogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyMS5pOHAgKyAxMDQpOwogICAg
aWYgKCpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8zOF9nZXRTY29wZV9fbm9BY3RpdmF0
aW9uOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMjQpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8zOF9nZXRTY29wZV9fbm9BY3RpdmF0aW9uKQog
ICAgcjIuaTMyID0gcjIuaTMyIC0gaW50MzJfdCgweDEpOwogICAgaWYgKHIyLmkzMiA9PSAwKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzhfZ2V0U2NvcGVfX2RvbmU7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM4X2dldFNjb3BlX19sb29wKQogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjAuaThwICsgMjQpOwogICAgcjIuaTMyID0gcjIuaTMyIC0gaW50MzJf
dCgweDEpOwogICAgaWYgKHIyLmkzMiAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzhf
Z2V0U2NvcGVfX2xvb3A7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM4
X2dldFNjb3BlX19kb25lKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCAr
IChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMi5pID0gKkNBU1Q8aW50MzJf
dCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAzMik7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMC5pOHAgKyAzMik7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAg
KyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHI0Lmk7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgyMCkpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0X3Njb3BlZF92YXIpCiAgICBy
MC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAyNCk7CiAgICByMi5pID0gKkNBU1Q8aW50
MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAg
ICBpZiAocjIuaTMyID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8zOV9nZXRTY29wZV9f
ZG9uZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgaWYgKCpD
QVNUPGludDMyX3QqPihyMS5pOHAgKyAxMTIpICE9IGludDMyX3QoMHgyKSkKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtXzM5X2dldFNjb3BlX19sb29wOwogICAgaWYgKCpDQVNUPGludDhfdCo+KHIx
Lmk4cCArIDEwOCkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzM5X2dldFNjb3BlX19s
b29wOwogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyMS5pOHAgKyAxMDQpOwogICAgaWYgKCpD
QVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpID09
IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8zOV9nZXRTY29wZV9fbm9BY3RpdmF0aW9uOwog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMjQpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV8zOV9nZXRTY29wZV9fbm9BY3RpdmF0aW9uKQogICAgcjIu
aTMyID0gcjIuaTMyIC0gaW50MzJfdCgweDEpOwogICAgaWYgKHIyLmkzMiA9PSAwKQogICAgICAg
IGdvdG8gX29mZmxpbmVhc21fMzlfZ2V0U2NvcGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtXzM5X2dldFNjb3BlX19sb29wKQogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjAuaThwICsgMjQpOwogICAgcjIuaTMyID0gcjIuaTMyIC0gaW50MzJfdCgweDEp
OwogICAgaWYgKHIyLmkzMiAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fMzlfZ2V0U2Nv
cGVfX2xvb3A7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzM5X2dldFNj
b3BlX19kb25lKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgaWYgKHIxLmkgPj0gaW50cHRyX3QoMHg0
MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV8zOV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19jb25zdGFudDsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fMzlfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fMzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByNC5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0
Lmk4cCArIDkzNik7CiAgICByMS5pID0gcjEuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAg
cjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV8zOV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMC5pOHAgKyAzMik7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyAzMik7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfZ2xv
YmFsX3ZhcikKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIwLmk4cCk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChy
NC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHIxLmk7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwog
ICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAq
Q0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpP
RkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKQogICAg
cjAuaSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MTApKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90
Kj4ocjAuaThwKTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpID0gcjEuaTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDIwKSk7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHg1KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09Q
Q09ERV9MQUJFTChvcF9wdXRfZ2xvYmFsX3ZhcikKICAgIHIxLmkgPSAqQ0FTVDxpbnQzMl90Kj4o
ckJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIHIwLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDgpKTsKICAgIGlmIChyMS5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fNDBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICBy
Mi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzQwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzQwX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThw
IC0gOCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA5MzYpOwogICAgcjEu
aSA9IHIxLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIyLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNDBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZSkKICAgICpDQVNUPGludHB0cl90Kj4ocjAuaThwKSA9IHIyLmk7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09E
RV9MQUJFTChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICBy
MS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDEwKSk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChy
UEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICBpZiAoKkNBU1Q8aW50OF90Kj4ocjIu
aThwKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRHbG9iYWxWYXJDaGVja1Ns
b3c7CiAgICBpZiAocjEuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtXzQxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjIuaSA9
ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OwogICAgZ290byBfb2ZmbGluZWFzbV80MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV80MV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCkKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgp
OwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgOTM2KTsKICAgIHIxLmkgPSBy
MS5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihy
Mi5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtXzQxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAg
ICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCkgPSByMi5pOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX29wUHV0R2xvYmFsVmFyQ2hlY2tTbG93KQogICAgclBDLmk4cCA9IHJC
YXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJ
bnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5z
dHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3Ry
dWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBD
LmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBD
LnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg1KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfYnlf
aWQpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyMCkpOwogICAgaWYgKHIwLmkgPj0g
aW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9nZXRCeUlkX19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29u
c3RhbnQ7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2dldEJ5SWRfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsX180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbF9fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICBy
NC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHI0Lmk4cCArIDkzNik7CiAgICByMC5pID0gcjAuaSAtIGludHB0cl90KDB4NDAwMDAw
MDApOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgKHIwLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9n
ZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDJfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZSkKICAgIGlmICgocjQuaSAmIHRhZ01hc2suaSkgIT0gMCkKICAgICAgICBnb3Rv
IF9vZmZsaW5lYXNtX2dldEJ5SWRfX29wR2V0QnlJZFNsb3c7CiAgICByMi5pID0gKkNBU1Q8aW50
MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDI4KSk7CiAg
ICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA4KSAhPSByMS5pKQogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdzsKICAgIHIxLmkgPSAqQ0FTVDxpbnQz
Ml90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAg
cjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgKHIyLmkzMiA8PCAwKSArIGludHB0cl90
KDB4MCkpOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSkgPSByMC5pOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4NDApKTsKICAgIHJQQy5pID0gclBDLmkg
KyBpbnRwdHJfdCgweDkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyAr
IHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUq
PihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9nZXRCeUlkX19vcEdldEJ5SWRTbG93KQogICAgclBDLmk4cCA9
IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsK
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAg
ICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZChleGVj
LCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9u
LCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0
MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQu
aTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVp
bnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MjApKTsKICAgIGlmIChyMC5p
ID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZ2V0QnlJ
ZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzQzX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50OwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fZ2V0QnlJZF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGxfXzQzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQog
ICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByNC5pID0gKkNBU1Q8
aW50cHRyX3QqPihyNC5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgweDQw
MDAwMDAwKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMC5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fZ2V0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzQzX2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2RvbmUpCiAgICBpZiAoKHI0LmkgJiB0YWdNYXNrLmkpICE9IDApCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV80M19nZXRCeUlkX19vcEdldEJ5SWRTbG93OwogICAgcjIuaSA9ICpD
QVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgy
OCkpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgMTYpOwogICAgaWYgKCpD
QVNUPGludHB0cl90Kj4ocjQuaThwICsgOCkgIT0gcjEuaSkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtXzQzX2dldEJ5SWRfX29wR2V0QnlJZFNsb3c7CiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+
KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHI0Lmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMCkgKyBpbnRwdHJfdCgweDAp
KTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpID0gcjQuaTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDQwKSk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50
cHRyX3QoMHg5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXpl
b2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fNDNfZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdykKICAgIHJQQy5pOHAgPSBy
QmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAg
ICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAg
SW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xv
d1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQoZXhlYywg
cGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwg
cjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+
CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7
CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50
cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDkpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9hcmd1bWVudHNfbGVu
Z3RoKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICBpZiAoKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgIT0gMCkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzsKICAgIHIyLmkg
PSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAtIDQ4KTsKICAgIHIyLmkzMiA9IHIyLmkzMiAtIGlu
dDMyX3QoMHgxKTsKICAgIHIyLmkgPSByMi5pIHwgdGFnVHlwZU51bWJlci5pOwogICAgKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMi5p
OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRzTGVu
Z3RoU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0
LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVj
U3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlv
bio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Ns
b3dfcGF0aF9nZXRfYXJndW1lbnRzX2xlbmd0aChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRl
Y29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQog
ICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQu
ZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSBy
QmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkg
PSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FT
TV9PUENPREVfTEFCRUwob3BfcHV0X2J5X2lkKQogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihy
QmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgyMCkpOwogICAgaWYgKHI0LmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDRfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZs
aW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX180NF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDRfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4
KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByNC5pID0g
cjQuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4o
cjAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bF9fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmICgocjAuaSAmIHRhZ01h
c2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICBy
Mi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDE4KSk7CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KSAhPSByMS5p
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsKICAgIHIxLmkgPSAqQ0FT
VDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4Mjgp
KTsKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzQ1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2Zm
bGluZWFzbV9wdXRCeUlkX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNDVfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzQ1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjQuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwIC0gOCk7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA5MzYp
OwogICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHI0LmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHI0Lmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlT
dG9yYWdlX19jb250aW51YXRpb25fXzQ1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAg
ICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwgMCkgKyBpbnRwdHJfdCgweDAp
KSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg5KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAg
IG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9P
UENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BQdXRCeUlk
U2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0Lmkg
PSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3Rh
dGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3df
cGF0aF9wdXRfYnlfaWQoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVz
dWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBy
ZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4K
ICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAg
clBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweDkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVM
KG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjEuaSA9ICpD
QVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MjApKTsKICAgIGlmIChyNC5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzQ2X2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGlu
ZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDZfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
cHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzQ2X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjQuaSA9IHI0
LmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIw
Lmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxf
XzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAoKHIwLmkgJiB0YWdNYXNr
LmkpICE9IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjIu
aSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgxOCkpOwogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMTYpOwogICAg
aWYgKCpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOCkgIT0gcjEuaSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDI4KSk7CiAgICBpZiAocjIuaSA+
PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRf
X2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX180N19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZF9f
Z2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRf
X2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX180N19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIyLmkgPSByMi5p
IC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0
aW9uX180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgKkNBU1Q8aW50cHRyX3Qq
PihyNC5pOHAgKyAocjEuaTMyIDw8IDApICsgaW50cHRyX3QoMHgwKSkgPSByMC5pOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4OSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgcjQu
aSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg4KSk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgyMCkpOwogICAgaWYgKHI0LmkgPj0gaW50cHRyX3QoMHg0
MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9f
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAg
IHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByNC5pID0gcjQuaSAt
IGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThw
ICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9M
QUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGxfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAoKHIwLmkgJiB0
YWdNYXNrLmkpICE9IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93Owog
ICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgxOCkpOwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOCkgIT0g
cjEuaSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0QnlJZFNsb3c7CiAgICByMS5pID0g
KkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDI4KSk7CiAgICByNC5pID0gcjAuaSArIHIxLmk7CiAgICBpZiAocjIuaSA+PSBpbnRwdHJfdCgw
eDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19n
ZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNDlfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
cHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX180OV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgOTM2
KTsKICAgIHIyLmkgPSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19n
ZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZSkKICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwKSA9IHIxLmk7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgzMCkpOwogICAgKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KSA9IHIxLmk7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHg5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmUpCiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDIwKSk7CiAgICBpZiAocjQuaSA+PSBp
bnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNTBfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjQu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNTBfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX181MF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHI0
LmkgPSByNC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbF9fNTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlm
ICgocjAuaSAmIHRhZ01hc2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0
QnlJZFNsb3c7CiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyA4KSAhPSByMS5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsK
ICAgIHIxLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MjgpKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDE2
KTsKICAgIHI0LmkgPSByNC5pICsgcjEuaTsKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAw
MDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFBy
b3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX181MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRp
b25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX181MV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRC
eUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzUxX2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4o
ZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwog
ICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFBy
b3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX181MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lKQogICAgKkNBU1Q8aW50cHRyX3QqPihyNC5pOHApID0gcjEuaTsKICAgIHIxLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDMw
KSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpID0gcjEuaTsKICAgIHJQQy5pID0g
clBDLmkgKyBpbnRwdHJfdCgweDkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRP
cGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCkKICAgIHI0LmkgPSAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
OCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MjApKTsKICAgIGlmIChyNC5pID49IGludHB0cl90KDB4NDAwMDAw
MDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsX181Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsK
ICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsX181Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9f
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzUyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjQuaSA9IHI0LmkgLSBpbnRw
dHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChy
NC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
X181Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKChyMC5pICYgdGFnTWFz
ay5pKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsKICAgIHIy
LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MTgpKTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpICE9IHIxLmkp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjQuaSA9ICpDQVNU
PGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4Mzgp
KTsKICAgIC8vIG1hY3JvIGFzc2VydChhc3NlcnRpb24pIHsKICAgIGlmIChyNC5pICE9IDApCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNr
c19fYXNzZXJ0X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8v
IH0gRU5EIGNyYXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRC
eUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19fYXNzZXJ0X19vaykKICAgIC8vIH0gRU5E
IGFzc2VydC4KICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDE2KTsKICAgIC8v
IG1hY3JvIGFzc2VydChhc3NlcnRpb24pIHsKICAgIGlmIChyNC5pICE9IDApCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19fNTJfYXNz
ZXJ0X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5E
IGNyYXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJh
bnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19fNTJfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFz
c2VydC4KICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDMyKSA9PSBpbnRwdHJfdCgw
eDIpKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9u
YWxDaGVja3NfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX19hZGRpdGlvbmFsQ2hlY2tzX19sb29wKQogICAgcjEuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjEuaThwICsgMzIpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEu
aThwICsgOCk7CiAgICBpZiAocjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCkpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93OwogICAgcjQuaSA9IHI0LmkgKyBpbnRw
dHJfdCgweDgpOwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMzIpICE9IGludHB0
cl90KDB4MikpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRk
aXRpb25hbENoZWNrc19fbG9vcDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfX2RvbmUpCiAgICByMS5pID0g
KkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDI4KSk7CiAgICByNC5pID0gcjAuaSArIHIxLmk7CiAgICBpZiAocjIuaSA+PSBpbnRwdHJfdCgw
eDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19n
ZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNTNfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNTNfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
cHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX181M19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgOTM2
KTsKICAgIHIyLmkgPSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5pID0gKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19n
ZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fNTNfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZSkKICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwKSA9IHIxLmk7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgzMCkpOwogICAgKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KSA9IHIxLmk7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHg5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xp
bmUpCiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDIwKSk7CiAgICBpZiAocjQuaSA+PSBp
bnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNTRfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjQu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNTRfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsX181NF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4
cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHI0
LmkgPSByNC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbF9fNTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlm
ICgocjAuaSAmIHRhZ01hc2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0
QnlJZFNsb3c7CiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMC5p
OHAgKyA4KSAhPSByMS5pKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdzsK
ICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDM4KSk7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBp
ZiAocjQuaSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25f
X2FkZGl0aW9uYWxDaGVja3NfXzU0X2Fzc2VydF9fb2s7CiAgICAvLyBtYWNybyBjcmFzaCgpIHsK
ICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfXzU0X2Fz
c2VydF9fb2spCiAgICAvLyB9IEVORCBhc3NlcnQuCiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyNC5pOHAgKyAxNik7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBpZiAo
cjQuaSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2Fk
ZGl0aW9uYWxDaGVja3NfXzU1X2Fzc2VydF9fb2s7CiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAg
IENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfXzU1X2Fzc2Vy
dF9fb2spCiAgICAvLyB9IEVORCBhc3NlcnQuCiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMS5p
OHAgKyAzMikgPT0gaW50cHRyX3QoMHgyKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX181NV9hZGRpdGlvbmFsQ2hlY2tzX19kb25lOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fNTVfYWRkaXRpb25hbENo
ZWNrc19fbG9vcCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDMyKTsKICAg
IHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDgpOwogICAgaWYgKHIxLmkgIT0gKkNB
U1Q8aW50cHRyX3QqPihyNC5pOHApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeUlk
U2xvdzsKICAgIHI0LmkgPSByNC5pICsgaW50cHRyX3QoMHg4KTsKICAgIGlmICgqQ0FTVDxpbnRw
dHJfdCo+KHIxLmk4cCArIDMyKSAhPSBpbnRwdHJfdCgweDIpKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzU1X2FkZGl0aW9uYWxDaGVja3NfX2xvb3A7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX181NV9h
ZGRpdGlvbmFsQ2hlY2tzX19kb25lKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyOCkpOwogICAgcjQuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjAuaThwICsgMTYpOwogICAgcjQuaSA9IHI0LmkgKyByMS5pOwogICAgaWYg
KHIyLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzU1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2Zm
bGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRp
b25fXzU1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2Vf
X2NvbnRpbnVhdGlvbl9fNTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICBy
MS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIxLmk4cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAw
MDApOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzU1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCkg
PSByMS5pOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MzApKTsKICAgICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsg
OCkgPSByMS5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4OSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5X3ZhbCkKICAgIHIx
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjIuaSA9ICpDQVNUPGludDMy
X3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAg
cjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgxOCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgODApOwog
ICAgaWYgKHIyLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNTZfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsX181Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bF9fNTZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbF9fNTZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmICgo
cjAuaSAmIHRhZ01hc2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlW
YWxTbG93OwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMTA4MDApOwogICAg
aWYgKHI0LmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzU3X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlSW50MzJfXzU3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVJbnQz
Ml9fNTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDkzNik7CiAgICByNC5pID0gcjQuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlSW50MzJfXzU3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAo
cjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlW
YWxTbG93OwogICAgcjEuaSA9IHIxLmkzMjsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCkgIT0gcjIuaSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93OwogICAg
cjQuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgMzIpOwogICAgaWYgKHIxLnUzMiA+PSAq
Q0FTVDx1aW50MzJfdCo+KHIwLmk4cCArIDI0KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29w
R2V0QnlWYWxTbG93OwogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChy
UEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyNC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgaWYgKHIyLmkg
PT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93OwogICAgKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgPSByMi5p
OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MjApKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0
ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChy
UEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAg
IERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9vcEdldEJ5VmFsU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAz
KTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
Q0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJ
bnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9
IGxsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVj
b2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAg
ICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5l
eGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJC
YXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHg1KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNN
X09QQ09ERV9MQUJFTChvcF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgcjAuaSA9ICpDQVNUPGlu
dDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwog
ICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgxOCkpOwogICAgaWYgKCpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpICE9IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9v
cEdldEFyZ3VtZW50QnlWYWxTbG93OwogICAgaWYgKHIxLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAw
MCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJf
XzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjIuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290
byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzU4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2xvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMl9fNThfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQpCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIy
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDkzNik7CiAgICByMS5pID0gcjEuaSAtIGlu
dHB0cl90KDB4NDAwMDAwMDApOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsg
KHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzU4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAocjIudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRCeVZhbFNsb3c7CiAgICByMi5pMzIgPSBy
Mi5pMzIgKyBpbnQzMl90KDB4MSk7CiAgICByMS5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAg
LSA0OCk7CiAgICBpZiAocjIudTMyID49IHIxLnUzMikKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
X29wR2V0QXJndW1lbnRCeVZhbFNsb3c7CiAgICByMi5pMzIgPSAtcjIuaTMyOwogICAgcjIuaSA9
IHIyLmkzMjsKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MjApKTsKICAgIHIwLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgtNTYpKTsK
ICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcEdldEFy
Z3VtZW50QnlWYWxTbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMp
OwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBD
QVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPElu
c3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0g
bGxpbnRfc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwoZXhlYywgcGMpOwogICAgICAgIExM
SW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsK
ICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQ
Qy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9ieV9wbmFtZSkKICAgIHIxLmkgPSAqQ0FTVDxp
bnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTgpKTsK
ICAgIGlmIChyMS5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAg
ICBnb3RvIF9vZmZsaW5lYXNtXzU5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzU5X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAg
ICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjEuaSA9IHIxLmkg
LSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIHIx
LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MjApKTsKICAgIC8vIGFzc2VydChpbmRleDxhMD4gPCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCk7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBpZiAocjEuaTMy
IDwgaW50MzJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Fzc2VydE5v
dENvbnN0YW50X181OV9hc3NlcnRfX29rOwogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFT
SCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX2Fzc2VydE5vdENvbnN0YW50X181OV9hc3NlcnRfX29rKQogICAgLy8gfSBFTkQgYXNz
ZXJ0LgogICAgaWYgKHIwLmkgIT0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjEuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcEdldEJ5UG5h
bWVTbG93OwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgyOCkpOwogICAgaWYgKHIyLmkg
Pj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlQ2VsbF9fNjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbF9fNjBfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihm
cC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAg
ICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bF9fNjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmICgocjAuaSAmIHRhZ01h
c2suaSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlQbmFtZVNsb3c7CiAg
ICAvLyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwogICAg
Ly8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHI0LmkzMiA8IGludDMyX3QoMHg0
MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9hc3NlcnROb3RDb25zdGFudF9fNjBf
YXNzZXJ0X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0g
RU5EIGNyYXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9hc3NlcnRO
b3RDb25zdGFudF9fNjBfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2VydC4KICAgIHIxLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgaWYgKHIyLmkg
IT0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAxNikpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV9vcEdldEJ5UG5hbWVTbG93OwogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgzMCkpOwogICAgcjQuaSA9ICpDQVNUPHVp
bnQzMl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgcjQu
aTMyID0gcjQuaTMyIC0gaW50MzJfdCgweDEpOwogICAgaWYgKHI0LnUzMiA+PSAqQ0FTVDx1aW50
MzJfdCo+KHIxLmk4cCArIDMyKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wR2V0QnlQbmFt
ZVNsb3c7CiAgICByNC5pMzIgPSByNC5pMzIgKyAqQ0FTVDxpbnQzMl90Kj4ocjEuaThwICsgNDAp
OwogICAgaWYgKHI0LmkzMiA8IGludDMyX3QoMHg1KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzYwX2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX2lzSW5saW5lOwogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjAuaThwICsgMTYpOwogICAgcjQuaTMyID0gLXI0LmkzMjsKICAgIHI0
LmkgPSByNC5pMzI7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzYwX2xvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXRfX3JlYWR5OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV82
MF9sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGluZSkKICAgIHIwLmkgPSByMC5p
ICsgaW50cHRyX3QoMHgwKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
NjBfbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkpCiAgICByMC5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAg
cjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg4KSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg3
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAg
KyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxp
bmVhc21fb3BHZXRCeVBuYW1lU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMu
aSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBl
eGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0g
Q0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJl
c3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9nZXRfYnlfcG5hbWUoZXhlYywgcGMpOwogICAgICAgIExM
SW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsK
ICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQ
Qy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDcpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3B1dF9ieV92YWwpCiAgICByMC5pID0gKkNBU1Q8aW50
MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAg
IGlmIChyMC5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxfXzYxX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbF9fNjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGxf
XzYxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAg
KyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIxLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGxfXzYxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAoKHIx
LmkgJiB0YWdNYXNrLmkpICE9IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5VmFs
U2xvdzsKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIGlmIChyMC5pID49IGludHB0cl90KDB4NDAwMDAw
MDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMy
X182Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX182Ml9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzJfXzYyX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50KQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICBy
Mi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBp
bnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCAr
IChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyX182Ml9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKHIyLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9vcFB1dEJ5VmFsU2xvdzsKICAgIHIyLmkgPSByMi5pMzI7CiAg
ICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIwLmk4cCArIDgwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIDEwODAwKTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCkgIT0gcjAuaSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX29wUHV0QnlWYWxTbG93OwogICAgaWYgKHIyLnUzMiA+PSAq
Q0FTVDx1aW50MzJfdCo+KHIxLmk4cCArIDI0KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29w
UHV0QnlWYWxTbG93OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMzIpOwog
ICAgaWYgKCpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MTgpKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BQdXRCeVZhbEVtcHR5OwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFB1dEJ5VmFsU3RvcmVSZXN1
bHQpCiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICBpZiAocjQuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAw
KSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzYzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV82M19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV82
M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIxLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsg
OTM2KTsKICAgIHI0LmkgPSByNC5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMS5pID0g
KkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzYzX2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2RvbmUpCiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDE4KSkgPSByMS5pOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90
KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1
cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX29wUHV0QnlWYWxFbXB0eSkKICAgICpDQVNUPGludDMyX3QqPihyMC5pOHAgKyA0
KSA9ICpDQVNUPGludDMyX3QqPihyMC5pOHAgKyA0KSArIGludDMyX3QoMHgxKTsKICAgIGlmIChy
Mi51MzIgPCAqQ0FTVDx1aW50MzJfdCo+KHIwLmk4cCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV9vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ7CiAgICByMS5pMzIgPSByMi5pMzIgKyBpbnQzMl90KDB4
MSk7CiAgICAqQ0FTVDxpbnQzMl90Kj4ocjAuaThwKSA9IHIxLmkzMjsKICAgIGdvdG8gX29mZmxp
bmVhc21fb3BQdXRCeVZhbFN0b3JlUmVzdWx0OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9vcFB1dEJ5VmFsU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChy
UEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBj
ID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBl
IHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9wdXRfYnlfdmFsKGV4ZWMsIHBjKTsKICAgICAgICBM
TEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7
CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIx
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSBy
UEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9G
RkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9sb29wKQogICAgLy8gbm9wCgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3Bfam1wKQogICAgclBDLmkzMiA9IHJQQy5pMzIgKyAqQ0FTVDxpbnQzMl90
Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgb3Bj
b2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09E
RSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2plcV9udWxsKQogICAgcjAuaSA9ICpD
QVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4
KSk7CiAgICAvLyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgp
OwogICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHIwLmkzMiA8IGludDMy
X3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2Fzc2Vy
dE5vdENvbnN0YW50X182M19hc3NlcnRfX29rOwogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBD
UkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2VxdWFsTnVsbF9fYXNzZXJ0Tm90Q29uc3RhbnRfXzYzX2Fzc2VydF9fb2spCiAg
ICAvLyB9IEVORCBhc3NlcnQuCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAo
cjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBpZiAoKHIwLmkgJiB0YWdNYXNrLmkp
ICE9IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2ltbWVkaWF0ZTsKICAg
IHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgaWYgKCgqQ0FTVDxpbnQ4
X3QqPihyMi5pOHAgKyAxNykgJiBpbnQ4X3QoMHgxKSkgIT0gMCkKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX2VxdWFsTnVsbF9fdGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX2VxdWFsTnVsbF9fdGFyZ2V0KQogICAgclBDLmkgPSByUEMuaSArICpDQVNUPGludHB0
cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsgLy8g
cGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJ
bnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7
IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2ltbWVkaWF0ZSkKICAgIHIw
LmkgPSByMC5pICYgaW50cHRyX3QoLTkpOwogICAgaWYgKHIwLmkgPT0gaW50cHRyX3QoMHgyKSkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2VxdWFsTnVsbF9fdGFyZ2V0OwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9P
UENPREVfTEFCRUwob3Bfam5lcV9udWxsKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICAvLyBhc3NlcnQo
aW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwogICAgLy8gbWFjcm8gYXNz
ZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHIwLmkzMiA8IGludDMyX3QoMHg0MDAwMDAwMCkpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2Fzc2VydE5vdENvbnN0YW50X182NF9h
c3NlcnRfX29rOwogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFTSCgpOwogICAgLy8gfSBF
TkQgY3Jhc2guCgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2VxdWFsTnVs
bF9fYXNzZXJ0Tm90Q29uc3RhbnRfXzY0X2Fzc2VydF9fb2spCiAgICAvLyB9IEVORCBhc3NlcnQu
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7CiAgICBpZiAoKHIwLmkgJiB0YWdNYXNrLmkpICE9IDApCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV82NF9lcXVhbE51bGxfX2ltbWVkaWF0ZTsKICAgIHIyLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIwLmk4cCArIDgpOwogICAgaWYgKCgqQ0FTVDxpbnQ4X3QqPihyMi5pOHAgKyAx
NykgJiBpbnQ4X3QoMHgxKSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzY0X2VxdWFs
TnVsbF9fdGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzY0X2Vx
dWFsTnVsbF9fdGFyZ2V0KQogICAgclBDLmkgPSByUEMuaSArICpDQVNUPGludHB0cl90Kj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsgLy8gcGMgPSBwYyAr
IHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUq
PihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8g
bmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV82NF9lcXVhbE51bGxfX2ltbWVkaWF0ZSkKICAgIHIwLmkgPSBy
MC5pICYgaW50cHRyX3QoLTkpOwogICAgaWYgKHIwLmkgIT0gaW50cHRyX3QoMHgyKSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzY0X2VxdWFsTnVsbF9fdGFyZ2V0OwogICAgclBDLmkgPSByUEMu
aSArIGludHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBj
ICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29k
ZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290
byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3Bfam5lcV9wdHIpCiAgICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7
CiAgICBpZiAocjEuaSAhPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMC5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wSm5lcVB0clRhcmdl
dDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcEpuZXFQdHJUYXJnZXQp
CiAgICByUEMuaTMyID0gclBDLmkzMiArICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChy
UEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRP
cGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX3N3aXRjaF9pbW0pCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICByNC5pID0g
KkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDgpKTsKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fNjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5p
ID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzY0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7
CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzY0X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0g
OCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwogICAgcjIuaSA9
IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIxLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkK
ICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjIuaSA9ICpDQVNU
PGludHB0cl90Kj4ocjIuaThwICsgMTExMik7CiAgICByNC5pMzIgPSByNC5pMzIgKiBpbnQzMl90
KDB4MjApOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgODApOwogICAgcjIu
aSA9IHIyLmkgKyByNC5pOwogICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV9vcFN3aXRjaEltbU5vdEludDsKICAgIHIxLmkzMiA9IHIxLmkzMiAt
ICpDQVNUPGludDMyX3QqPihyMi5pOHAgKyAyNCk7CiAgICBpZiAocjEudTMyID49ICpDQVNUPHVp
bnQzMl90Kj4ocjIuaThwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tRmFs
bFRocm91Z2g7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyA4KTsKICAgIHIx
LmkgPSAqQ0FTVDxpbnQzMl90Kj4ocjQuaThwICsgKHIxLmkzMiA8PCAyKSArIGludHB0cl90KDB4
MCkpOwogICAgaWYgKHIxLmkzMiA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaDsKICAgIHJQQy5pID0gclBDLmkgKyByMS5pOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNv
ZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9v
cFN3aXRjaEltbU5vdEludCkKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgIT0gMCkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdzsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1GYWxsVGhyb3VnaCkKICAgIHJQQy5p
MzIgPSByUEMuaTMyICsgKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4
cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhl
Y1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rp
b24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9zd2l0Y2hfaW1tKGV4ZWMsIHBjKTsKICAg
ICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNT
dGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAu
aSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBD
LmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4
Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29k
ZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUo
KTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9zd2l0Y2hfY2hhcikKICAgIHIyLmkgPSAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MTgpKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIyLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAw
MCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV82NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fNjVfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
NjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCAr
IDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEuaSA9
ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV82NV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lKQogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7
CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyAxMTEyKTsKICAgIHI0LmkzMiA9
IHI0LmkzMiAqIGludDMyX3QoMHgyMCk7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5p
OHAgKyAxMDQpOwogICAgcjIuaSA9IHIyLmkgKyByNC5pOwogICAgaWYgKChyMS5pICYgdGFnTWFz
ay5pKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91
Z2g7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA4KTsKICAgIGlmICgqQ0FT
VDxpbnQ4X3QqPihyMC5pOHAgKyAxNikgIT0gaW50OF90KDB4NSkpCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDsKICAgIGlmICgqQ0FTVDxpbnQzMl90Kj4o
cjEuaThwICsgMjApICE9IGludDMyX3QoMHgxKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThw
ICsgMjQpOwogICAgaWYgKHIwLmkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dp
dGNoT25Sb3BlOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOCk7CiAgICBp
ZiAoKCpDQVNUPGludDMyX3QqPihyMC5pOHAgKyAyNCkgJiBpbnQzMl90KDB4NDApKSAhPSAwKQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyOEJpdDsKICAgIHIwLmkgPSAqQ0FT
VDx1aW50MTZfdCo+KHIxLmk4cCk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNoQ2hhclJl
YWR5OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXI4
Qml0KQogICAgcjAuaSA9ICpDQVNUPHVpbnQ4X3QqPihyMS5pOHApOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXJSZWFkeSkKICAgIHIwLmkzMiA9IHIw
LmkzMiAtICpDQVNUPGludDMyX3QqPihyMi5pOHAgKyAyNCk7CiAgICBpZiAocjAudTMyID49ICpD
QVNUPHVpbnQzMl90Kj4ocjIuaThwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4ocjIuaThwICsgOCk7
CiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHIyLmk4cCArIChyMC5pMzIgPDwgMikgKyBpbnRw
dHJfdCgweDApKTsKICAgIGlmIChyMS5pMzIgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
X29wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOwogICAgclBDLmkgPSByUEMuaSArIHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtX29wU3dpdGNoQ2hhckZhbGxUaHJvdWdoKQogICAgclBDLmkzMiA9IHJQQy5pMzIgKyAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MTApKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBD
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
b3BTd2l0Y2hPblJvcGUpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7
CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENB
U1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5z
dHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBs
bGludF9zbG93X3BhdGhfc3dpdGNoX2NoYXIoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNv
ZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAg
IHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJh
c2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0g
clBDLmkgKyBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRP
cGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX25ld19mdW5jKQogICAgaWYgKCpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpID09IDApCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9vcE5ld0Z1bmNVbmNoZWNrZWQ7CiAgICByMS5pID0gKkNBU1Q8aW50MzJf
dCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlm
ICgqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BOZXdGdW5jRG9uZTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BOZXdGdW5jVW5jaGVja2VkKQogICAgclBD
Lmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsK
ICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX25ld19mdW5j
KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1
Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkg
PSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUg
Pj4gdWludHB0cl90KDB4Myk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X29wTmV3RnVuY0RvbmUpCiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF90ZWFyX29mZl9hY3Rp
dmF0aW9uKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBpZiAoKkNBU1Q8
aW50cHRyX3QqPihmcC5pOHAgKyAocjAuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSkgIT0gMCkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOwogICAg
aWYgKCpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFRlYXJPZmZBY3RpdmF0aW9uTm90
Q3JlYXRlZDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fb3BUZWFyT2Zm
QWN0aXZhdGlvbkNyZWF0ZWQpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwg
Myk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbihleGVjLCBwYyk7CiAgICAgICAg
TExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUp
OwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSBy
MS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0g
clBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFRlYXJPZmZBY3RpdmF0aW9u
Tm90Q3JlYXRlZCkKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3RlYXJfb2ZmX2FyZ3VtZW50
cykKICAgIHIwLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAz
KSArIGludHB0cl90KDB4OCkpOwogICAgcjAuaTMyID0gcjAuaTMyIC0gaW50MzJfdCgweDEpOwog
ICAgaWYgKCpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFRlYXJPZmZBcmd1bWVudHNO
b3RDcmVhdGVkOwogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAg
cjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4
ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0
aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRf
c2xvd19wYXRoX3RlYXJfb2ZmX2FyZ3VtZW50cyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRl
Y29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQog
ICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQu
ZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSBy
QmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVk
KQogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Mik7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUg
PSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7
CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcmV0KQogICAgcjIuaSA9ICpDQVNUPGludDMy
X3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICBp
ZiAocjIuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
XzY2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290
byBfb2ZmbGluZWFzbV82Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV82Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIyLmkgPSByMi5pIC0gaW50
cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzY2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICByMi5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHJl
dHVyblBDPHQyPiA9IGNmci5SZXR1cm5QQzsKICAgIGZwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDQwKTsgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gY2ZyLkNhbGxlckZyYW1l
OwogICAgclJldFZQQy5pID0gcjIuaTsKICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gcmV0dXJuOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX2NhbGxfcHV0X3Jlc3VsdCkKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90
Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjQu
aSA9ICpDQVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MTApKTsKICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50
Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCAr
IChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
ICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3JldF9v
YmplY3Rfb3JfdGhpcykKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgaWYgKHIyLmkgPj0gaW50cHRyX3Qo
MHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV82N19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChy
Mi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fNjdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fNjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIwLmk4cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV82N19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKChyMC5pICYgdGFnTWFzay5pKSAhPSAw
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fb3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q7CiAg
ICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA4KTsKICAgIGlmICgqQ0FTVDx1aW50
OF90Kj4ocjIuaThwICsgMTYpIDwgdWludDhfdCgweGQpKQogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fb3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q7CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgLSAxNik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVyblBDPHQyPiA9IGNm
ci5SZXR1cm5QQzsKICAgIGZwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDQwKTsgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2ZyID0gY2ZyLkNhbGxlckZyYW1lOwogICAgclJldFZQQy5p
ID0gcjIuaTsKICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZG8gcmV0dXJuOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdCkKICAgIHIyLmkgPSAqQ0FTVDxp
bnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsK
ICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fNjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAg
ICBnb3RvIF9vZmZsaW5lYXNtXzY4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzY4X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAg
ICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkg
LSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fNjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIHIy
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDE2KTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gcmV0dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDOwogICAgZnAuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwIC0gNDApOyAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSBjZnIuQ2FsbGVy
RnJhbWU7CiAgICByUmV0VlBDLmkgPSByMi5pOwogICAgZ290byBkb1JldHVybkhlbHBlcjsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyByZXR1cm47CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfdG9fcHJpbWl0aXZlKQogICAgcjIuaSA9ICpDQVNUPGludDMy
X3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAg
cjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHg4KSk7CiAgICBpZiAocjIuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzY5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50Owog
ICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV82OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV82OV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCAtIDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAg
IHIyLmkgPSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzY5X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmUpCiAgICBpZiAoKHIwLmkgJiB0YWdNYXNrLmkpICE9IDApCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcFRvUHJpbWl0aXZlSXNJbW07CiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MC5pOHAgKyA4KTsKICAgIGlmICgqQ0FTVDxpbnQ4X3QqPihyMi5pOHAgKyAxNikgIT0gaW50OF90
KDB4NSkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9vcFRvUHJpbWl0aXZlU2xvd0Nhc2U7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVJc0ltbSkK
ICAgICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpID0gcjAuaTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9vcFRvUHJp
bWl0aXZlU2xvd0Nhc2UpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7
CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENB
U1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5z
dHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBs
bGludF9zbG93X3BhdGhfdG9fcHJpbWl0aXZlKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVj
b2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAg
ICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5l
eGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJC
YXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNN
X09QQ09ERV9MQUJFTChvcF9uZXh0X3BuYW1lKQogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihy
QmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgcjIuaSA9
ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgyMCkpOwogICAgLy8gYXNzZXJ0KGluZGV4PGEwPiA8IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KTsKICAgIC8vIG1hY3JvIGFzc2VydChhc3NlcnRpb24pIHsKICAgIGlmIChyMS5pMzIgPCBp
bnQzMl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fYXNzZXJ0Tm90Q29u
c3RhbnRfXzY5X2Fzc2VydF9fb2s7CiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7
CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fYXNzZXJ0Tm90Q29uc3RhbnRfXzY5X2Fzc2VydF9fb2spCiAgICAvLyB9IEVORCBhc3NlcnQu
CiAgICAvLyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwog
ICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHIyLmkzMiA8IGludDMyX3Qo
MHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9hc3NlcnROb3RDb25zdGFudF9f
NzBfYXNzZXJ0X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8v
IH0gRU5EIGNyYXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9hc3Nl
cnROb3RDb25zdGFudF9fNzBfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2VydC4KICAgIHIw
LmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKTsKICAgIGlmIChyMC5pMzIgPT0gKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCArIChyMi5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX29wTmV4dFBu
YW1lRW5kOwogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgyOCkpOwogICAgLy8gYXNzZXJ0KGluZGV4PGEwPiA8IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKICAgIC8vIG1hY3JvIGFzc2VydChhc3NlcnRpb24pIHsK
ICAgIGlmIChyMi5pMzIgPCBpbnQzMl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzcxX2Fzc2VydF9fb2s7CiAgICAvLyBtYWNybyBjcmFz
aCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzcxX2Fzc2VydF9fb2spCiAg
ICAvLyB9IEVORCBhc3NlcnQuCiAgICByMi5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAo
cjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMi5pOHAgKyA0OCk7CiAgICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAocjAu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICByMC5pMzIgPSByMC5pMzIgKyBpbnQzMl90
KDB4MSk7CiAgICAqQ0FTVDxpbnQzMl90Kj4oZnAuaThwICsgKHIxLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpID0gcjAuaTMyOwogICAgcjEuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+
KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKSA9IHI0Lmk7CiAgICByNC5p
ID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDEwKSk7CiAgICAvLyBhc3NlcnQoaW5kZXg8YTA+IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgpOwogICAgLy8gbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikgewogICAgaWYgKHI0LmkzMiA8
IGludDMyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9hc3NlcnROb3RD
b25zdGFudF9fNzJfYXNzZXJ0X19vazsKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0go
KTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9hc3NlcnROb3RDb25zdGFudF9fNzJfYXNzZXJ0X19vaykKICAgIC8vIH0gRU5EIGFzc2Vy
dC4KICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDgpOwog
ICAgaWYgKHIxLmkgIT0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAgKyAxNikpCiAgICAgICAgZ290
byBfb2ZmbGluZWFzbV9vcE5leHRQbmFtZVNsb3c7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMi5pOHAgKyAyNCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyAxNik7
CiAgICBpZiAoKkNBU1Q8aW50cHRyX3QqPihyMC5pOHApID09IDApCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9vcE5leHRQbmFtZVRhcmdldDsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fb3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3ApCiAgICBpZiAoKkNBU1Q8aW50
cHRyX3QqPihyMS5pOHAgKyAzMikgPT0gaW50cHRyX3QoMHgyKSkKICAgICAgICBnb3RvIF9vZmZs
aW5lYXNtX29wTmV4dFBuYW1lU2xvdzsKICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4
cCArIDMyKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIyLmk4cCArIDgpOwogICAgaWYg
KHIxLmkgIT0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHApKQogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fb3BOZXh0UG5hbWVTbG93OwogICAgcjAuaSA9IHIwLmkgKyBpbnRwdHJfdCgweDgpOwogICAg
aWYgKCpDQVNUPGludHB0cl90Kj4ocjAuaThwKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVh
c21fb3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lVGFyZ2V0KQogICAgclBDLmkzMiA9IHJQQy5pMzIg
KyAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MzApKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fb3BOZXh0UG5hbWVFbmQpCiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg3KTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBD
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21f
b3BOZXh0UG5hbWVTbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMp
OwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBD
QVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPElu
c3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0g
bGxpbnRfc2xvd19wYXRoX25leHRfcG5hbWUoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNv
ZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAg
IHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJh
c2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0g
clBDLmkgKyBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRP
cGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX2NhdGNoKQogICAgZnAuaSA9IHIwLmk7CiAgICByQmFzZVBDLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgckJhc2VQQy5pID0gKkNBU1Q8aW50cHRy
X3QqPihyQmFzZVBDLmk4cCArIDg4KTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KChhc3Nl
cnQoMCA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRhKSksICZzcC0+Z2xvYmFs
RGF0YSkpOwogICAgclBDLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDEwODU2KTsKICAg
IHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJf
dCgweDMpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgMTA3OTIpOwogICAg
KkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyAxMDc5MikgPSBpbnRwdHJfdCgweDApOwogICAgcjIu
aSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHg4KSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKSA9IHIwLmk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgyKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9lbmQpCiAg
ICByMC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDgpKTsKICAgIC8vIGFzc2VydChpbmRleDxhMD4gPCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCk7CiAgICAvLyBtYWNybyBhc3NlcnQoYXNzZXJ0aW9uKSB7CiAgICBpZiAocjAu
aTMyIDwgaW50MzJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2Fzc2Vy
dE5vdENvbnN0YW50X183M19hc3NlcnRfX29rOwogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBD
UkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2Fzc2VydE5vdENvbnN0YW50X183M19hc3NlcnRfX29rKQogICAgLy8gfSBFTkQg
YXNzZXJ0LgogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHIwLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpOwogICAgcjIuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0g
MTYpOyAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5QQzx0Mj4gPSBjZnIuUmV0dXJuUEM7
CiAgICBmcC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA0MCk7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmciA9IGNmci5DYWxsZXJGcmFtZTsKICAgIHJSZXRWUEMuaSA9IHIyLmk7CiAg
ICBnb3RvIGRvUmV0dXJuSGVscGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRvIHJldHVybjsKCk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfdGhyb3dfZnJv
bV9zbG93X3BhdGhfdHJhbXBvbGluZSkKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KChhc3Nl
cnQoMCA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRhKSksICZzcC0+Z2xvYmFs
RGF0YSkpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgMTA4NDApOwogICAg
b3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyMS5pOHAgKyAxMDg0OCk7CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfdGhyb3dfZHVyaW5nX2Nh
bGxfdHJhbXBvbGluZSkKICAgIHIyLmkgPSByUmV0VlBDLmk7CiAgICByMS5pID0gKkNBU1Q8aW50
cHRyX3QqPigoYXNzZXJ0KDAgPT0gb2Zmc2V0b2YoSklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkp
LCAmc3AtPmdsb2JhbERhdGEpKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCAr
IDEwODQwKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ocjEuaThwICsgMTA4NDgp
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbmV3
X2FycmF5KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQu
aSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNT
dGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9u
Kj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xv
d19wYXRoX25ld19hcnJheShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChy
ZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSBy
MC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQx
PgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAg
ICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMu
aSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBl
eGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0g
Q0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJl
c3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKGV4ZWMsIHBjKTsKICAgICAg
ICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0
ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9
IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkg
PSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsK
Ck9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9uZXdfcmVnZXhwKQogICAgclBDLmk4cCA9IHJC
YXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJ
bnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX25ld19yZWdleHAoZXhlYywg
cGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwg
cjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+
CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7
CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50
cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwog
ICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENI
X09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2xlc3MpCiAgICByUEMuaThw
ID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAg
ewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAg
ICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAg
IFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfbGVzcyhleGVjLCBw
Yyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCBy
MS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4K
ICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsK
ICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRw
dHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbGVzc2VxKQogICAgclBDLmk4
cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAg
IHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAg
ICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAg
ICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2xlc3NlcShleGVj
LCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9u
LCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0
MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQu
aTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVp
bnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ3JlYXRlcikKICAgIHJQ
Qy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7
CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7
CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAg
ICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9ncmVhdGVy
KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1
Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0
aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkg
PSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUg
Pj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVj
b2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBD
LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBE
SVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9ncmVhdGVyZXEp
CiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJh
c2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4o
ZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMu
dnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhf
Z3JlYXRlcmVxKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICBy
QmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51
ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9t
b2QpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0g
ckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRl
Kj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihy
UEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3Bh
dGhfbW9kKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAu
aW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmlu
c3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFz
ZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0g
clBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAg
KyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF90eXBl
b2YpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0g
ckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRl
Kj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihy
UEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3Bh
dGhfdHlwZW9mKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICBy
QmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51
ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9p
c19vYmplY3QpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICBy
NC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhl
Y1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rp
b24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9z
bG93X3BhdGhfaXNfb2JqZWN0KGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0
KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9
IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8
dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsK
ICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsg
aW50cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBz
aXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4o
ckJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5l
eHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9pc19mdW5jdGlvbikKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8
PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FT
VDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IGxsaW50X3Nsb3dfcGF0aF9pc19mdW5jdGlvbihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6
OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAg
fQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkg
LSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfaW4pCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBD
LmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9
IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQgPSBsbGludF9zbG93X3BhdGhfaW4oZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNv
ZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAg
IHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJh
c2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0g
clBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMg
PSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRP
cGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX3Jlc29sdmUpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBD
LmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9
IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcmVzb2x2ZShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6
OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAg
fQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkg
LSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfcmVzb2x2ZV9za2lwKQogICAgclBDLmk4cCA9IHJCYXNlUEMu
aThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVj
dGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJl
dHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfc2tpcChleGVjLCBwYyk7
CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5l
eGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAg
IGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAg
IHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJf
dCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcmVzb2x2ZV9iYXNlKQogICAgclBD
Lmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsK
ICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsK
ICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAg
ICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVf
YmFzZShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmlu
c3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0
cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQ
Qy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQ
Qy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRC
eXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAz
KTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
Q0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJ
bnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9
IGxsaW50X3Nsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKGV4ZWMsIHBjKTsKICAgICAg
ICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0
ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9
IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkg
PSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsK
Ck9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9yZXNvbHZlX3dpdGhfYmFzZSkKICAgIHJQQy5p
OHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAg
ICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAg
ICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAg
ICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3dp
dGhfYmFzZShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIw
Lmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5p
bnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJh
c2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9
IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcmVz
b2x2ZV93aXRoX3RoaXMpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7
CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENB
U1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5z
dHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBs
bGludF9zbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMoZXhlYywgcGMpOwogICAgICAgIExMSW50
OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAg
IH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVz
dWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5p
IC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQ
Qy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8
TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgw
KSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX2RlbF9ieV9pZCkKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4
cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhl
Y1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rp
b24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9kZWxfYnlfaWQoZXhlYywgcGMpOwogICAg
ICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0
YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5p
ID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMu
aSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgz
KTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2RlbF9ieV92YWwpCiAgICByUEMuaThwID0g
ckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewog
ICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAg
IEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfZGVsX2J5X3ZhbChleGVj
LCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9u
LCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0
MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQu
aTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVp
bnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7
CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFU
Q0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHV0X2J5X2luZGV4KQog
ICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNl
UEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZw
LnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZw
KTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3B1
dF9ieV9pbmRleChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQs
IHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3Vs
dC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAg
ckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMu
dSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90
KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1
cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bf
cHV0X2dldHRlcl9zZXR0ZXIpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwg
Myk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfcHV0X2dldHRlcl9zZXR0ZXIoZXhlYywgcGMpOwogICAgICAgIExM
SW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsK
ICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQ
Qy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2ptcF9zY29wZXMpCiAgICByUEMuaThwID0gckJhc2VQ
Qy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3Ry
dWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRo
UmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfam1wX3Njb3BlcyhleGVjLCBwYyk7
CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5l
eGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAg
IGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAg
IHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJf
dCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbG9vcF9pZl90cnVlKQogICAgLy8g
bm9wCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfanRydWUpCiAgICByMS5pID0gKkNBU1Q8
aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsK
ICAgIGlmIChyMS5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fanVtcFRydWVPckZhbHNlX183M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX183M19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfXzczX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjEuaSA9IHIxLmkgLSBpbnRw
dHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChy
MS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX183M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lKQogICAgcjAuaSA9IHIwLmkgXiBpbnRwdHJfdCgweDYpOwogICAgaWYgKChyMC5pICYgaW50
cHRyX3QoLTEpKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNl
X19zbG93OwogICAgaWYgKHIwLmkzMiAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fanVt
cFRydWVPckZhbHNlX190YXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fanVtcFRydWVPckZhbHNlX190YXJnZXQpCiAgICByUEMuaTMyID0gclBDLmkzMiArICpDQVNU
PGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkp
OwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMy
IDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BB
VENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9qdW1w
VHJ1ZU9yRmFsc2VfX3Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwg
Myk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfanRydWUoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVS
ZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQ
Qy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNT
dGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQ
Qy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBD
LmkgKyBpbnRwdHJfdCgweDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BD
T0RFX0xBQkVMKG9wX2xvb3BfaWZfZmFsc2UpCiAgICAvLyBub3AKCk9GRkxJTkVfQVNNX09QQ09E
RV9MQUJFTChvcF9qZmFsc2UpCiAgICByMS5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIGlmIChyMS5pID49IGludHB0
cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNl
X183NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX183NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9y
RmFsc2VfXzc0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihy
MC5pOHAgKyA5MzYpOwogICAgcjEuaSA9IHIxLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAg
IHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMS5pMzIgPDwgMykgKyBpbnRwdHJf
dCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fanVtcFRydWVP
ckZhbHNlX183NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgcjAuaSA9IHIwLmkg
XiBpbnRwdHJfdCgweDYpOwogICAgaWYgKChyMC5pICYgaW50cHRyX3QoLTEpKSAhPSAwKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fNzRfanVtcFRydWVPckZhbHNlX19zbG93OwogICAgaWYgKHIw
LmkzMiA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fNzRfanVtcFRydWVPckZhbHNlX190
YXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgzKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9w
Y29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENP
REUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNzRfanVtcFRydWVP
ckZhbHNlX190YXJnZXQpCiAgICByUEMuaTMyID0gclBDLmkzMiArICpDQVNUPGludDMyX3QqPihy
QmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV83NF9qdW1wVHJ1ZU9yRmFs
c2VfX3Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICBy
NC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhl
Y1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rp
b24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9z
bG93X3BhdGhfamZhbHNlKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJl
c3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIw
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+
CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAg
IHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50
cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXpl
b2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJF
TChvcF9sb29wX2lmX2xlc3MpCiAgICAvLyBub3AKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChv
cF9qbGVzcykKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgaWYgKHIyLmkg
Pj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJl
X183NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fY29tcGFyZV9fNzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNzVfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihm
cC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAg
ICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX183NV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lKQogICAgaWYgKHI0LmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX183Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fNzZf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fY29tcGFyZV9fNzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQp
CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FT
VDxpbnRwdHJfdCo+KHIxLmk4cCArIDkzNik7CiAgICByNC5pID0gcjQuaSAtIGludHB0cl90KDB4
NDAwMDAwMDApOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHI0LmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9jb21wYXJlX183Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKHIw
LnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX19v
cDFOb3RJbnQ7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX2NvbXBhcmVfX29wMk5vdEludDsKICAgIGlmIChyMC5pMzIgPCByMS5pMzIpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSBy
UEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9w
Y29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludCkKICAgIGlmICgocjAu
aSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBh
cmVfX3Nsb3c7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludE9wMk5vdEludDsKICAgIGQxLmQgPSByMS5pMzI7
CiAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludFJlYWR5OwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX19vcDFOb3RJbnRPcDJOb3RJbnQp
CiAgICBpZiAoKHIxLmkgJiB0YWdUeXBlTnVtYmVyLmkpID09IDApCiAgICAgICAgZ290byBfb2Zm
bGluZWFzbV9jb21wYXJlX19zbG93OwogICAgcjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7
CiAgICBkMS5kID0gcjEuY2FzdFRvRG91YmxlOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkKICAgIHIwLmkgPSByMC5pICsgdGFn
VHlwZU51bWJlci5pOwogICAgZDAuZCA9IHIwLmNhc3RUb0RvdWJsZTsKICAgIGlmIChkMC5kIDwg
ZDEuZCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fb3AyTm90SW50KQogICAg
ZDAuZCA9IHIwLmkzMjsKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfX3Nsb3c7CiAgICByMS5pID0gcjEuaSArIHRh
Z1R5cGVOdW1iZXIuaTsKICAgIGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7CiAgICBpZiAoZDAuZCA8
IGQxLmQpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQpCiAg
ICByUEMuaTMyID0gclBDLmkzMiArICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNv
ZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdv
dG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNl
UEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0
cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0
aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2psZXNzKGV4ZWMsIHBjKTsKICAg
ICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNT
dGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAu
aSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBD
LmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4
Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29k
ZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGlu
dHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUo
KTsKCi8vIGJ5dGVjb2RlOiBqbmxlc3Mgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCi8v
IAovLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgbGVzcyB0aGFuIHJlZ2lzdGVy
IHNyYzIsIGFzCi8vICAgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPCcgb3BlcmF0b3IsIGFuZCB0aGVu
IGp1bXBzIHRvIG9mZnNldAovLyAgIHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9u
LCBpZiBhbmQgb25seSBpZiB0aGUgCi8vICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIGZh
bHNlLgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2pubGVzcykKICAgIHIyLmkgPSAqQ0FT
VDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkp
OwogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgxMCkpOwogICAgaWYgKHIyLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX183N19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9f
NzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fY29tcGFyZV9fNzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90
KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV9jb21wYXJlX183N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYg
KHI0LmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9j
b21wYXJlX183OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIxLmkgPSAq
Q0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsK
ICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fNzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fNzhf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDkz
Nik7CiAgICByNC5pID0gcjQuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEuaSA9ICpD
QVNUPGludHB0cl90Kj4ocjEuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX183OF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKHIwLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV83OF9jb21wYXJlX19vcDFOb3RJbnQ7CiAgICBpZiAocjEu
dSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzc4X2NvbXBhcmVf
X29wMk5vdEludDsKICAgIGlmIChyMC5pMzIgPj0gcjEuaTMyKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fNzhfY29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJf
dCgweDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihj
dXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChf
b2ZmbGluZWFzbV83OF9jb21wYXJlX19vcDFOb3RJbnQpCiAgICBpZiAoKHIwLmkgJiB0YWdUeXBl
TnVtYmVyLmkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV83OF9jb21wYXJlX19zbG93
OwogICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV83OF9jb21wYXJlX19vcDFOb3RJbnRPcDJOb3RJbnQ7CiAgICBkMS5kID0gcjEuaTMyOwogICAg
Z290byBfb2ZmbGluZWFzbV83OF9jb21wYXJlX19vcDFOb3RJbnRSZWFkeTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNzhfY29tcGFyZV9fb3AxTm90SW50T3AyTm90SW50
KQogICAgaWYgKChyMS5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAwKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fNzhfY29tcGFyZV9fc2xvdzsKICAgIHIxLmkgPSByMS5pICsgdGFnVHlwZU51bWJl
ci5pOwogICAgZDEuZCA9IHIxLmNhc3RUb0RvdWJsZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fNzhfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpCiAgICByMC5pID0gcjAu
aSArIHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQwLmQgPSByMC5jYXN0VG9Eb3VibGU7CiAgICBpZiAo
aXNuYW4oZDAuZCkgfHwgaXNuYW4oZDEuZCkKICAgICAgICB8fCAoZDAuZCA+PSBkMS5kKSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzc4X2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fNzhfY29tcGFyZV9fb3AyTm90SW50KQogICAgZDAu
ZCA9IHIwLmkzMjsKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzc4X2NvbXBhcmVfX3Nsb3c7CiAgICByMS5pID0gcjEuaSArIHRh
Z1R5cGVOdW1iZXIuaTsKICAgIGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7CiAgICBpZiAoaXNuYW4o
ZDAuZCkgfHwgaXNuYW4oZDEuZCkKICAgICAgICB8fCAoZDAuZCA+PSBkMS5kKSkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtXzc4X2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5p
ICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMg
KyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2Rl
Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3Rv
IG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwoX29mZmxpbmVhc21fNzhfY29tcGFyZV9fanVtcFRhcmdldCkKICAgIHJQQy5pMzIg
PSByUEMuaTMyICsgKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDE4KSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNl
UEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5
dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzc4X2NvbXBhcmVfX3Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAg
KyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9u
KiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfam5sZXNzKGV4ZWMsIHBjKTsKICAgICAgICBM
TEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7
CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIx
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSBy
UEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9G
RkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9sb29wX2lmX2dyZWF0ZXIpCiAgICAvLyBub3AKCk9G
RkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9qZ3JlYXRlcikKICAgIHIyLmkgPSAqQ0FTVDxpbnQz
Ml90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4OCkpOwogICAg
cjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgxMCkpOwogICAgaWYgKHIyLmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX183OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fNzlfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fY29tcGFyZV9fNzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAg
ICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICByMi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAw
MDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9jb21wYXJlX183OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKHI0Lmkg
Pj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJl
X184MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdv
dG8gX29mZmxpbmVhc21fY29tcGFyZV9fODBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fODBfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihm
cC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDkzNik7CiAg
ICByNC5pID0gcjQuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjEuaSA9ICpDQVNUPGlu
dHB0cl90Kj4ocjEuaThwICsgKHI0LmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX184MF9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lKQogICAgaWYgKHIwLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAg
Z290byBfb2ZmbGluZWFzbV84MF9jb21wYXJlX19vcDFOb3RJbnQ7CiAgICBpZiAocjEudSA8IHRh
Z1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgwX2NvbXBhcmVfX29wMk5v
dEludDsKICAgIGlmIChyMC5pMzIgPiByMS5pMzIpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84
MF9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRC
eXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtXzgwX2NvbXBhcmVfX29wMU5vdEludCkKICAgIGlmICgocjAuaSAmIHRhZ1R5cGVOdW1iZXIu
aSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgwX2NvbXBhcmVfX3Nsb3c7CiAgICBp
ZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgwX2Nv
bXBhcmVfX29wMU5vdEludE9wMk5vdEludDsKICAgIGQxLmQgPSByMS5pMzI7CiAgICBnb3RvIF9v
ZmZsaW5lYXNtXzgwX2NvbXBhcmVfX29wMU5vdEludFJlYWR5OwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV84MF9jb21wYXJlX19vcDFOb3RJbnRPcDJOb3RJbnQpCiAgICBp
ZiAoKHIxLmkgJiB0YWdUeXBlTnVtYmVyLmkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV84MF9jb21wYXJlX19zbG93OwogICAgcjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAg
ICBkMS5kID0gcjEuY2FzdFRvRG91YmxlOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2Zm
bGluZWFzbV84MF9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkKICAgIHIwLmkgPSByMC5pICsgdGFn
VHlwZU51bWJlci5pOwogICAgZDAuZCA9IHIwLmNhc3RUb0RvdWJsZTsKICAgIGlmIChkMC5kID4g
ZDEuZCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgwX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAg
ICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpD
QVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fODBfY29tcGFyZV9fb3AyTm90SW50
KQogICAgZDAuZCA9IHIwLmkzMjsKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0g
MCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgwX2NvbXBhcmVfX3Nsb3c7CiAgICByMS5pID0g
cjEuaSArIHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7CiAgICBp
ZiAoZDAuZCA+IGQxLmQpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84MF9jb21wYXJlX19qdW1w
VGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzgwX2NvbXBhcmVf
X2p1bXBUYXJnZXQpCiAgICByUEMuaTMyID0gclBDLmkzMiArICpDQVNUPGludDMyX3QqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgb3Bjb2RlID0g
KkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoK
ICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84MF9jb21wYXJlX19zbG93KQog
ICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNl
UEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZw
LnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZw
KTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2pn
cmVhdGVyKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAu
aW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmlu
c3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFz
ZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0g
clBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgw
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVu
dEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAg
KyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7
CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9qbmdy
ZWF0ZXIpCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIg
PDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQ
Qy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTApKTsKICAgIGlmIChyMi5pID49
IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9f
ODFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMC5pID0gKkNBU1Q8aW50
cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3Rv
IF9vZmZsaW5lYXNtX2NvbXBhcmVfXzgxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzgxX2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAu
aThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMC5pOHAgKyA5MzYpOwogICAg
cjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fODFfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZSkKICAgIGlmIChyNC5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAg
ICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fODJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjQuaTMyIDw8
IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzgyX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzgyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQog
ICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMS5pID0gKkNBU1Q8
aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwogICAgcjQuaSA9IHI0LmkgLSBpbnRwdHJfdCgweDQw
MDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIChyNC5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fY29tcGFyZV9fODJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyMC51
IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fODJfY29tcGFyZV9f
b3AxTm90SW50OwogICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBf
b2ZmbGluZWFzbV84Ml9jb21wYXJlX19vcDJOb3RJbnQ7CiAgICBpZiAocjAuaTMyIDw9IHIxLmkz
MikKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgyX2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICBy
UEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fODJfY29tcGFyZV9fb3AxTm90SW50KQog
ICAgaWYgKChyMC5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fODJfY29tcGFyZV9fc2xvdzsKICAgIGlmIChyMS51IDwgdGFnVHlwZU51bWJlci51KQog
ICAgICAgIGdvdG8gX29mZmxpbmVhc21fODJfY29tcGFyZV9fb3AxTm90SW50T3AyTm90SW50Owog
ICAgZDEuZCA9IHIxLmkzMjsKICAgIGdvdG8gX29mZmxpbmVhc21fODJfY29tcGFyZV9fb3AxTm90
SW50UmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzgyX2NvbXBh
cmVfX29wMU5vdEludE9wMk5vdEludCkKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkg
PT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzgyX2NvbXBhcmVfX3Nsb3c7CiAgICByMS5p
ID0gcjEuaSArIHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7Cgog
IE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzgyX2NvbXBhcmVfX29wMU5vdElu
dFJlYWR5KQogICAgcjAuaSA9IHIwLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMC5kID0gcjAu
Y2FzdFRvRG91YmxlOwogICAgaWYgKGlzbmFuKGQwLmQpIHx8IGlzbmFuKGQxLmQpCiAgICAgICAg
fHwgKGQwLmQgPD0gZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84Ml9jb21wYXJlX19q
dW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAg
ICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hf
T1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzgyX2NvbXBh
cmVfX29wMk5vdEludCkKICAgIGQwLmQgPSByMC5pMzI7CiAgICBpZiAoKHIxLmkgJiB0YWdUeXBl
TnVtYmVyLmkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84Ml9jb21wYXJlX19zbG93
OwogICAgcjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMS5kID0gcjEuY2FzdFRv
RG91YmxlOwogICAgaWYgKGlzbmFuKGQwLmQpIHx8IGlzbmFuKGQxLmQpCiAgICAgICAgfHwgKGQw
LmQgPD0gZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84Ml9jb21wYXJlX19qdW1wVGFy
Z2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzgyX2NvbXBhcmVfX2p1
bXBUYXJnZXQpCiAgICByUEMuaTMyID0gclBDLmkzMiArICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxOCkpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84Ml9jb21wYXJlX19zbG93KQogICAg
clBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMu
aTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX2puZ3Jl
YXRlcihleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmlu
c3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0
cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQ
Qy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQ
Qy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRC
eXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbG9vcF9p
Zl9sZXNzZXEpCiAgICAvLyBub3AKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9qbGVzc2Vx
KQogICAgcjIuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHg4KSk7CiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDEwKSk7CiAgICBpZiAocjIuaSA+PSBpbnRw
dHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzgzX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90
Kj4oZnAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2Zm
bGluZWFzbV9jb21wYXJlX184M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX184M19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19jb25zdGFudCkKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAt
IDgpOwogICAgcjAuaSA9ICpDQVNUPGludHB0cl90Kj4ocjAuaThwICsgOTM2KTsKICAgIHIyLmkg
PSByMi5pIC0gaW50cHRyX3QoMHg0MDAwMDAwMCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzgzX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmUpCiAgICBpZiAocjQuaSA+PSBpbnRwdHJfdCgweDQwMDAwMDAwKSkKICAgICAgICBn
b3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzg0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50OwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwICsgKHI0LmkzMiA8PCAzKSAr
IGludHB0cl90KDB4MCkpOwogICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX184NF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGlu
ZWFzbV9jb21wYXJlX184NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkKICAgIHIx
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgcjEuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjEuaThwICsgOTM2KTsKICAgIHI0LmkgPSByNC5pIC0gaW50cHRyX3QoMHg0MDAwMDAw
MCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyAocjQuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2Nv
bXBhcmVfXzg0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpCiAgICBpZiAocjAudSA8IHRh
Z1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzg0X2NvbXBhcmVfX29wMU5v
dEludDsKICAgIGlmIChyMS51IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fODRfY29tcGFyZV9fb3AyTm90SW50OwogICAgaWYgKHIwLmkzMiA8PSByMS5pMzIpCiAg
ICAgICAgZ290byBfb2ZmbGluZWFzbV84NF9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkg
PSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
YyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVf
QVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzg0X2NvbXBhcmVfX29wMU5vdEludCkKICAgIGlm
ICgocjAuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNt
Xzg0X2NvbXBhcmVfX3Nsb3c7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAg
ICBnb3RvIF9vZmZsaW5lYXNtXzg0X2NvbXBhcmVfX29wMU5vdEludE9wMk5vdEludDsKICAgIGQx
LmQgPSByMS5pMzI7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzg0X2NvbXBhcmVfX29wMU5vdEludFJl
YWR5OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84NF9jb21wYXJlX19v
cDFOb3RJbnRPcDJOb3RJbnQpCiAgICBpZiAoKHIxLmkgJiB0YWdUeXBlTnVtYmVyLmkpID09IDAp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84NF9jb21wYXJlX19zbG93OwogICAgcjEuaSA9IHIx
LmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMS5kID0gcjEuY2FzdFRvRG91YmxlOwoKICBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84NF9jb21wYXJlX19vcDFOb3RJbnRSZWFk
eSkKICAgIHIwLmkgPSByMC5pICsgdGFnVHlwZU51bWJlci5pOwogICAgZDAuZCA9IHIwLmNhc3RU
b0RvdWJsZTsKICAgIGlmIChkMC5kIDw9IGQxLmQpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84
NF9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRC
eXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsg
KHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtXzg0X2NvbXBhcmVfX29wMk5vdEludCkKICAgIGQwLmQgPSByMC5pMzI7CiAgICBpZiAoKHIx
LmkgJiB0YWdUeXBlTnVtYmVyLmkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84NF9j
b21wYXJlX19zbG93OwogICAgcjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMS5k
ID0gcjEuY2FzdFRvRG91YmxlOwogICAgaWYgKGQwLmQgPD0gZDEuZCkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtXzg0X2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50
cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXpl
b2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJh
c2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQg
Ynl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fODRfY29tcGFyZV9fanVtcFRhcmdldCkKICAgIHJQQy5pMzIgPSByUEMu
aTMyICsgKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDE4KSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtXzg0X2NvbXBhcmVfX3Nsb3cpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBD
LmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9
IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQgPSBsbGludF9zbG93X3BhdGhfamxlc3NlcShleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6
OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAg
fQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkg
LSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3Bfam5sZXNzZXEpCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+
KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHI0Lmkg
PSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90
KDB4MTApKTsKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdv
dG8gX29mZmxpbmVhc21fY29tcGFyZV9fODVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQ7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsg
aW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzg1X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5l
YXNtX2NvbXBhcmVfXzg1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjAu
aSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAw
KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29t
cGFyZV9fODVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyNC5pID49IGlu
dHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fODZf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzg2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9G
RkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzg2X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThw
IC0gOCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwogICAgcjQu
aSA9IHI0LmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJf
dCo+KHIxLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9B
U01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fODZfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZSkKICAgIGlmIChyMC51IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fODZfY29tcGFyZV9fb3AxTm90SW50OwogICAgaWYgKHIxLnUgPCB0YWdUeXBl
TnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84Nl9jb21wYXJlX19vcDJOb3RJbnQ7
CiAgICBpZiAocjAuaTMyID4gcjEuaTMyKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fODZfY29t
cGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNv
ZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84
Nl9jb21wYXJlX19vcDFOb3RJbnQpCiAgICBpZiAoKHIwLmkgJiB0YWdUeXBlTnVtYmVyLmkpID09
IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84Nl9jb21wYXJlX19zbG93OwogICAgaWYgKHIx
LnUgPCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84Nl9jb21wYXJl
X19vcDFOb3RJbnRPcDJOb3RJbnQ7CiAgICBkMS5kID0gcjEuaTMyOwogICAgZ290byBfb2ZmbGlu
ZWFzbV84Nl9jb21wYXJlX19vcDFOb3RJbnRSZWFkeTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFC
RUwoX29mZmxpbmVhc21fODZfY29tcGFyZV9fb3AxTm90SW50T3AyTm90SW50KQogICAgaWYgKChy
MS5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fODZf
Y29tcGFyZV9fc2xvdzsKICAgIHIxLmkgPSByMS5pICsgdGFnVHlwZU51bWJlci5pOwogICAgZDEu
ZCA9IHIxLmNhc3RUb0RvdWJsZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVh
c21fODZfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpCiAgICByMC5pID0gcjAuaSArIHRhZ1R5cGVO
dW1iZXIuaTsKICAgIGQwLmQgPSByMC5jYXN0VG9Eb3VibGU7CiAgICBpZiAoaXNuYW4oZDAuZCkg
fHwgaXNuYW4oZDEuZCkKICAgICAgICB8fCAoZDAuZCA+IGQxLmQpKQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fODZfY29tcGFyZV9fanVtcFRhcmdldDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRw
dHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVv
ZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJF
TChfb2ZmbGluZWFzbV84Nl9jb21wYXJlX19vcDJOb3RJbnQpCiAgICBkMC5kID0gcjAuaTMyOwog
ICAgaWYgKChyMS5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAwKQogICAgICAgIGdvdG8gX29mZmxp
bmVhc21fODZfY29tcGFyZV9fc2xvdzsKICAgIHIxLmkgPSByMS5pICsgdGFnVHlwZU51bWJlci5p
OwogICAgZDEuZCA9IHIxLmNhc3RUb0RvdWJsZTsKICAgIGlmIChpc25hbihkMC5kKSB8fCBpc25h
bihkMS5kKQogICAgICAgIHx8IChkMC5kID4gZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFz
bV84Nl9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4
NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJl
bnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZs
aW5lYXNtXzg2X2NvbXBhcmVfX2p1bXBUYXJnZXQpCiAgICByUEMuaTMyID0gclBDLmkzMiArICpD
QVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgx
OCkpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMu
aTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJ
U1BBVENIX09QQ09ERSgpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84
Nl9jb21wYXJlX19zbG93KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMp
OwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBD
QVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPElu
c3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0g
bGxpbnRfc2xvd19wYXRoX2pubGVzc2VxKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2Rl
UmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICBy
UEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVj
U3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNl
UEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQ
Qy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09Q
Q09ERV9MQUJFTChvcF9sb29wX2lmX2dyZWF0ZXJlcSkKICAgIC8vIG5vcAoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX2pncmVhdGVyZXEpCiAgICByMi5pID0gKkNBU1Q8aW50MzJfdCo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDgpKTsKICAgIHI0LmkgPSAq
Q0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MTApKTsKICAgIGlmIChyMi5pID49IGludHB0cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8g
X29mZmxpbmVhc21fY29tcGFyZV9fODdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7
CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgKyAocjIuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZsaW5lYXNtX2NvbXBhcmVfXzg3X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzg3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KQogICAgcjAuaSA9
ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3Qq
PihyMC5pOHAgKyA5MzYpOwogICAgcjIuaSA9IHIyLmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsK
ICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRw
dHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFy
ZV9fODdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkKICAgIGlmIChyNC5pID49IGludHB0
cl90KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fODhfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3Qq
PihmcC5pOHAgKyAocjQuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7CiAgICBnb3RvIF9vZmZs
aW5lYXNtX2NvbXBhcmVfXzg4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzg4X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50KQogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0g
OCk7CiAgICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihyMS5pOHAgKyA5MzYpOwogICAgcjQuaSA9
IHI0LmkgLSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIxLmk4cCArIChyNC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01f
TE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fODhfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZSkKICAgIGlmIChyMC51IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29m
ZmxpbmVhc21fODhfY29tcGFyZV9fb3AxTm90SW50OwogICAgaWYgKHIxLnUgPCB0YWdUeXBlTnVt
YmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV84OF9jb21wYXJlX19vcDJOb3RJbnQ7CiAg
ICBpZiAocjAuaTMyID49IHIxLmkzMikKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzg4X2NvbXBh
cmVfX2p1bXBUYXJnZXQ7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2Rl
KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkz
MiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQ
QVRDSF9PUENPREUoKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fODhf
Y29tcGFyZV9fb3AxTm90SW50KQogICAgaWYgKChyMC5pICYgdGFnVHlwZU51bWJlci5pKSA9PSAw
KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fODhfY29tcGFyZV9fc2xvdzsKICAgIGlmIChyMS51
IDwgdGFnVHlwZU51bWJlci51KQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fODhfY29tcGFyZV9f
b3AxTm90SW50T3AyTm90SW50OwogICAgZDEuZCA9IHIxLmkzMjsKICAgIGdvdG8gX29mZmxpbmVh
c21fODhfY29tcGFyZV9fb3AxTm90SW50UmVhZHk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVM
KF9vZmZsaW5lYXNtXzg4X2NvbXBhcmVfX29wMU5vdEludE9wMk5vdEludCkKICAgIGlmICgocjEu
aSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzg4X2Nv
bXBhcmVfX3Nsb3c7CiAgICByMS5pID0gcjEuaSArIHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQxLmQg
PSByMS5jYXN0VG9Eb3VibGU7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNt
Xzg4X2NvbXBhcmVfX29wMU5vdEludFJlYWR5KQogICAgcjAuaSA9IHIwLmkgKyB0YWdUeXBlTnVt
YmVyLmk7CiAgICBkMC5kID0gcjAuY2FzdFRvRG91YmxlOwogICAgaWYgKGQwLmQgPj0gZDEuZCkK
ICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzg4X2NvbXBhcmVfX2p1bXBUYXJnZXQ7CiAgICByUEMu
aSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExM
SW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkp
OyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fODhfY29tcGFyZV9fb3AyTm90SW50KQogICAg
ZDAuZCA9IHIwLmkzMjsKICAgIGlmICgocjEuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzg4X2NvbXBhcmVfX3Nsb3c7CiAgICByMS5pID0gcjEuaSAr
IHRhZ1R5cGVOdW1iZXIuaTsKICAgIGQxLmQgPSByMS5jYXN0VG9Eb3VibGU7CiAgICBpZiAoZDAu
ZCA+PSBkMS5kKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fODhfY29tcGFyZV9fanVtcFRhcmdl
dDsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV84OF9jb21wYXJlX19qdW1w
VGFyZ2V0KQogICAgclBDLmkzMiA9IHJQQy5pMzIgKyAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MTgpKTsKICAgIG9wY29kZSA9ICpDQVNU
PExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4
MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCiAgT0ZG
TElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fODhfY29tcGFyZV9fc2xvdykKICAgIHJQ
Qy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7
CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7
CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAg
ICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9qZ3JlYXRl
cmVxKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5z
dHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3Ry
dWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICByQmFzZVBD
LmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51ID0gclBD
LnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHgwKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5
dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAo
clBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9qbmdyZWF0
ZXJlcSkKICAgIHIyLmkgPSAqQ0FTVDxpbnQzMl90Kj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4OCkpOwogICAgcjQuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgxMCkpOwogICAgaWYgKHIyLmkgPj0g
aW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX184
OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHIwLmkgPSAqQ0FTVDxpbnRw
dHJfdCo+KGZwLmk4cCArIChyMi5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8g
X29mZmxpbmVhc21fY29tcGFyZV9fODlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAg
T0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fY29tcGFyZV9fODlfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5p
OHAgLSA4KTsKICAgIHIwLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCArIDkzNik7CiAgICBy
Mi5pID0gcjIuaSAtIGludHB0cl90KDB4NDAwMDAwMDApOwogICAgcjAuaSA9ICpDQVNUPGludHB0
cl90Kj4ocjAuaThwICsgKHIyLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5F
X0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9jb21wYXJlX184OV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lKQogICAgaWYgKHI0LmkgPj0gaW50cHRyX3QoMHg0MDAwMDAwMCkpCiAgICAg
ICAgZ290byBfb2ZmbGluZWFzbV9jb21wYXJlX185MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCArIChyNC5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fY29tcGFyZV9fOTBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29m
ZmxpbmVhc21fY29tcGFyZV9fOTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpCiAg
ICByMS5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHIxLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KHIxLmk4cCArIDkzNik7CiAgICByNC5pID0gcjQuaSAtIGludHB0cl90KDB4NDAw
MDAwMDApOwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4ocjEuaThwICsgKHI0LmkzMiA8PCAz
KSArIGludHB0cl90KDB4MCkpOwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFz
bV9jb21wYXJlX185MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAgaWYgKHIwLnUg
PCB0YWdUeXBlTnVtYmVyLnUpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85MF9jb21wYXJlX19v
cDFOb3RJbnQ7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAgICAgICBnb3RvIF9v
ZmZsaW5lYXNtXzkwX2NvbXBhcmVfX29wMk5vdEludDsKICAgIGlmIChyMC5pMzIgPCByMS5pMzIp
CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85MF9jb21wYXJlX19qdW1wVGFyZ2V0OwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzkwX2NvbXBhcmVfX29wMU5vdEludCkKICAg
IGlmICgocjAuaSAmIHRhZ1R5cGVOdW1iZXIuaSkgPT0gMCkKICAgICAgICBnb3RvIF9vZmZsaW5l
YXNtXzkwX2NvbXBhcmVfX3Nsb3c7CiAgICBpZiAocjEudSA8IHRhZ1R5cGVOdW1iZXIudSkKICAg
ICAgICBnb3RvIF9vZmZsaW5lYXNtXzkwX2NvbXBhcmVfX29wMU5vdEludE9wMk5vdEludDsKICAg
IGQxLmQgPSByMS5pMzI7CiAgICBnb3RvIF9vZmZsaW5lYXNtXzkwX2NvbXBhcmVfX29wMU5vdElu
dFJlYWR5OwoKICBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV85MF9jb21wYXJl
X19vcDFOb3RJbnRPcDJOb3RJbnQpCiAgICBpZiAoKHIxLmkgJiB0YWdUeXBlTnVtYmVyLmkpID09
IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85MF9jb21wYXJlX19zbG93OwogICAgcjEuaSA9
IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMS5kID0gcjEuY2FzdFRvRG91YmxlOwoKICBP
RkZMSU5FX0FTTV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV85MF9jb21wYXJlX19vcDFOb3RJbnRS
ZWFkeSkKICAgIHIwLmkgPSByMC5pICsgdGFnVHlwZU51bWJlci5pOwogICAgZDAuZCA9IHIwLmNh
c3RUb0RvdWJsZTsKICAgIGlmIChpc25hbihkMC5kKSB8fCBpc25hbihkMS5kKQogICAgICAgIHx8
IChkMC5kIDwgZDEuZCkpCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85MF9jb21wYXJlX19qdW1w
VGFyZ2V0OwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBv
cGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BD
T0RFKCk7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzkwX2NvbXBhcmVf
X29wMk5vdEludCkKICAgIGQwLmQgPSByMC5pMzI7CiAgICBpZiAoKHIxLmkgJiB0YWdUeXBlTnVt
YmVyLmkpID09IDApCiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85MF9jb21wYXJlX19zbG93Owog
ICAgcjEuaSA9IHIxLmkgKyB0YWdUeXBlTnVtYmVyLmk7CiAgICBkMS5kID0gcjEuY2FzdFRvRG91
YmxlOwogICAgaWYgKGlzbmFuKGQwLmQpIHx8IGlzbmFuKGQxLmQpCiAgICAgICAgfHwgKGQwLmQg
PCBkMS5kKSkKICAgICAgICBnb3RvIF9vZmZsaW5lYXNtXzkwX2NvbXBhcmVfX2p1bXBUYXJnZXQ7
CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3QoMHg0KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9
ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0
cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsK
CiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwoX29mZmxpbmVhc21fOTBfY29tcGFyZV9fanVtcFRh
cmdldCkKICAgIHJQQy5pMzIgPSByUEMuaTMyICsgKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThw
ICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDE4KSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgogIE9GRkxJ
TkVfQVNNX0xPQ0FMX0xBQkVMKF9vZmZsaW5lYXNtXzkwX2NvbXBhcmVfX3Nsb3cpCiAgICByUEMu
aThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwog
ICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwog
ICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAg
ICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfam5ncmVhdGVy
ZXEoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0
cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1
Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMu
aSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMu
dSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDApOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0
ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChy
UEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAg
IERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2xvb3BfaGlu
dCkKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2Rl
ID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50
cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgp
OwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3N3aXRjaF9zdHJpbmcpCiAgICByUEMuaThw
ID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAg
ewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAg
ICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAg
IFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfc3dpdGNoX3N0cmlu
ZyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3Ry
dWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVj
dGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5p
ID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51
ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4MCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRl
Y29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQ
Qy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAg
RElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfbmV3X2Z1bmNf
ZXhwKQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9
IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0
ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4o
clBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19w
YXRoX25ld19mdW5jX2V4cChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChy
ZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSBy
MC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9
IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQx
PgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAg
ICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgovLyBieXRlY29kZTogY2FsbCBmdW5j
KHIpIGFyZ0NvdW50KG4pIHJlZ2lzdGVyT2Zmc2V0KG4pCi8vIAovLyAgIFBlcmZvcm0gYSBmdW5j
dGlvbiBjYWxsLgovLyAgICAgICAgICAgCi8vICAgcmVnaXN0ZXJPZmZzZXQgaXMgdGhlIGRpc3Rh
bmNlIHRoZSBjYWxsRnJhbWUgcG9pbnRlciBzaG91bGQgbW92ZQovLyAgIGJlZm9yZSB0aGUgVk0g
aW5pdGlhbGl6ZXMgdGhlIG5ldyBjYWxsIGZyYW1lJ3MgaGVhZGVyLgovLyAgICAgICAgICAgCi8v
ICAgZHN0IGlzIHdoZXJlIG9wX3JldCBzaG91bGQgc3RvcmUgaXRzIHJlc3VsdC4KCk9GRkxJTkVf
QVNNX09QQ09ERV9MQUJFTChvcF9jYWxsKQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFz
ZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7IC8vIGZ1bmNJZDx0MD4g
PSBwY1sxXTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5p
MzIgPDwgMykgKyBpbnRwdHJfdCgweDIwKSk7IC8vIGNhbGxMaW5rSW5mbzx0MT4gPSBwY1s0XTsK
ICAgIHIyLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDE2KTsgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2FsbGVlPHQyPiA9IGNhbGxMaW5rSW5mbzx0MT4uY2FsbGVlOwogICAgLy8gbG9h
ZChmdW5jSWQ8dDA+ID09PiBmdW5jPHQzPiwgLi4uKTsKICAgIGlmIChyMC5pID49IGludHB0cl90
KDB4NDAwMDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZG9DYWxsX185MV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudDsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZw
Lmk4cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVh
c21fZG9DYWxsX185MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FT
TV9MT0NBTF9MQUJFTChfb2ZmbGluZWFzbV9kb0NhbGxfXzkxX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KQogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAg
ICByNC5pID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkg
LSBpbnRwdHJfdCgweDQwMDAwMDAwKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4
cCArIChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxf
TEFCRUwoX29mZmxpbmVhc21fZG9DYWxsX185MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
KQogICAgaWYgKHI0LmkgIT0gcjIuaSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAoZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNvZGUoKT8p
IGdvdG8gLnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3c7
CiAgICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykg
KyBpbnRwdHJfdCgweDE4KSk7CiAgICByUEMuaTMyID0gclBDLmkzMiArIGludDMyX3QoMHg2KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvaW50IFBDIHRvIHRoZSByZXR1cm4gYWRkcmVz
cy4KICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNl
dCA9IHNpemVvZiBjdXJyZW50IGZyYW1lOwogICAgcjQuaTMyID0gcjQuaTMyIDw8IGludDMyX3Qo
MHgzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDM+ID0gb2Zmc2V0PHQz
PiA8PCAzOwogICAgcjQuaSA9IHI0LmkgKyBmcC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4gPSBvZmZzZXRNdDM+ICsgY2ZyOwogICAgLy8g
SW5pdGlhbGl6ZSB0aGUgbmV3RnJhbWU6CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5p
OHAgKyAzMik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNhbGxlZTx0Mj4u
c2NvcGVDaGFpbjsKICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwIC0gMzIpID0gcjIuaTsgICAg
ICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZSA9IGNhbGxlZTx0Mj47CiAg
ICAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCAtIDI0KSA9IHIwLmk7ICAgICAgICAgICAgICAgICAg
ICAgIC8vIG5ld0ZyYW1lPHQwPi5TY29wZUNoYWluID0gc2NvcGU8dDA+OwogICAgcjIuaSA9ICpD
QVNUPGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoLTMy
KSk7IC8vIG51bUFyZ3M8dDI+ID0gLi4uOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAtIDQ0
KSA9IHJQQy5pMzI7ICAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcg
PSBwYzsgLy8gU3Rhc2ggdGhlIHJldHVybiBQQy4KICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThw
IC0gNDApID0gZnAuaTsgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxl
ckZyYW1lID0gY2ZyOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCAtIDQ4KSA9IHIyLmkzMjsg
ICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQXJndW1lbnRDb3VudC5QYXlsb2Fk
ID0gbnVtQXJnczx0Mj47CiAgICBmcC5pID0gcjQuaTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKICAgIC8vIENhbGwg
dGhlIHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0aG9kOgogICAgLy8gY2FsbFRhcmdl
dEZ1bmN0aW9uKGNhbGxMaW5rSW5mbzx0MT4pOwogICAgb3Bjb2RlID0gTExJbnRPcGNvZGUoKkNB
U1Q8aW50cHRyX3QqPihyMS5pOHAgKyAzMikpOyAgICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5t
YWNoaW5lQ29kZVRhcmdldDsKICAgIGdvdG8gZG9DYWxsSGVscGVyOwoKICBPRkZMSU5FX0FTTV9M
T0NBTF9MQUJFTChfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3cpCiAgICByMC5pMzIgPSBy
UEMuaTMyICsgaW50MzJfdCgweDYpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAtIDQ0KSA9
IHIwLmkzMjsKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0
LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVj
U3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlv
bio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Ns
b3dfcGF0aF9jYWxsKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3Vs
dCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICBmcC5pID0gcjEuaTsK
ICAgIG9wY29kZSA9IExMSW50T3Bjb2RlKHIwLmkpOwogICAgZ290byBkb0NhbGxIZWxwZXI7CiAg
ICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBmcm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBn
byB0aGVyZToKICAgIC8vIHBjID0gY2ZyLkFyZ3VtZW50Q291bnQuVGFnOyAgZ290byAqcGM7CiAg
ICByUEMuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDQpOwogICAgckJhc2VQQy5pID0g
KkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHJCYXNlUEMuaSA9ICpDQVNUPGludHB0
cl90Kj4ockJhc2VQQy5pOHAgKyA4OCk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+
KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVf
TEFCRUwob3BfY29uc3RydWN0KQogICAgcjAuaSA9ICpDQVNUPGludDMyX3QqPihyQmFzZVBDLmk4
cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHg4KSk7IC8vIGZ1bmNJZDx0MD4gPSBwY1sx
XTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwg
MykgKyBpbnRwdHJfdCgweDIwKSk7IC8vIGNhbGxMaW5rSW5mbzx0MT4gPSBwY1s0XTsKICAgIHIy
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDE2KTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2FsbGVlPHQyPiA9IGNhbGxMaW5rSW5mbzx0MT4uY2FsbGVlOwogICAgLy8gbG9hZChmdW5j
SWQ8dDA+ID09PiBmdW5jPHQzPiwgLi4uKTsKICAgIGlmIChyMC5pID49IGludHB0cl90KDB4NDAw
MDAwMDApKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fZG9DYWxsX185Ml9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19jb25zdGFudDsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAr
IChyMC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKICAgIGdvdG8gX29mZmxpbmVhc21fZG9D
YWxsX185Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV9kb0NhbGxfXzkyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50KQogICAgcjQuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByNC5p
ID0gKkNBU1Q8aW50cHRyX3QqPihyNC5pOHAgKyA5MzYpOwogICAgcjAuaSA9IHIwLmkgLSBpbnRw
dHJfdCgweDQwMDAwMDAwKTsKICAgIHI0LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIChy
MC5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsKCiAgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwo
X29mZmxpbmVhc21fZG9DYWxsX185Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKQogICAg
aWYgKHI0LmkgIT0gcjIuaSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpZiAoZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNvZGUoKT8pIGdvdG8g
LnNsb3c7CiAgICAgICAgZ290byBfb2ZmbGluZWFzbV85Ml9kb0NhbGxfX29wQ2FsbFNsb3c7CiAg
ICByNC5pID0gKkNBU1Q8aW50MzJfdCo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDE4KSk7CiAgICByUEMuaTMyID0gclBDLmkzMiArIGludDMyX3QoMHg2KTsgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFBvaW50IFBDIHRvIHRoZSByZXR1cm4gYWRkcmVzcy4K
ICAgIC8vIG5ld0ZyYW1lPHQzPiA9IGNmciArIG9mZnNldDx0Mz4gPDwgMzsgIC8vIG9mZnNldCA9
IHNpemVvZiBjdXJyZW50IGZyYW1lOwogICAgcjQuaTMyID0gcjQuaTMyIDw8IGludDMyX3QoMHgz
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQ8dDM+ID0gb2Zmc2V0PHQzPiA8
PCAzOwogICAgcjQuaSA9IHI0LmkgKyBmcC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4gPSBvZmZzZXRNdDM+ICsgY2ZyOwogICAgLy8gSW5p
dGlhbGl6ZSB0aGUgbmV3RnJhbWU6CiAgICByMC5pID0gKkNBU1Q8aW50cHRyX3QqPihyMi5pOHAg
KyAzMik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQwPiA9IGNhbGxlZTx0Mj4uc2Nv
cGVDaGFpbjsKICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwIC0gMzIpID0gcjIuaTsgICAgICAg
ICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZSA9IGNhbGxlZTx0Mj47CiAgICAq
Q0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCAtIDI0KSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAg
IC8vIG5ld0ZyYW1lPHQwPi5TY29wZUNoYWluID0gc2NvcGU8dDA+OwogICAgcjIuaSA9ICpDQVNU
PGludDMyX3QqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoLTMyKSk7
IC8vIG51bUFyZ3M8dDI+ID0gLi4uOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAtIDQ0KSA9
IHJQQy5pMzI7ICAgICAgICAgICAgICAgICAgICAvLyBjZnIuQXJndW1lbnRDb3VudC5UYWcgPSBw
YzsgLy8gU3Rhc2ggdGhlIHJldHVybiBQQy4KICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwIC0g
NDApID0gZnAuaTsgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlckZy
YW1lID0gY2ZyOwogICAgKkNBU1Q8aW50MzJfdCo+KHI0Lmk4cCAtIDQ4KSA9IHIyLmkzMjsgICAg
ICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uQXJndW1lbnRDb3VudC5QYXlsb2FkID0g
bnVtQXJnczx0Mj47CiAgICBmcC5pID0gcjQuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IG5ld0ZyYW1lPHQzPjsKICAgIC8vIENhbGwgdGhl
IHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0aG9kOgogICAgLy8gY2FsbFRhcmdldEZ1
bmN0aW9uKGNhbGxMaW5rSW5mbzx0MT4pOwogICAgb3Bjb2RlID0gTExJbnRPcGNvZGUoKkNBU1Q8
aW50cHRyX3QqPihyMS5pOHAgKyAzMikpOyAgICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5tYWNo
aW5lQ29kZVRhcmdldDsKICAgIGdvdG8gZG9DYWxsSGVscGVyOwoKICBPRkZMSU5FX0FTTV9MT0NB
TF9MQUJFTChfb2ZmbGluZWFzbV85Ml9kb0NhbGxfX29wQ2FsbFNsb3cpCiAgICByMC5pMzIgPSBy
UEMuaTMyICsgaW50MzJfdCgweDYpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAtIDQ0KSA9
IHIwLmkzMjsKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0
LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVj
U3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlv
bio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Ns
b3dfcGF0aF9jb25zdHJ1Y3QoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQo
cmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIGZwLmkgPSBy
MS5pOwogICAgb3Bjb2RlID0gTExJbnRPcGNvZGUocjAuaSk7CiAgICBnb3RvIGRvQ2FsbEhlbHBl
cjsKICAgIC8vIFJlbG9hZCB0aGUgcmV0dXJuIFBDIGZyb20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwg
YW5kIGdvIHRoZXJlOgogICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpw
YzsKICAgIHJQQy5pID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0NCk7CiAgICByQmFzZVBD
LmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgckJhc2VQQy5pID0gKkNBU1Q8
aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIDg4KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bj
b2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09Q
Q09ERV9MQUJFTChvcF9jYWxsX3ZhcmFyZ3MpCiAgICByMC5pMzIgPSByUEMuaTMyICsgaW50MzJf
dCgweDYpOwogICAgKkNBU1Q8aW50MzJfdCo+KGZwLmk4cCAtIDQ0KSA9IHIwLmkzMjsKICAgIHJQ
Qy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7
CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7
CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAg
ICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jYWxsX3Zh
cmFyZ3MoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5p
bnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIGZwLmkgPSByMS5pOwogICAgb3Bj
b2RlID0gTExJbnRPcGNvZGUocjAuaSk7CiAgICBnb3RvIGRvQ2FsbEhlbHBlcjsKICAgIC8vIFJl
bG9hZCB0aGUgcmV0dXJuIFBDIGZyb20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJl
OgogICAgLy8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKICAgIHJQQy5p
ID0gKkNBU1Q8dWludDMyX3QqPihmcC5pOHAgLSA0NCk7CiAgICByQmFzZVBDLmkgPSAqQ0FTVDxp
bnRwdHJfdCo+KGZwLmk4cCAtIDgpOwogICAgckJhc2VQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihy
QmFzZVBDLmk4cCArIDg4KTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQ
Qy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChv
cF9jYWxsX2V2YWwpCiAgICByMC5pMzIgPSByUEMuaTMyICsgaW50MzJfdCgweDQpOwogICAgKkNB
U1Q8aW50MzJfdCo+KGZwLmk4cCAtIDQ0KSA9IHIwLmkzMjsKICAgIHJQQy5pOHAgPSByQmFzZVBD
Lmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAg
RXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1
Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhS
ZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9jYWxsX2V2YWwoZXhlYywgcGMpOwog
ICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhl
Y1N0YXRlKTsKICAgIH0KICAgIGZwLmkgPSByMS5pOwogICAgb3Bjb2RlID0gTExJbnRPcGNvZGUo
cjAuaSk7CiAgICBnb3RvIGRvQ2FsbEhlbHBlcjsKICAgIC8vIFJlbG9hZCB0aGUgcmV0dXJuIFBD
IGZyb20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJlOgogICAgLy8gcGMgPSBjZnIu
QXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKICAgIHJQQy5pID0gKkNBU1Q8dWludDMyX3Qq
PihmcC5pOHAgLSA0NCk7CiAgICByQmFzZVBDLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAt
IDgpOwogICAgckJhc2VQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihyQmFzZVBDLmk4cCArIDg4KTsK
ICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8
PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRD
SF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGxpbnRfZ2VuZXJpY19yZXR1cm5f
cG9pbnQpCiAgICByUEMuaSA9ICpDQVNUPHVpbnQzMl90Kj4oZnAuaThwIC0gNDQpOwogICAgckJh
c2VQQy5pID0gKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KTsKICAgIHJCYXNlUEMuaSA9ICpD
QVNUPGludHB0cl90Kj4ockJhc2VQQy5pOHAgKyA4OCk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTElu
dE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FT
TV9PUENPREVfTEFCRUwob3Bfc3RyY2F0KQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQ
Qy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMg
PSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3N0cmNhdChleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6
OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAg
fQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkg
LSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBD
LmkgPSByUEMuaSArIGludHB0cl90KDB4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxM
TEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDAp
KTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3BfbWV0aG9kX2NoZWNrKQogICAgclBDLmkgPSByUEMuaSArIGlu
dHB0cl90KDB4MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6
ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJC
YXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfZ2V0X3BuYW1lcykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAz
KTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
Q0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJ
bnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9
IGxsaW50X3Nsb3dfcGF0aF9nZXRfcG5hbWVzKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVj
b2RlUmVzdWx0KHJlc3VsdCwgcjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAg
ICByUEMuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5l
eGVjU3RhdGU8dDE+CiAgICByQmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJC
YXNlUEMuaTsKICAgIHJQQy51ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9
IHJQQy5pICsgaW50cHRyX3QoMHgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcGMgKyBzaXplb2YoY3VycmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50
T3Bjb2RlKj4ockJhc2VQQy5pOHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNN
X09QQ09ERV9MQUJFTChvcF9wdXNoX3Njb3BlKQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsg
KHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiog
cGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5
cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3B1c2hfc2NvcGUoZXhlYywgcGMpOwogICAgICAg
IExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRl
KTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0g
cjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9
IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsK
ICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDIpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0g
KkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRy
X3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoK
T0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3BvcF9zY29wZSkKICAgIHJQQy5pOHAgPSByQmFz
ZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3dfcGF0aF9wb3Bfc2NvcGUoZXhlYywgcGMp
OwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEu
ZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAg
ICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAg
ICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRy
X3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDEpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAg
b3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMp
ICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09Q
Q09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX3B1c2hfbmV3X3Njb3BlKQogICAg
clBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5pIDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMu
aTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZw
KTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsK
ICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0ID0gbGxpbnRfc2xvd19wYXRoX3B1c2hf
bmV3X3Njb3BlKGV4ZWMsIHBjKTsKICAgICAgICBMTEludDo6ZGVjb2RlUmVzdWx0KHJlc3VsdCwg
cjAuaW5zdHJ1Y3Rpb24sIHIxLmV4ZWNTdGF0ZSk7CiAgICB9CiAgICByUEMuaSA9IHIwLmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
Lmluc3RydWN0aW9uPHQwPgogICAgZnAuaSA9IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8dDE+CiAgICBy
QmFzZVBDLmkgPSByNC5pOwogICAgclBDLmkgPSByUEMuaSAtIHJCYXNlUEMuaTsKICAgIHJQQy51
ID0gclBDLnUgPj4gdWludHB0cl90KDB4Myk7CiAgICByUEMuaSA9IHJQQy5pICsgaW50cHRyX3Qo
MHg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcGMgKyBzaXplb2YoY3Vy
cmVudEJ5dGVjb2RlKTsKICAgIG9wY29kZSA9ICpDQVNUPExMSW50T3Bjb2RlKj4ockJhc2VQQy5p
OHAgKyAoclBDLmkzMiA8PCAzKSArIGludHB0cl90KDB4MCkpOyAvLyBnb3RvIG5leHQgYnl0ZWNv
ZGU7CiAgICBESVNQQVRDSF9PUENPREUoKTsKCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF90
aHJvdykKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsKICAgIHI0Lmkg
PSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FTVDxFeGVjU3Rh
dGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+
KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxsaW50X3Nsb3df
cGF0aF90aHJvdyhleGVjLCBwYyk7CiAgICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQs
IHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3Vs
dC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAg
ckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMu
dSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90
KDB4Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1
cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMu
aThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bf
dGhyb3dfcmVmZXJlbmNlX2Vycm9yKQogICAgclBDLmk4cCA9IHJCYXNlUEMuaThwICsgKHJQQy5p
IDw8IDMpOwogICAgcjQuaSA9IHJCYXNlUEMuaTsKICAgIHsKICAgICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KGZwLnZwKTsKICAgICAgICBJbnN0cnVjdGlvbiogcGMgPSBD
QVNUPEluc3RydWN0aW9uKj4oclBDLnZwKTsKICAgICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVz
dWx0ID0gbGxpbnRfc2xvd19wYXRoX3Rocm93X3JlZmVyZW5jZV9lcnJvcihleGVjLCBwYyk7CiAg
ICAgICAgTExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVj
U3RhdGUpOwogICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZw
LmkgPSByMS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gcGMgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQ
Qy5pID0gclBDLmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgw
eDMpOwogICAgclBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Mik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNv
ZGUgPSAqQ0FTVDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBp
bnRwdHJfdCgweDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RF
KCk7CgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICBy
UEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5p
OwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnAp
OwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwog
ICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfcHJvZmls
ZV93aWxsX2NhbGwoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNvZGVSZXN1bHQocmVzdWx0
LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAgIHJQQy5pID0gcjAuaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSByZXN1
bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAg
IHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJhc2VQQy5pOwogICAgclBD
LnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIHJQQy5pID0gclBDLmkgKyBpbnRwdHJf
dCgweDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBwYyArIHNpemVvZihj
dXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNBU1Q8TExJbnRPcGNvZGUqPihyQmFzZVBD
Lmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3QoMHgwKSk7IC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9w
X3Byb2ZpbGVfZGlkX2NhbGwpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAgKyAoclBDLmkgPDwg
Myk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9uKiBwYyA9IENBU1Q8
SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQg
PSBsbGludF9zbG93X3BhdGhfcHJvZmlsZV9kaWRfY2FsbChleGVjLCBwYyk7CiAgICAgICAgTExJ
bnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUpOwog
ICAgfQogICAgclBDLmkgPSByMC5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5pbnN0cnVjdGlvbjx0MD4KICAgIGZwLmkgPSByMS5p
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGMgPSBy
ZXN1bHQuZXhlY1N0YXRlPHQxPgogICAgckJhc2VQQy5pID0gcjQuaTsKICAgIHJQQy5pID0gclBD
LmkgLSByQmFzZVBDLmk7CiAgICByUEMudSA9IHJQQy51ID4+IHVpbnRwdHJfdCgweDMpOwogICAg
clBDLmkgPSByUEMuaSArIGludHB0cl90KDB4Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CiAgICBvcGNvZGUgPSAqQ0FT
VDxMTEludE9wY29kZSo+KHJCYXNlUEMuaThwICsgKHJQQy5pMzIgPDwgMykgKyBpbnRwdHJfdCgw
eDApKTsgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogICAgRElTUEFUQ0hfT1BDT0RFKCk7CgpPRkZM
SU5FX0FTTV9PUENPREVfTEFCRUwob3BfZGVidWcpCiAgICByUEMuaThwID0gckJhc2VQQy5pOHAg
KyAoclBDLmkgPDwgMyk7CiAgICByNC5pID0gckJhc2VQQy5pOwogICAgewogICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oZnAudnApOwogICAgICAgIEluc3RydWN0aW9u
KiBwYyA9IENBU1Q8SW5zdHJ1Y3Rpb24qPihyUEMudnApOwogICAgICAgIFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQgPSBsbGludF9zbG93X3BhdGhfZGVidWcoZXhlYywgcGMpOwogICAgICAgIExM
SW50OjpkZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsK
ICAgIH0KICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0g
cmVzdWx0LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQ
Qy5pIC0gckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAg
IHJQQy5pID0gclBDLmkgKyBpbnRwdHJfdCgweDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSBwYyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOwogICAgb3Bjb2RlID0gKkNB
U1Q8TExJbnRPcGNvZGUqPihyQmFzZVBDLmk4cCArIChyUEMuaTMyIDw8IDMpICsgaW50cHRyX3Qo
MHgwKSk7IC8vIGdvdG8gbmV4dCBieXRlY29kZTsKICAgIERJU1BBVENIX09QQ09ERSgpOwoKT0ZG
TElORV9BU01fR0xVRV9MQUJFTChsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKQogICAgKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgLSA4KSA9IGludHB0cl90KDB4MCk7CiAgICByMC5pID0gKkNB
U1Q8aW50cHRyX3QqPihmcC5pOHAgLSA0MCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxl
ckZyYW1lPHQwPiA9IGNmci5DYWxsZXJGcmFtZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+
KHIwLmk4cCAtIDI0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVy
RnJhbWU8dDA+LlNjb3BlQ2hhaW47CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDI0KSA9
IHIxLmk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5TY29wZUNoYWluID0gc2NvcGU8dDE+
OwogICAgLy8gU2V0IGdsb2JhbERhdGEudG9wQ2FsbEZyYW1lID0gY3VycmVudEZyYW1lOwogICAg
cjQuaSA9ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJh
bWUsIGdsb2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0g
aml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThw
ICsgNDM2MCkgPSBmcC5pOyAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9w
Q2FsbEZyYW1lID0gY2ZyOwogICAgcjIuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZlZENhbGxlckZyYW1lPHQyPiA9IGNhbGxlckZy
YW1lPHQwPjsKICAgIC8vIHNhdmVkUmV0dXJuUEM8dDM+ID0gcmV0dXJuUEM7CiAgICByNC5pID0g
clJldFZQQy5pOwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSByNC5pOyAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDM+OwogICAgLy8gUGFzcyBjdXJy
ZW50RnJhbWUgYXMgYW4gYXJnIHRvIHRoZSB0YXJnZXQ6CiAgICByMC5pID0gZnAuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzA6IGFyZzA8dDA+
ID0gY2ZyOwogICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCByMCA9IGN1cnJlbnRGcmFtZSwg
Y2ZyID0gb2xkRnJhbWU6IFdoeT8/PwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThw
IC0gMzIpOyAgICAgICAgICAgICAgICAgICAgICAvLyBqc2Z1bmM8dDE+ID0gY2ZyLkNhbGxlZTsK
ICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDI0KTsgICAgICAgICAgICAgICAg
ICAgICAgLy8gYXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7CiAg
ICBmcC5pID0gcjIuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNmciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OwogICAgbmF0aXZlRnVuYyA9ICpDQVNU
PE5hdGl2ZUZ1bmN0aW9uKj4ocjEuaThwICsgMTA0KTsgICAgICAgICAvLyBjYWxsIGV4ZWN1dGFi
bGU8dDE+LkNhbGxPckNvbnN0cnVjdDsKICAgIGZ1bmN0aW9uUmV0dXJuVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUobmF0aXZlRnVuYyhyMC5leGVjU3RhdGUpKTsKICAgICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgIHIxLmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnRhZygpOwogICAgICAgIHIw
LmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnBheWxvYWQoKTsKICAgICNlbHNlIC8vIFVTRV9KU1ZB
TFVFNjQpCiAgICAgICAgcjAuZW5jb2RlZEpTVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoZnVuY3Rp
b25SZXR1cm5WYWx1ZSk7CiAgICAjZW5kaWYgLy8gVVNFX0pTVkFMVUU2NCkKICAgIC8vIHJldHVy
blBDID0gc2F2ZWRSZXR1cm5QQzx0Mz47CiAgICByUmV0VlBDLmkgPSByNC5pOwogICAgcjQuaSA9
ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGds
b2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3Rh
Y2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCAr
IDEwNzkyKSAhPSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRyYW1wb2xp
bmVfX2V4Y2VwdGlvbjsKICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7CgogIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKF9vZmZsaW5lYXNtX25hdGl2ZUNhbGxUcmFtcG9saW5lX19leGNlcHRpb24pCiAg
ICByMS5pID0gclJldFZQQy5pOwogICAgclBDLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAt
IDQ0KTsKICAgIHJCYXNlUEMuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICBy
QmFzZVBDLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgODgpOwogICAgcjAuaSA9
ICpDQVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGds
b2JhbERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4
cCArIDQzNjApID0gZnAuaTsKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAz
KTsKICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
Q0FTVDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJ
bnN0cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9
IGxsaW50X3Rocm93X2Zyb21fbmF0aXZlX2NhbGwoZXhlYywgcGMpOwogICAgICAgIExMSW50Ojpk
ZWNvZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0K
ICAgIHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0
LmV4ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0g
ckJhc2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIGdvdG8g
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKCk9GRkxJTkVfQVNNX0dMVUVf
TEFCRUwobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lKQogICAgKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA4KSA9IGludHB0cl90KDB4MCk7CiAgICByMC5pID0gKkNBU1Q8aW50cHRy
X3QqPihmcC5pOHAgLSA0MCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlckZyYW1lPHQw
PiA9IGNmci5DYWxsZXJGcmFtZTsKICAgIHIxLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCAt
IDI0KTsgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVyRnJhbWU8dDA+
LlNjb3BlQ2hhaW47CiAgICAqQ0FTVDxpbnRwdHJfdCo+KGZwLmk4cCAtIDI0KSA9IHIxLmk7ICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNmci5TY29wZUNoYWluID0gc2NvcGU8dDE+OwogICAgLy8g
U2V0IGdsb2JhbERhdGEudG9wQ2FsbEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgcjQuaSA9ICpD
QVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2Jh
bERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tG
cmFtZTxzcD4uZ2xvYmFsRGF0YTsKICAgICpDQVNUPGludHB0cl90Kj4ocjQuaThwICsgNDM2MCkg
PSBmcC5pOyAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4udG9wQ2FsbEZyYW1l
ID0gY2ZyOwogICAgcjIuaSA9IHIwLmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzYXZlZENhbGxlckZyYW1lPHQyPiA9IGNhbGxlckZyYW1lPHQwPjsK
ICAgIC8vIHNhdmVkUmV0dXJuUEM8dDM+ID0gcmV0dXJuUEM7CiAgICByNC5pID0gclJldFZQQy5p
OwogICAgKkNBU1Q8aW50cHRyX3QqPihmcC5pOHAgLSAxNikgPSByNC5pOyAgICAgICAgICAgICAg
ICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDM+OwogICAgLy8gUGFzcyBjdXJyZW50RnJhbWUg
YXMgYW4gYXJnIHRvIHRoZSB0YXJnZXQ6CiAgICByMC5pID0gZnAuaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzA6IGFyZzA8dDA+ID0gY2ZyOwog
ICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCByMCA9IGN1cnJlbnRGcmFtZSwgY2ZyID0gb2xk
RnJhbWU6IFdoeT8/PwogICAgcjEuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gMzIpOyAg
ICAgICAgICAgICAgICAgICAgICAvLyBqc2Z1bmM8dDE+ID0gY2ZyLkNhbGxlZTsKICAgIHIxLmkg
PSAqQ0FTVDxpbnRwdHJfdCo+KHIxLmk4cCArIDI0KTsgICAgICAgICAgICAgICAgICAgICAgLy8g
YXJnMTogZXhlY3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7CiAgICBmcC5pID0g
cjIuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
ciA9IHNhdmVkQ2FsbGVyRnJhbWU8dDI+OwogICAgbmF0aXZlRnVuYyA9ICpDQVNUPE5hdGl2ZUZ1
bmN0aW9uKj4ocjEuaThwICsgMTEyKTsgICAgICAgICAvLyBjYWxsIGV4ZWN1dGFibGU8dDE+LkNh
bGxPckNvbnN0cnVjdDsKICAgIGZ1bmN0aW9uUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
bmF0aXZlRnVuYyhyMC5leGVjU3RhdGUpKTsKICAgICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
ICAgIHIxLmkgPSBmdW5jdGlvblJldHVyblZhbHVlLnRhZygpOwogICAgICAgIHIwLmkgPSBmdW5j
dGlvblJldHVyblZhbHVlLnBheWxvYWQoKTsKICAgICNlbHNlIC8vIFVTRV9KU1ZBTFVFNjQpCiAg
ICAgICAgcjAuZW5jb2RlZEpTVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoZnVuY3Rpb25SZXR1cm5W
YWx1ZSk7CiAgICAjZW5kaWYgLy8gVVNFX0pTVkFMVUU2NCkKICAgIC8vIHJldHVyblBDID0gc2F2
ZWRSZXR1cm5QQzx0Mz47CiAgICByUmV0VlBDLmkgPSByNC5pOwogICAgcjQuaSA9ICpDQVNUPGlu
dHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEp
KSwgJnNwLT5nbG9iYWxEYXRhKSk7IC8vIGdsb2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxz
cD4uZ2xvYmFsRGF0YTsKICAgIGlmICgqQ0FTVDxpbnRwdHJfdCo+KHI0Lmk4cCArIDEwNzkyKSAh
PSAwKQogICAgICAgIGdvdG8gX29mZmxpbmVhc21fOTJfbmF0aXZlQ2FsbFRyYW1wb2xpbmVfX2V4
Y2VwdGlvbjsKICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7CgogIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKF9vZmZsaW5lYXNtXzkyX25hdGl2ZUNhbGxUcmFtcG9saW5lX19leGNlcHRpb24pCiAgICBy
MS5pID0gclJldFZQQy5pOwogICAgclBDLmkgPSAqQ0FTVDx1aW50MzJfdCo+KGZwLmk4cCAtIDQ0
KTsKICAgIHJCYXNlUEMuaSA9ICpDQVNUPGludHB0cl90Kj4oZnAuaThwIC0gOCk7CiAgICByQmFz
ZVBDLmkgPSAqQ0FTVDxpbnRwdHJfdCo+KHJCYXNlUEMuaThwICsgODgpOwogICAgcjAuaSA9ICpD
QVNUPGludHB0cl90Kj4oKGFzc2VydCgwID09IG9mZnNldG9mKEpJVFN0YWNrRnJhbWUsIGdsb2Jh
bERhdGEpKSwgJnNwLT5nbG9iYWxEYXRhKSk7CiAgICAqQ0FTVDxpbnRwdHJfdCo+KHIwLmk4cCAr
IDQzNjApID0gZnAuaTsKICAgIHJQQy5pOHAgPSByQmFzZVBDLmk4cCArIChyUEMuaSA8PCAzKTsK
ICAgIHI0LmkgPSByQmFzZVBDLmk7CiAgICB7CiAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gQ0FT
VDxFeGVjU3RhdGUqPihmcC52cCk7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gQ0FTVDxJbnN0
cnVjdGlvbio+KHJQQy52cCk7CiAgICAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IGxs
aW50X3Rocm93X2Zyb21fbmF0aXZlX2NhbGwoZXhlYywgcGMpOwogICAgICAgIExMSW50OjpkZWNv
ZGVSZXN1bHQocmVzdWx0LCByMC5pbnN0cnVjdGlvbiwgcjEuZXhlY1N0YXRlKTsKICAgIH0KICAg
IHJQQy5pID0gcjAuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcGMgPSByZXN1bHQuaW5zdHJ1Y3Rpb248dDA+CiAgICBmcC5pID0gcjEuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0LmV4
ZWNTdGF0ZTx0MT4KICAgIHJCYXNlUEMuaSA9IHI0Lmk7CiAgICByUEMuaSA9IHJQQy5pIC0gckJh
c2VQQy5pOwogICAgclBDLnUgPSByUEMudSA+PiB1aW50cHRyX3QoMHgzKTsKICAgIGdvdG8gbGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKCk9GRkxJTkVfQVNNX09QQ09ERV9M
QUJFTChvcF9nZXRfYXJyYXlfbGVuZ3RoKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFT
SCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0
X2J5X2lkX2NoYWluKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFTSCgpOwogICAgLy8g
fSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5X2lkX2N1c3Rv
bV9jaGFpbikKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5E
IGNyYXNoLgoKT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wX2dldF9ieV9pZF9jdXN0b21fcHJv
dG8pCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFz
aC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGYpCiAg
ICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCk9G
RkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfYnlfaWRfZ2VuZXJpYykKICAgIC8vIG1hY3Jv
IGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKT0ZGTElORV9BU01f
T1BDT0RFX0xBQkVMKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4pCiAgICAvLyBtYWNybyBjcmFz
aCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCk9GRkxJTkVfQVNNX09QQ09E
RV9MQUJFTChvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7
CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBD
UkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3Bf
Z2V0X2J5X2lkX3Byb3RvKQogICAgLy8gbWFjcm8gY3Jhc2goKSB7CiAgICBDUkFTSCgpOwogICAg
Ly8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENPREVfTEFCRUwob3BfZ2V0X2J5X2lkX3Nl
bGYpCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFz
aC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcF9nZXRfc3RyaW5nX2xlbmd0aCkKICAgIC8v
IG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0goKTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wX3B1dF9ieV9pZF9nZW5lcmljKQogICAgLy8gbWFjcm8gY3Jh
c2goKSB7CiAgICBDUkFTSCgpOwogICAgLy8gfSBFTkQgY3Jhc2guCgpPRkZMSU5FX0FTTV9PUENP
REVfTEFCRUwob3BfcHV0X2J5X2lkX3JlcGxhY2UpCiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAg
IENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4KCk9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbikKICAgIC8vIG1hY3JvIGNyYXNoKCkgewogICAgQ1JBU0go
KTsKICAgIC8vIH0gRU5EIGNyYXNoLgoKT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9lbmQp
CiAgICAvLyBtYWNybyBjcmFzaCgpIHsKICAgIENSQVNIKCk7CiAgICAvLyB9IEVORCBjcmFzaC4K
T0ZGTElORV9BU01fRU5ECiNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158852</attachid>
            <date>2012-08-16 10:45:06 -0700</date>
            <delta_ts>2012-09-01 03:55:34 -0700</delta_ts>
            <desc>work in progress 7: more bug fixes.</desc>
            <filename>bug-91052-wop7.patch</filename>
            <type>text/plain</type>
            <size>358617</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
I2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpICYmICFPUyhXSU5DRSkKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2RlZmluZSBXVEZfQ0hBTkdFUyAxCiAKQEAg
LTgxLDMgKzgxLDUgQEAKICNlbHNlCiAjZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19P
Tl9HQ0MgMQogI2VuZGlmCisKKyNkZWZpbmUgbWxhbV9QUklOVEYgMApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwogICAgIFN0b3BX
YXRjaCBzdG9wV2F0Y2g7CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7Ci0gICAgZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZleGNlcHRp
b24pOworICAgIGV2YWx1YXRlX21sYW1Db21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5k
YXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCAmZXhjZXB0aW9uKTsKICAgICBzdG9wV2F0Y2gu
c3RvcCgpOwogCiAgICAgaWYgKCEhZXhjZXB0aW9uKSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYQogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAg
SlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1
ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRpYyBi
b29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAgZ2xvYmFsRGF0YS5zdGFy
dFNhbXBsaW5nKCk7CiAKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2Uoc2NyaXB0
LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICBK
U1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGVfbWxhbUNvbXBsZXRpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3Vy
Y2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwog
ICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICAg
ICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYo
IkVuZDogJXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwpA
QCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVj
dCoKICAgICAgICAgaWYgKGxpbmVbMF0pCiAgICAgICAgICAgICBhZGRfaGlzdG9yeShsaW5lKTsK
ICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAgICBKU1ZhbHVlIHJl
dHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9i
amVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc2NTb3VyY2UobGluZSwgaW50ZXJwcmV0ZXJOYW1l
KSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLCBp
bnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAg
ICAgZnJlZShsaW5lKTsKICNlbHNlCiAgICAgICAgIHByaW50ZigiJXMiLCBpbnRlcmFjdGl2ZVBy
b21wdCk7CkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xv
YmFsT2JqZWN0KgogICAgICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKIAogICAgICAgICBKU1ZhbHVl
IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFs
dWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1
ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUg
PSBldmFsdWF0ZV9tbGFtQ29tcGxldGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50
ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1ZSgpLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAjZW5kaWYK
ICAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBwcmludGYoIkV4
Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lv
biAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpT
Q29udGV4dFJlZgogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVz
dHJpbmcoKSwgc291cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSkpOwogCiAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUg
cmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZSwganNUaGlzT2JqZWN0LCAmZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgc291cmNlLCBqc1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9u
KTsKIAogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRp
b24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2
aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMJKHdvcmtpbmcgY29weSkKQEAgLTEwMzIsNiArMTAzMiwxMyBAQCBzdGF0aWMgdm9pZCBjaGVj
a0NvbnN0bmVzc0luSlNPYmplY3ROYW1lCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCiB7CisgICAgLy8gbWxhbSBCRUdJTgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsg
aSsrKSB7CisgICAgICAgIHByaW50ZigiICVzIiwgYXJndltpXSk7CisgICAgfQorICAgIHByaW50
ZigiXG4iKTsKKyAgICAvLyBtbGFtIEVORAorCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBDeWd3
aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyksIHdoaWNoIHdl
IHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCiAgICAgLy8gdGVzdGluZy9kZWJ1Z2dpbmcs
IGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgbm90IHRvIGJlIGludm9rZWQu
IFdlIHJlc2V0IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDkgQEAKIAkJ
RTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3
MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwogCQlFNDlEQzE2QzEy
RUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTExMkVGMjcyMjAwMTg0QTFGIC8q
IFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNEEz
MzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyog
Vk1JbnNwZWN0b3IuY3BwICovOyB9OworCQlGRTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1J
bnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovOyB9OworCQlGRTdF
Rjg5QTE1REE0NEM4MDA0Q0NBNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFN0VGODk5MTVEQTQ0QzgwMDRDQ0E2MSAvKiBM
TEludE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE0OTcsNiArMTUwMCw5IEBACiAJCUY2OTJBODg1
MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAv
KiBVU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGRTRBMzMxRDE1QkQy
RTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU3RUY4OTkxNURBNDRDODAwNENDQTYxIC8qIExMSW50T3Bjb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T3Bjb2RlLmg7IHBhdGggPSBsbGludC9M
TEludE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2M0FBMjE1OUI5
REEzMDA4OTMyQTYgLyogQ29tbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb21tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTE2MzAsNiArMTYzNiw3IEBACiAJCTBGNDY4MDlDMTRC
QTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJRkU3RUY4OTkxNURBNDRDODAwNENDQTYxIC8qIExMSW50T3Bjb2RlLmgg
Ki8sCiAJCQkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExMSW50RGVzaXJlZE9mZnNldHMu
aCAqLywKIAkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5j
cHAgKi8sCiAJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
aCAqLywKQEAgLTE2OTksNiArMTcwNiw4IEBACiAJCTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAv
KiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLywKKwkJ
CQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLywKIAkJCQkwRjU1
RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYwRjIx
NEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQlBN0Y4NjkwRTBGOTU4NEEx
MDA1NTg2OTcgLyogQ2FjaGVkQ2FsbC5oICovLApAQCAtMjUwMyw2ICsyNTEyLDcgQEAKIAkJCQlC
QzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEMzRTcwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTdFRjg5QTE1REE0NEM4MDA0Q0NBNjEgLyog
TExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5
RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM1MTAxNTZC
REUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNUQnVpbGRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yODY2LDYgKzI4NzYsNyBAQAogCQkJCTBGNzY2RDM5MTVBRTRBMUYwMDhG
MzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjc2NkQ0NDE1QjJBM0MwMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNzY2RDQ2MTVCMzcwMUYwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNEEzMzIwMTVCRDJFMDcwMDZGNTRG
MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0M0YxNUM3NUYxOTAw
NkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0z
NDY0LDYgKzM0NzUsNyBAQAogCQkJCTBGNzY2RDJGMTVBOERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMzQxNUFFMjUzODAw
OEYzNjNFIC8qIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY3NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU0QTMzMUYxNUJEMkUwNzAwNkY1NEYzIC8q
IFZNSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZB
NTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4ZWN1
dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIgLy8gbWxhbQorI2luY2x1
ZGUgIkxMSW50T3Bjb2RlLmgiIC8vIG1sYW0KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMjg5
LDEwICsyOTEsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAor
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjcmVhdGVMTEludENvZGVQdHIoTExJbnRPcGNvZGVJRCBvcGNvZGVJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OkRhdGE6OmdldENv
ZGVQdHIob3Bjb2RlSWQpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgY3JlYXRlTExJbnRDb2RlUHRyKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZv
aWQqPihmdW5jdGlvbikpOwogICAgIH0KKyNlbmRpZgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFs
dWUoKSkKICAgICB7CkBAIC0zNTQsMTEgKzM2MywxNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIC8vIEhlbHBlciBmb3IgY3JlYXRpbmcgc2VsZi1tYW5hZ2VkIGNvZGUgcmVmcyBmcm9tIExM
SW50LgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjcmVhdGVMTEludENvZGVSZWYoTExJbnRPcGNvZGVJRCBvcGNvZGVJZCkKKyAgICB7
CisgICAgICAgIHJldHVybiBjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OkRhdGE6OmdldENvZGVQ
dHIob3Bjb2RlSWQpKSk7CisgICAgfQorI2Vsc2UKICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNyZWF0ZUxMSW50Q29kZVJlZih2b2lkICgqZnVuY3Rpb24pKCkpCiAgICAgewogICAg
ICAgICByZXR1cm4gY3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rp
b24pKSk7CiAgICAgfQotICAgIAorI2VuZGlmCiAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSog
ZXhlY3V0YWJsZU1lbW9yeSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9leGVjdXRh
YmxlTWVtb3J5LmdldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI3LDEzICsyMDI3
LDEzIEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3QKICAgICBwZXJm
b3JtVHJhY2luZ0ZpeHBvaW50SXRlcmF0aW9uKHZpc2l0b3IpOwogfQogCi0jaWYgRU5BQkxFKEpJ
VCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gdHJ1
ZTsKICNlbHNlCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAj
ZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpIHx8IEVO
QUJMRShMTElOVF9DX0xPT1ApCiAgICAgCiB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoKQogewpAQCAtMjU3NiwxOCArMjU3Niw5NCBAQCB2b2lkIENvZGVCbG9jazo6dW5s
aW5rSW5jb21pbmdDYWxscygpCiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigpICE9
IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkt
PnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQorSW5zdHJ1Y3Rpb24q
IENvZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbFNpdGUodW5zaWduZWQgcG90ZW50aWFsUmV0dXJu
UENCeXRlY29kZU9mZnNldCkKK3sKKyAgICBJbnN0cnVjdGlvbiogcG90ZW50aWFsUmV0dXJuUEMg
PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgcG90ZW50aWFsUmV0dXJuUENCeXRlY29kZU9mZnNl
dDsKKyAgICByZXR1cm4gYWRqdXN0UENJZkF0Q2FsbFNpdGUocG90ZW50aWFsUmV0dXJuUEMpOwor
fQorCitJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsU2l0ZShJbnN0cnVj
dGlvbiogcG90ZW50aWFsUmV0dXJuUEMpCit7CisgICAgQVNTRVJUKHBvdGVudGlhbFJldHVyblBD
KTsKKworICAgIHVuc2lnbmVkIHJldHVyblBDT2Zmc2V0ID0gcG90ZW50aWFsUmV0dXJuUEMgLSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIEluc3RydWN0aW9uKiBhZGp1c3RlZFBDOworICAg
IHVuc2lnbmVkIG9wY29kZUxlbmd0aDsKKworICAgIC8vIElmIHdlIGFyZSBhdCBhIGNhbGxzaXRl
LCB0aGUgTExJbnQgc3RvcmVzIHRoZSBQQyBhZnRlciB0aGUgY2FsbAorICAgIC8vIGluc3RydWN0
aW9uIHJhdGhlciB0aGFuIHRoZSBQQyBvZiB0aGUgY2FsbCBpbnN0cnVjdGlvbi4gVGhpcyByZXF1
aXJlcworICAgIC8vIHNvbWUgY29ycmVjdGluZy4gSWYgc28sIHdlIGNhbiByZWx5IG9uIHRoZSBm
YWN0IHRoYXQgdGhlIHByZWNlZGluZworICAgIC8vIGluc3RydWN0aW9uIG11c3QgYmUgb25lIG9m
IHRoZSBjYWxsIGluc3RydWN0aW9ucywgc28gZWl0aGVyIGl0J3MgYQorICAgIC8vIGNhbGxfdmFy
YXJncyBvciBpdCdzIGEgY2FsbCwgY29uc3RydWN0LCBvciBldmFsLgorICAgIC8vCisgICAgLy8g
SWYgd2UgYXJlIG5vdCBhdCBhIGNhbGwgc2l0ZSwgdGhlbiB3ZSBuZWVkIHRvIGd1YXJkIGFnYWlu
c3QgdGhlCisgICAgLy8gcG9zc2liaWxpdHkgb2YgcGVla2luZyBwYXN0IHRoZSBzdGFydCBvZiB0
aGUgYnl0ZWNvZGUgcmFuZ2UgZm9yIHRoaXMKKyAgICAvLyBjb2RlQmxvY2suICBIZW5jZSwgd2Ug
ZG8gYSBib3VuZHMgY2hlY2sgYmVmb3JlIHdlIHBlZWsgYXQgdGhlCisgICAgLy8gcG90ZW50aWFs
ICJwcmVjZWVkaW5nIiBpbnN0cnVjdGlvbi4KKyAgICAvLyAgICAgVGhlIGJvdW5kcyBjaGVjayBp
cyBkb25lIGJ5IGNvbXBhcmluZyB0aGUgb2Zmc2V0IG9mIHRoZSBwb3RlbnRpYWwKKyAgICAvLyBy
ZXR1cm5QQyB3aXRoIHRoZSBsZW5ndGggb2YgdGhlIG9wY29kZS4gIElmIHRoZXJlIGlzIHJvb20g
Zm9yIGEgY2FsbAorICAgIC8vIGluc3RydWN0aW9uIGJlZm9yZSB0aGUgcmV0dXJuUEMsIHRoZW4g
dGhlIG9mZnNldCBvZiB0aGUgcmV0dXJuUEMgbXVzdAorICAgIC8vIGJlIGdyZWF0ZXIgdGhhbiB0
aGUgc2l6ZSBvZiB0aGUgY2FsbCBvcGNvZGUgd2UncmUgbG9va2luZyBmb3IuCisKKyAgICAvLyBU
aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgY2FsbCBpbnN0cnVjdGlvbiBwcmVzZW50IChpZiB3ZSBh
cmUgYXQgYQorICAgIC8vIGNhbGxzaXRlKSBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgYXNzdW1w
dGlvbnMuICBTbywgYXNzZXJ0IHRoYXQKKyAgICAvLyB0aGV5IGFyZSBzdGlsbCB0cnVlOgorICAg
IEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChv
cF9jYWxsKSk7CisgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xF
TkdUSChvcF9jb25zdHJ1Y3QpKTsKKyAgICBBU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9
PSBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworCisgICAgLy8gQ2hlY2sgZm9yIHRoZSBj
YXNlIG9mIGEgcHJlY2VlZGluZyBvcF9jYWxsX3ZhcmFyZ3M6CisgICAgb3Bjb2RlTGVuZ3RoID0g
T1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpOworICAgIGFkanVzdGVkUEMgPSBwb3RlbnRp
YWxSZXR1cm5QQyAtIG9wY29kZUxlbmd0aDsKKyAgICBpZiAoKHJldHVyblBDT2Zmc2V0ID49IG9w
Y29kZUxlbmd0aCkgJiYKKyAgICAgICAgKGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBMTEludDo6
RGF0YTo6Z2V0Q29kZVB0cihvcF9jYWxsX3ZhcmFyZ3MpKSkgeworICAgICAgICByZXR1cm4gYWRq
dXN0ZWRQQzsKKyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgdGhlIGNhc2Ugb2YgdGhlIG90aGVy
IDMgY2FsbCBpbnN0cnVjdGlvbnM6CisgICAgb3Bjb2RlTGVuZ3RoID0gT1BDT0RFX0xFTkdUSChv
cF9jYWxsKTsKKyAgICBhZGp1c3RlZFBDID0gcG90ZW50aWFsUmV0dXJuUEMgLSBvcGNvZGVMZW5n
dGg7CisgICAgaWYgKChyZXR1cm5QQ09mZnNldCA+PSBvcGNvZGVMZW5ndGgpICYmCisgICAgICAg
IChhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2Fs
bCkgfHwKKyAgICAgICAgIGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0
Q29kZVB0cihvcF9jb25zdHJ1Y3QpIHx8CisgICAgICAgICBhZGp1c3RlZFBDLT51LnBvaW50ZXIg
PT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbF9ldmFsKSkpIHsKKyAgICAgICAgcmV0
dXJuIGFkanVzdGVkUEM7CisgICAgfQorICAgIC8vIE5vdCBhIGNhbGwgc2l0ZS4gTm8gbmVlZCB0
byBhZGp1c3QgUEMuIEp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbC4KKyAgICByZXR1cm4gcG90ZW50
aWFsUmV0dXJuUEM7Cit9CiAKIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhl
Y1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAjaWYgRU5B
QkxFKExMSU5UKQotICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfYmVnaW4pCi0gICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisjaWYgRU5BQkxFKEpJVCkKKyAg
ICAvLyBXaGVuIHVzaW5nIHRoZSBKSVQsIHdlIGNvdWxkIGhhdmUgYWRkcmVzc2VzIHRoYXQgYXJl
IG5vdCBieXRlY29kZQorICAgIC8vIGFkZHJlc3Nlcy4gV2UgY2hlY2sgaWYgdGhlIHJldHVybiBh
ZGRyZXNzIGlzIGluIHRoZSBMTGludCBnbHVlIGFuZAorICAgIC8vIG9wY29kZSBoYW5kbGVycyBy
YW5nZSBoZXJlIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBsb29raW5nIGF0IGJ5dGVjb2RlCisgICAg
Ly8gYmVmb3JlIGF0dGVtcHRpbmcgdG8gY29udmVydCB0aGUgcmV0dXJuIGFkZHJlc3MgaW50byBh
IGJ5dGVjb2RlIG9mZnNldC4KKyAgICAvLworICAgIC8vIEluIHRoZSBjYXNlIG9mIHRoZSBDIExv
b3AgTExJbnQsIHRoZSBKSVQgaXMgZGlzYWJsZWQsIGFuZCB0aGUgb25seQorICAgIC8vIHZhbGlk
IHJldHVybiBhZGRyZXNzZXMgc2hvdWxkIGJlIGJ5dGVjb2RlIFBDcy4gIFNvLCB3ZSBjYW4gYW5k
IG5lZWQgdG8KKyAgICAvLyBmb3JlZ28gdGhpcyBjaGVjayBiZWNhdXNlLCB3aGVuIHdlJ3JlIG5v
dCB1c2luZyBDT01QVVRFRF9HT1RPX09QQ09ERVMsCisgICAgLy8gdGhlIGJ5dGVjb2RlICJQQyJz
IGFyZSBhY3R1YWxseSB0aGUgb3Bjb2RlSURzIGFuZCBhcmUgbm90IGJvdW5kZWQgYnkKKyAgICAv
LyBsbGludF9iZWdpbiBhbmQgbGxpbnRfZW5kLgorCisgICAgaWYgKHJldHVybkFkZHJlc3MudmFs
dWUoKSA+PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihsbGludF9iZWdpbikKKyAgICAgICAgJiYg
cmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKGxsaW50X2Vu
ZCkpIAorI2Vsc2UgLy8gIUVOQUJMRShKSVQpCisgICAgVU5VU0VEX1BBUkFNKHJldHVybkFkZHJl
c3MpOworI2VuZGlmIC8vICFFTkFCTEUoSklUKQorICAgIHsKICAgICAgICAgQVNTRVJUKGV4ZWMt
PmNvZGVCbG9jaygpKTsKICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMp
OwogICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7
CiAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsK
ICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uKTsKLSAgICAgICAgCisKKyNpZiAwIC8vIG1sYW0g
UkVQTEFDRUQgICAgICAgIAogICAgICAgICAvLyBUaGUgTExJbnQgc3RvcmVzIHRoZSBQQyBhZnRl
ciB0aGUgY2FsbCBpbnN0cnVjdGlvbiByYXRoZXIgdGhhbiB0aGUgUEMgb2YKICAgICAgICAgLy8g
dGhlIGNhbGwgaW5zdHJ1Y3Rpb24uIFRoaXMgcmVxdWlyZXMgc29tZSBjb3JyZWN0aW5nLiBXZSBy
ZWx5IG9uIHRoZSBmYWN0CiAgICAgICAgIC8vIHRoYXQgdGhlIHByZWNlZGluZyBpbnN0cnVjdGlv
biBtdXN0IGJlIG9uZSBvZiB0aGUgY2FsbCBpbnN0cnVjdGlvbnMsIHNvCkBAIC0yNTk1LDMyICsy
NjcxLDM4IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1MKICAgICAg
ICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA8PSBPUENPREVfTEVOR1RI
KG9wX2NhbGwpKTsKICAgICAgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BD
T0RFX0xFTkdUSChvcF9jb25zdHJ1Y3QpKTsKICAgICAgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgo
b3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKLSAgICAgICAgaWYgKGlu
c3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyldLnUucG9pbnRlciA9PSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfdmFyYXJncykpIHsKKyAgICAgICAgaWYg
KGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyldLnUucG9pbnRlciA9
PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihvcF9jYWxsX3ZhcmFyZ3MpKSB7CiAgICAgICAgICAg
ICAvLyBXZSBrbm93IHRoYXQgdGhlIHByZWNlZGluZyBpbnN0cnVjdGlvbiBtdXN0IGJlIG9wX2Nh
bGxfdmFyYXJncyBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0aGF0CiAgICAgICAgICAgICAvLyB0
aGUgcG9pbnRlciB0byB0aGUgY2FsbF92YXJhcmdzIGNvdWxkIGJlIGFuIG9wZXJhbmQgdG8gdGhl
IGNhbGwuCiAgICAgICAgICAgICBpbnN0cnVjdGlvbiAtPSBPUENPREVfTEVOR1RIKG9wX2NhbGxf
dmFyYXJncyk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgo
b3BfY2FsbCldLnUucG9pbnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGwp
Ci0gICAgICAgICAgICAgICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2Fs
bCldLnUucG9pbnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVjdCkK
LSAgICAgICAgICAgICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxs
KV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFsKSk7
CisgICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCld
LnUucG9pbnRlciAhPSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihvcF9jYWxsKQorICAgICAgICAg
ICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50
ZXIgIT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY29uc3RydWN0KQorICAgICAgICAgICAg
ICAgICAgICYmIGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIg
IT0gTExJbnQ6OkRhdGE6OmdldENvZGVQdHIob3BfY2FsbF9ldmFsKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBNdXN0IGJlIHRoYXQgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gd2Fz
IHNvbWUgb3BfY2FsbC4KLSAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xF
TkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3Bf
Y2FsbCkKLSAgICAgICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChv
cF9jYWxsKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY29uc3Ry
dWN0KQotICAgICAgICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9w
X2NhbGwpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX2V2
YWwpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9j
YWxsKV0udS5wb2ludGVyID09IExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKG9wX2NhbGwpCisgICAg
ICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUu
cG9pbnRlciA9PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihvcF9jb25zdHJ1Y3QpCisgICAgICAg
ICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9p
bnRlciA9PSBMTEludDo6RGF0YTo6Z2V0Q29kZVB0cihvcF9jYWxsX2V2YWwpKTsKICAgICAgICAg
ICAgIGluc3RydWN0aW9uIC09IE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CiAgICAgICAgIH0KKyNl
bHNlCisgICAgICAgIGluc3RydWN0aW9uID0gYWRqdXN0UENJZkF0Q2FsbFNpdGUoaW5zdHJ1Y3Rp
b24pOworI2VuZGlmIC8vIG1sYW0gUkVQTEFDRUQKICAgICAgICAgCiAgICAgICAgIHJldHVybiBi
eXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKCFtX3JhcmVEYXRh
KQogICAgICAgICByZXR1cm4gMTsKICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVj
dG9yOwogICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMTsKICAg
ICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1
bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbElu
ZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgp
KSktPmJ5dGVjb2RlT2Zmc2V0OworI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBACiAvLyAoYXMgb3Bwb3NlZCB0byBhcHAg
ZGVidWdnaW5nKSwgdGhpcyBmZWF0dXJlIGlzIHRvIGJlIGRpc2FibGVkIGJ5IGRlZmF1bHQsCiAv
LyBhbmQgY2FuIGJlIGVuYWJsZWQgYXMgbmVlZGVkIGZvciBWTSBkZXZlbG9wbWVudCB1c2Ugb25s
eS4KIAotI2RlZmluZSBFTkFCTEVfQllURUNPREVfQ09NTUVOVFMgMAorI2RlZmluZSBFTkFCTEVf
QllURUNPREVfQ09NTUVOVFMgMSAvLyBtbGFtIHdhcyAwCiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC0yMjgsOSArMjI4LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0
TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJl
Z2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAg
ICAgICAgfQorI2VuZGlmIC8vIG1sYW0KIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIGFkanVzdFBDSWZBdENhbGxTaXRlKHVuc2lnbmVkKTsKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIGFkanVzdFBDSWZBdENhbGxTaXRlKEluc3RydWN0aW9uKik7CisjZW5kaWYKICAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7
CiAKKyNpZiBFTkFCTEUoSklUKSAvLyBtbGFtCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9yYXJlRGF0YSkKQEAgLTI1MCw2ICsyNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAg
ICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgLy8gbWxhbQogI2lmIEVOQUJMRShMTElOVCkK
ICAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZvKiBpbmNvbWlu
ZykKICAgICAgICAgewpAQCAtMjU4LDcgKzI2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdD
YWxscygpOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisvLyBtbGFtIG9yaWcgI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAg
ICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29k
ZU1hcCkKQEAgLTMzNCwxMCArMzQxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBKdW1wUmVwbGFjZW1lbnRXYXRj
aHBvaW50JiB3YXRjaHBvaW50KQogICAgICAgICB7CisjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
ICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgdW5zaWduZWQgcmVz
dWx0ID0gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CiAgICAgICAgICAgICBtX2RmZ0Rh
dGEtPndhdGNocG9pbnRzLmFwcGVuZCh3YXRjaHBvaW50KTsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisjZWxzZQorICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHdhdGNocG9pbnQpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZPU1JFeGl0cygpCkBAIC00ODQsNiArNDk2LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9Cisv
Ki8gbWxhbSBCRUdJTiB0ZXN0CisjZWxpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICBK
SVRDb2RlOjpKSVRUeXBlIGdldEpJVFR5cGUoKSB7IHJldHVybiBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rOyB9CisvLyBtbGFtIEVORCB0ZXN0ICovCiAjZWxzZQogICAgICAgICBKSVRDb2RlOjpK
SVRUeXBlIGdldEpJVFR5cGUoKSB7IHJldHVybiBKSVRDb2RlOjpCYXNlbGluZUpJVDsgfQogI2Vu
ZGlmCkBAIC04MTIsNiArODI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gbV9yYXJlRGF0YSAmJiAhIW1fcmFyZURhdGEtPm1fY29kZU9yaWdpbnMuc2l6ZSgpOwogICAg
ICAgICB9CiAgICAgICAgIAorI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0KICAgICAgICAgYm9vbCBj
b2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFoYXNDb2RlT3Jp
Z2lucygpKQpAQCAtODIzLDcgKzg0MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
Y29kZU9yaWdpbiA9IGVudHJ5LT5jb2RlT3JpZ2luOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KLSAgICAgICAgCisjZW5kaWYKKwogICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4odW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3Jh
cmVEYXRhKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
OCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
ICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwotI2lmIEVOQUJMRShMTElOVCkKKy8vIG1sYW0gI2lm
IEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoTExJTlQpICYmICFFTkFCTEUoTExJTlRfQ19MT09Q
KQogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OwogICAgIAogICAgIGlmIChpbnN0cnVjdGlv
blswXS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRob2RfY2hlY2spCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTI1NTA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgSW5zdHJ1Y3Rpb25faAogCiAjaW5jbHVk
ZSAiSklUU3R1YlJvdXRpbmUuaCIKKyNpbmNsdWRlICJMTEludE9wY29kZS5oIgogI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlTbG90LmgiCkBAIC0xOTcsNiArMTk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsKKyNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQorICAgICAgICAgICAgTExJbnRPcGNvZGUgbGxpbnRPcGNvZGU7CisjZW5kaWYKICAgICAg
ICAgICAgIGludCBvcGVyYW5kOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZTsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hh
aW4+IHN0cnVjdHVyZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsMTIgKzIyMSwzOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwog
ICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNkZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9f
T1BDT0RFUyAxCisjZWxzZQorICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhlIG9ubHkgb3Ro
ZXIgcmVhc29uIHdoeSB3ZSB3aWxsIHdhbnQgY29tcHV0ZWQgZ290bworICAgLy8gb3Bjb2RlcyBp
cyBpZiB3ZSBoYXZlIHRoZSBMTElOVCBhbmQgd2UncmUgbm90IHVzaW5nIHRoZSBDIExvb3AuCisg
ICAvLyBJZiB3ZSBhcmUgdXNpbmcgdGhlIEMgTG9vcCBhbmQgd2Ugd2FudGVkIGNvbXB1dGVkIGdv
dG9zLCB3ZSB3b3VsZCBoYXZlCisgICAvLyBlbmFibGVkIENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19J
TlRFUlBSRVRFUiwgYW5kIHRoYXQgd291bGQgYmUgaGFuZGxlZAorICAgLy8gaW4gdGhlIGNhc2Ug
YWJvdmUuCisgICAjaWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAg
ICNkZWZpbmUgRU5BQkxFX0NPTVBVVEVEX0dPVE9fT1BDT0RFUyAxCisgICAjZWxzZQorICAgI2Rl
ZmluZSBFTkFCTEVfQ09NUFVURURfR09UT19PUENPREVTIDAKKyAgICNlbmRpZgorI2VuZGlmCisK
Ky8vIG1sYW0gQkVHSU4gdGVzdCB8IFJFTU9WRSB0aGlzIGJlZm9yZSBjb21taXQuCisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyN1bmRlZiBFTkFCTEVfQ09NUFVURURfR09UT19PUENPREVTCisj
ZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMSAvLyB0ZXN0aW5nCisjZW5kaWYK
Ky8vIG1sYW0gRU5EIHRlc3QKKworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisv
KiBtbGFtCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRl
ZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQotICAgIHR5cGVkZWYgY29uc3Qgdm9pZCogT3Bjb2RlOwor
ICAgIC8vIG1sYW0gQ2FuIHdlIGRvIHRoaXMgcGxlYXM/IHR5cGVkZWYgY29uc3Qgdm9pZCogT3Bj
b2RlOworICAgICovCisgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CisvKiBtbGFtCiAjZW5kaWYK
KyovCiAjZWxzZQogICAgIHR5cGVkZWYgT3Bjb2RlSUQgT3Bjb2RlOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShy
ZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDggQEAgUHV0QnlJZFN0YXR1
cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJs
b2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFN
KGlkZW50KTsKLSNpZiBFTkFCTEUoTExJTlQpCisvLyBtbGFtICNpZiBFTkFCTEUoTExJTlQpCisj
aWYgRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsg
Ynl0ZWNvZGVJbmRleDsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjU1MDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIFJlc29sdmVHbG9iYWxT
dGF0dXMgY29tcHV0ZUZvckxMSQogewogI2lmIEVOQUJMRShMTElOVCkKICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRl
Y29kZUluZGV4OwotICAgIAotICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9yZXNvbHZlX2dsb2JhbCk7CisKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gTExJbnQ6OkRhdGE6OmdldE9wY29kZShvcF9yZXNvbHZlX2dsb2JhbCkpOwogICAg
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUu
Z2V0KCk7CiAgICAgaWYgKCFzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDggQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFT
TS5oPgogCisjaWYgRU5BQkxFKEpJVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaWYgQ1BV
KFg4Nl82NCkKQEAgLTE0MTYsNyArMTQxOCw3IEBAIGV4dGVybiAiQyIgdm9pZCBERkdfT1BFUkFU
SU9OIHRyaWdnZXJSZW8KIH0gLy8gZXh0ZXJuICJDIgogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAogI2lmIENPTVBJTEVSKEdD
QykKIApAQCAtMTQ3OCwzICsxNDgwLDQgQEAgZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NU
X0NBTExfUkVUVQogCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQogCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBD
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJz
dHJhY3RQQy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIEFic3RyYWN0UEM6OkFic3RyYWN0UEMoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERh
dGEpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsgLy8gbWxhbQogICAgIAogI2lmIEVOQUJMRShK
SVQpCiAgICAgaWYgKGdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
ICAgICAgICAgdm9pZCBzZXRUaGlzKEpTVmFsdWUgdikgeyBtX2Nsb3N1cmUuc2V0VGhpcyh2KTsg
fQogICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGludCBuLCBKU1ZhbHVlIHYpIHsgbV9jbG9zdXJl
LnNldEFyZ3VtZW50KG4sIHYpOyB9CisgICAgICAgIC8vIG1sYW0gQkVHSU4gZm9yIGRlYnVnZ2lu
ZyBPTkxZLiAgUmVtb3ZlIGFmdGVyd2FyZHMKKyAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSYgY2xv
c3VyZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Nsb3N1cmU7CisgICAgICAgIH0KKyAgICAg
ICAgLy8gbWxhbSBFTkQKIAogICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDksNyArNDksNiBAQCBSZWdpc3RlckZpbGUqIENhbGxGcmFtZTo6cmVnaXN0ZXJGaWxlKCkKIH0K
IAogI2VuZGlmCi0KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogdW5zaWduZWQgQ2FsbEZyYW1lOjpi
eXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSBjb25zdAogewpAQCAtMTk3LDYgKzE5NiwxMSBA
QCBSZWdpc3RlciogQ2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsCiB7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSB0aGlzLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2Nr
KTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIm1sYW0gOjogQ2FsbEZyYW1lOjpm
cmFtZUV4dGVudEludGVybmFsKCkgcmVnaXN0ZXJzKCkgJXAgY2ItPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzICVkID09PiAlcCBAICVzICVzOiVkXG4iLCAKKyAgICAgICAgICAgcmVnaXN0ZXJzKCksIGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsIHJlZ2lzdGVycygpICsgY29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycywKKyAgICAgICAgICAgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywg
X19MSU5FX18pOworICAgICNlbmRpZgogICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDcgKzEwMyw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgQ2FsbEZyYW1lJiBv
cGVyYXRvcj0oY29uc3QgUmVnaXN0ZXImIHIpIHsgKnN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhp
cykgPSByOyByZXR1cm4gKnRoaXM7IH0KIAogICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1l
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5jYWxsRnJh
bWUoKTsgfQotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklUKQorI2lmIEVO
QUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5QQygpIGNvbnN0IHsgcmV0dXJuIFJldHVybkFkZHJlc3NQdHIodGhpc1tSZWdpc3RlckZpbGU6
OlJldHVyblBDXS52UEMoKSk7IH0KICAgICAgICAgYm9vbCBoYXNSZXR1cm5QQygpIGNvbnN0IHsg
cmV0dXJuICEhdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogICAgICAgICB2
b2lkIGNsZWFyUmV0dXJuUEMoKSB7IHJlZ2lzdGVycygpW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENd
ID0gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigwKTsgfQpAQCAtMTQ5LDYgKzE1MCw3IEBAIG5h
bWVzcGFjZSBKU0MgIHsKICAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5U
RVJQUkVURVIpCisvLyBtbGFtICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5B
QkxFKExMSU5UX0NfTE9PUCkgLy8gbWxhbQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBD
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQog
I2VuZGlmCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI3Miw2ICsyNzQsMTAgQEAgbmFtZXNw
YWNlIEpTQyAgewogI2VuZGlmCiAgICAgICAgIEV4ZWNTdGF0ZSgpOwogICAgICAgICB+RXhlY1N0
YXRlKCk7CisKKyAgICAgICAgLy8gbWxhbSBCRUdJTgorICAgICAgICBmcmllbmQgY2xhc3MgVk1J
bnNwZWN0b3I7CisgICAgICAgIC8vIG1sYW0gRU5ECiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcg
QEAKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNsdWRlICJWTUlu
c3BlY3Rvci5oIiAvLyBtbGFtCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkBAIC01NTQsNyArNTU1LDggQEAgSW50ZXJw
cmV0ZXI6OkludGVycHJldGVyKCkKIAogSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0j
aWYgRU5BQkxFKExMSU5UKQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5B
QkxFKExMSU5UKSAmJiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogICAgIGlmIChtX2Ns
YXNzaWNFbmFibGVkKQogICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOwogI2VuZGlmCkBA
IC01NzAsMjAgKzU3MiwzOCBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpE
YXRhCiAjZXJyb3IgIkJ1aWxkaW5nIGJvdGggTExJbnQgYW5kIHRoZSBDbGFzc2ljIEludGVycHJl
dGVyIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UuIgogI2Vu
ZGlmCiAKKy8vIG1sYW0gb3JpZyAKKyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsgLy8gbWxh
bSBSRU1PVkUKKyNpZiAwIC8vIG1sYW0gT0JTT0xFVEUKKyAgICAjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKKyAgICBleGVjdXRlTExJbnRDTG9vcChJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwLCBs
bGludF91bnVzZWQgLyogbWxhbSBPQlNPTEVURSwgbGxpbnREYXRhKi8pOworICAgICNlbmRpZgor
I2VuZGlmIC8vIG1sYW0KKworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAjaWYg
RU5BQkxFKExMSU5UKQorCiAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFw
KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKICAgICAgICAg
bV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJ
RD4oaSkpOwogICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKKwogI2VsaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBpZiAoY2FuVXNlSklUKSB7CiAg
ICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRp
b25zIGZvciBvcGNvZGVzLgotICAgICAgICAKKworICAgICAgICAvLyBtbGFtIDo6IFRoZSBmb2xs
b3dpbmcgY29kZSBpcyBvYnNvbGV0ZSBiZWNhdXNlIHdlIHNob3VsZCBuZXZlciBlbmNvdW50ZXIg
dGhpcworICAgICAgICAvLyBjYXNlLiAgSW4gcHJpdmF0ZUV4ZWN1dGUoKSwgdGhlcmUgaXMgYW4g
YXNzZXJ0aW9uIHRoYXQgZW5zdXJlcyB0aGF0IHdlIG5ldmVyCisgICAgICAgIC8vIG1peCB0aGUg
SklUIHdpdGggdGhlIGNsYXNzaWMgY29tcGlsZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAg
bV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQogICAgICAgICBtX2NsYXNzaWNF
bmFibGVkID0gZmFsc2U7CisgICAgICAgIC8vIG1sYW0gOjogTk9URTogQmFzZWQgb24gSlNHbG9i
YWxEYXRhJ3MgZW5hYmxlQXNzZW1ibGVyKCksIGl0IGxvb2tzIGxpa2UgdGhlIGNsYXNzaWMKKyAg
ICAgICAgLy8gaW50ZXJwcmV0ZXIgaXMgc3RpbGwgaW4gdXNlIHdoZW4gLS11c2VKSVQ9ZmFsc2Uu
ICBXaWxsIGhhdmUgdG8gZml4IHRoaXMgc28gdGhhdAorICAgICAgICAvLyBMTElOVCBjYW4gc3Rh
bmQgYWxvbmUuCisKICAgICB9IGVsc2UgewogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFs
aXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCkBAIC01OTIsMTMgKzYxMiwxOCBAQCB2b2lk
IEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhCiAgICAgICAgIAogICAgICAgICBt
X2NsYXNzaWNFbmFibGVkID0gdHJ1ZTsKICAgICB9CisjZW5kaWYgLy8gbWxhbSBuZXcKKwogI2Vs
c2UKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBtX2NsYXNzaWNFbmFibGVk
ID0gdHJ1ZTsKICNlbHNlCiAgICAgbV9jbGFzc2ljRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCi0j
ZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKy8vIG1s
YW0gb3JpZyAjZW5kaWYgLy8gIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVU
RVIpICYmICFFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19P
UENPREVTKQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVl
OwogI2VuZGlmCkBAIC03MDksNyArNzM0LDggQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lz
dGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2Rl
KQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorLy8gbWxhbSBv
cmlnICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFC
TEUoTExJTlQpCiAjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fY2xhc3NpY0VuYWJsZWQp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOwpAQCAtNzczLDcgKzc5OSw4IEBAIE5FVkVSX0lOTElO
RSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBD
KCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKLSNlbGlmIEVOQUJMRShKSVQp
CisvLyBtbGFtIG9yaWcgI2VsaWYgRU5BQkxFKEpJVCkKKyNlbGlmIEVOQUJMRShKSVQpIHx8IEVO
QUJMRShMTElOVF9DX0xPT1ApCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAg
ICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5WUEMoKSkgLSAxOwpAQCAtODQ1LDExICs4NzIsNDAgQEAgc3RhdGljIGludCBnZXRMaW5l
TnVtYmVyRm9yQ2FsbEZyYW1lKEpTRwogICAgIGlmICghZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkp
CiAgICAgICAgIHJldHVybiBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpIC0gMSk7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoSklUKQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShK
SVQpIHx8IEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICByZXR1cm4gY29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLT5jb2RlT3JpZ2lu
KGNhbGxGcmFtZS0+Y29kZU9yaWdpbkluZGV4Rm9yREZHKCkpLmJ5dGVjb2RlSW5kZXgpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgLyogbWxhbQorICAgIHN3aXRjaCAoY29kZUJsb2Nr
LT5nZXRKSVRUeXBlKCkpIHsKKyAgICBjYXNlIEpJVENvZGU6Ok5vbmU6ICAgICAgICAgICAgICBw
cmludGYoIiAqKiogSklUIHR5cGUgTm9uZVxuIik7IGJyZWFrOworICAgIGNhc2UgSklUQ29kZTo6
SG9zdENhbGxUaHVuazogICAgIHByaW50ZigiICoqKiBKSVQgdHlwZSBIb3N0Q2FsbFRodW5rXG4i
KTsgYnJlYWs7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOiAgcHJpbnRmKCIg
KioqIEpJVCB0eXBlIEludGVycHJldGVyVGh1bmtcbiIpOyBicmVhazsKKyAgICBjYXNlIEpJVENv
ZGU6OkJhc2VsaW5lSklUOiAgICAgICBwcmludGYoIiAqKiogSklUIHR5cGUgQmFzZWxpbmVKSVRc
biIpOyBicmVhazsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDogICAgICAgICAgICBwcmludGYo
IiAqKiogSklUIHR5cGUgTm9uZVxuIik7IGJyZWFrOworICAgIH0KKyAgICAvKi8KKyAgICAvKgor
ICAgIGlmIChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSB7CisgICAgICAgIHVuc2lnbmVkIHJldHVyblNpdGVCeXRlY29kZU9mZnNldCA9IGNhbGxG
cmFtZS0+Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCk7CisgICAgICAgIHVuc2lnbmVkIGNh
bGxTaXRlQnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIEluc3RydWN0aW9uKiBjYWxsU2l0ZUluc3Ry
dWN0aW9uID0gY29kZUJsb2NrLT5nZXRDYWxsU2l0ZUluc3RydWN0aW9uKHJldHVyblNpdGVCeXRl
Y29kZU9mZnNldCk7CisgICAgICAgIGNhbGxTaXRlQnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxTaXRlSW5zdHJ1Y3Rpb24pOworICAgICAgICBpbnQgbGluZU51
bWJlciA9IGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGNhbGxTaXRlQnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAvLyBtbGFtIEJFR0lOCisgICAgICAgIC8vIHByaW50Zigi
ICoqKiBBMSBsaW5lIG51bWJlciAlZCB8IG9mZnNldCAlZCBAICVzOiVkXG4iLCBsaW5lTnVtYmVy
LCBjYWxsU2l0ZUJ5dGVjb2RlT2Zmc2V0LCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAg
ICAgLy8gbWxhbSBFTkQKKyAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXI7CisgICAgfQorICAgIC8v
ICovCisjZW5kaWYKKyAgICAvLyBtbGFtIEJFR0lOCisgICAgLy9wcmludGYoIiAqKiogQS4wMSBU
RVNUIG90aGVyOiBvZmZzZXQgJWQgQCAlczolZFxuIiwgY29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCksIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSksIF9fRlVO
Q1RJT05fXywgX19MSU5FX18pOworICAgIC8vcHJpbnRmKCIgKioqIEEyIGxpbmUgbnVtYmVyICVk
IHwgb2Zmc2V0ICVkIEAgJXM6JWRcbiIsIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCkpLCBjYWxsRnJh
bWUtPmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpLCBfX0ZVTkNUSU9OX18sIF9fTElORV9f
KTsKKyAgICAvLyBtbGFtIEVORAogICAgIHJldHVybiBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JC
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpKTsK
ICNlbHNlCiAgICAgcmV0dXJuIC0xOwpAQCAtODcxLDcgKzkyNyw4IEBAIHN0YXRpYyBDYWxsRnJh
bWUqIGdldENhbGxlckluZm8oSlNHbG9iYWwKICAgICAKICAgICBDb2RlQmxvY2sqIGNhbGxlckNv
ZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAKLSNpZiBFTkFCTEUoSklU
KQorLy8gbWxhbSBvcmlnICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJM
RShMTElOVF9DX0xPT1ApIC8vIG1sYW0KICAgICBpZiAoIWNhbGxGcmFtZS0+aGFzUmV0dXJuUEMo
KSkKICAgICAgICAgY2FsbGZyYW1lSXNIb3N0ID0gdHJ1ZTsKICNlbmRpZgpAQCAtODkwLDcgKzk0
Nyw4IEBAIHN0YXRpYyBDYWxsRnJhbWUqIGdldENhbGxlckluZm8oSlNHbG9iYWwKICAgICAgICAg
ICAgIHJldHVybiBjYWxsZXJGcmFtZTsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKEpJ
VCkKKy8vIG1sYW0gb3JpZyAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFC
TEUoTExJTlRfQ19MT09QKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoY2FsbGVy
Q29kZUJsb2NrICYmIGNhbGxlckNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRG
R0pJVCkgewogICAgICAgICAgICAgdW5zaWduZWQgY29kZU9yaWdpbkluZGV4ID0gY2FsbGVyRnJh
bWUtPmNvZGVPcmlnaW5JbmRleEZvckRGRygpOwpAQCAtOTA3LDcgKzk2NSw4IEBAIHN0YXRpYyBD
YWxsRnJhbWUqIGdldENhbGxlckluZm8oSlNHbG9iYWwKICAgICAgICAgICAgIHJldHVybiBjYWxs
ZXJGcmFtZTsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKEpJVCkKKy8vIG1sYW0gb3Jp
ZyAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19MT09Q
KQogICAgICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aXNJbmxp
bmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpY2YgPSBjYWxs
RnJhbWUtPmlubGluZUNhbGxGcmFtZSgpOwpAQCAtOTkxLDYgKzEwNTAsMTUgQEAgdm9pZCBJbnRl
cnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0dsb2JhbAogICAgICAgICAgICAgU3RhY2tGcmFtZSBz
ID0geyBTdHJvbmc8SlNPYmplY3Q+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUtPmNhbGxlZSgpKSwg
U3RhY2tGcmFtZU5hdGl2ZUNvZGUsIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKSwgLTEsIFVTdHJp
bmcoKX07CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzKTsKICAgICAgICAgfQorICAgICAg
ICAvKgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgaW50IGNvdW50ID0gMDsKKyAgICAg
ICAgICAgIGlmICgrK2NvdW50IDwgMTApIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBAQEAg
SW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoKSBjYWxsRnJhbWUgJXAgbGluZSAlZFxuIiwgY2Fs
bEZyYW1lLCBsaW5lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1sYW1CcmVhaygiIiww
LDApOworICAgICAgICB9CisgICAgICAgICovCiAgICAgICAgIHVuc2lnbmVkIHVudXNlZEJ5dGVj
b2RlT2Zmc2V0ID0gMDsKICAgICAgICAgY2FsbEZyYW1lID0gZ2V0Q2FsbGVySW5mbyhnbG9iYWxE
YXRhLCBjYWxsRnJhbWUsIGxpbmUsIHVudXNlZEJ5dGVjb2RlT2Zmc2V0KTsKICAgICB9CkBAIC0x
MDI5LDYgKzEwOTcsOSBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAg
IGJvb2wgaXNJbnRlcnJ1cHQgPSBmYWxzZTsKIAorICAgICNpZiBtbGFtX1BSSU5URgorICAgIHBy
aW50ZigiICoqKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb25cbiIpOyAvLyBtbGFtCisgICAg
I2VuZGlmCiAgICAgQVNTRVJUKCFleGNlcHRpb25WYWx1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VS
VCghZXhjZXB0aW9uVmFsdWUuaXNDZWxsKCkgfHwgZXhjZXB0aW9uVmFsdWUuYXNDZWxsKCkpOwog
ICAgIC8vIFRoaXMgc2hvdWxkbid0IGJlIHBvc3NpYmxlIChoZW5jZSB0aGUgYXNzZXJ0aW9ucyks
IGJ1dCB3ZSdyZSBhbHJlYWR5IGluIHRoZSBzbG93ZXN0IG9mCkBAIC0xMDYxLDEyICsxMTMyLDIx
IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKICAgICAvLyBDYWxj
dWxhdGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRpbmcgY2FsbCBmcmFtZXMgYXMg
bmVjZXNzYXJ5LgogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gMDsKICAgICB3aGlsZSAoaXNJ
bnRlcnJ1cHQgfHwgIShoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpKSkgeworICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAg
cHJpbnRmKCJcblxuIG1sYW0gVU5XSU5EIGN1cnJlbnQgY2ZyICVwXG5cbiIsIGNhbGxGcmFtZSk7
CisgICAgICAgICNlbmRpZgogICAgICAgICBpZiAoIXVud2luZENhbGxGcmFtZShjYWxsRnJhbWUs
IGV4Y2VwdGlvblZhbHVlLCBieXRlY29kZU9mZnNldCwgY29kZUJsb2NrKSkgeworICAgICAgICAg
ICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNh
bGxGcmFtZSwgIiAgPDw8IFBPUFBFRCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQorICAgICAgICAg
ICAgI2VuZGlmCiAgICAgICAgICAgICBpZiAoUHJvZmlsZXIqIHByb2ZpbGVyID0gY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCkuZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmls
ZXItPmV4Y2VwdGlvblVud2luZChjYWxsRnJhbWUpOwogICAgICAgICAgICAgY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCkudG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIH0KKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIFZNSW5zcGVj
dG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICA8PDwgUE9QUEVEIHRvIHJlc3RvcmVkICIpOyAv
LyBtbGFtCisgICAgICAgICNlbmRpZgogICAgIH0KICAgICBjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAKQEAgLTExMTAsOCArMTE5MCwxMiBAQCBzdGF0
aWMgaW5saW5lIEpTT2JqZWN0KiBjaGVja2VkUmV0dXJuKEpTCiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCi1KU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxl
KiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW4sIEpTT2JqZWN0KiB0aGlzT2JqKQorSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFt
UChQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluLCBKU09iamVjdCogdGhpc09iaikKIHsKKyAgICAjaWYgbWxh
bV9QUklOVEYKKyAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9yZWVudHJ5RGVwdGgp
OworICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICoqKiBJbnRlcnByZXRl
cjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFtKSIpOworICAgICNlbmRpZgogICAgIEFTU0VSVChpc1Zh
bGlkVGhpc09iamVjdCh0aGlzT2JqLCBjYWxsRnJhbWUpKTsKICAgICBBU1NFUlQoIXNjb3BlQ2hh
aW4tPmdsb2JhbERhdGEtPmV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5pc0NvbGxlY3RvckJ1c3koKSk7CkBAIC0xMTE5LDE0ICsxMjAzLDI4IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgQ1JBU0goKTsKIAog
ICAgIGlmIChtX3JlZW50cnlEZXB0aCA+PSBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCAmJiBt
X3JlZW50cnlEZXB0aCA+PSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgp
CisgICAgeworICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgcHJpbnRmKCIgKioqIHJl
ZW50cnkgJWRcbiIsIG1fcmVlbnRyeURlcHRoKTsKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBG
cmFtZShjYWxsRnJhbWUsICIgKioqIFJFVFVSTiAxIGZyb20gSW50ZXJwcmV0ZXI6OmV4ZWN1dGVf
bWxhbVAocHJvZ3JhbSkiKTsKKyAgICAgICAgI2VuZGlmCiAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwotCisgICAgfQorICAg
IC8vIEZpcnN0IGNoZWNrIGlmIHRoZSAicHJvZ3JhbSIgaXMgYWN0dWFsbHkganVzdCBhIEpTT04g
b2JqZWN0LiBJZiBzbywKKyAgICAvLyB3ZSdsbCBoYW5kbGUgdGhlIEpTT04gb2JqZWN0IGhlcmUu
IEVsc2UsIHdlJ2xsIGhhbmRsZSByZWFsIEpTIGNvZGUKKyAgICAvLyBiZWxvdyBhdCBmYWlsZWRK
U09OUC4KICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoKnNj
b3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7CiAg
ICAgVmVjdG9yPEpTT05QRGF0YT4gSlNPTlBEYXRhOwogICAgIGJvb2wgcGFyc2VSZXN1bHQ7CiAg
ICAgY29uc3QgVVN0cmluZyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudG9TdHJp
bmcoKTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pc051bGwoKSkKKyAgICB7CisgICAgICAgICNp
ZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9yZWVu
dHJ5RGVwdGgpOworICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAq
KiogUkVUVVJOIDIgZnJvbSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFtKSIpOwor
ICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQogICAg
IGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8TENo
YXI+IGxpdGVyYWxQYXJzZXIoY2FsbEZyYW1lLCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnM4KCks
IHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIEpTT05QKTsKICAgICAgICAgcGFyc2VSZXN1bHQgPSBs
aXRlcmFsUGFyc2VyLnRyeUpTT05QUGFyc2UoSlNPTlBEYXRhLCBzY29wZUNoYWluLT5nbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8o
c2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKSk7CkBAIC0xMjIxLDM2ICsxMzE5LDY5IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiBmYWlsZWRKU09OUDoKKyAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhl
biB3ZSBoYXZlIGFscmVhZHkgcHJvdmVuIHRoYXQgdGhlIHNjcmlwdCBpcyBub3QgYSBKU09OCisg
ICAgLy8gb2JqZWN0LgorCisgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8gYnl0ZWNvZGUgaWYgbmVj
ZXNzYXJ5OgogICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmNvbXBpbGUoY2FsbEZyYW1l
LCBzY29wZUNoYWluKTsKICAgICBpZiAoZXJyb3IpCisgICAgeworICAgICAgICAjaWYgbWxhbV9Q
UklOVEYKKyAgICAgICAgcHJpbnRmKCIgKioqIHJlZW50cnkgJWRcbiIsIG1fcmVlbnRyeURlcHRo
KTsKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIFJFVFVS
TiBQMSBmcm9tIEludGVycHJldGVyOjpleGVjdXRlX21sYW1QKHByb2dyYW0pIik7CisgICAgICAg
ICNlbmRpZgogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0Vycm9yKGNhbGxGcmFt
ZSwgZXJyb3IpKTsKKyAgICB9CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmcHJvZ3JhbS0+
Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIAorICAgIC8vIFJlc2VydmUgc3RhY2sgc3BhY2UgZm9yIHRo
aXMgaW52b2NhdGlvbjoKICAgICBSZWdpc3Rlciogb2xkRW5kID0gbV9yZWdpc3RlckZpbGUuZW5k
KCk7CiAgICAgUmVnaXN0ZXIqIG5ld0VuZCA9IG9sZEVuZCArIGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVyczsKICAgICBpZiAoIW1fcmVnaXN0ZXJGaWxlLmdyb3cobmV3RW5k
KSkKKyAgICB7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIiAqKiog
cmVlbnRyeSAlZFxuIiwgbV9yZWVudHJ5RGVwdGgpOworICAgICAgICBWTUluc3BlY3Rvcjo6ZHVt
cEZyYW1lKGNhbGxGcmFtZSwgIiAqKiogUkVUVVJOIFAyIGZyb20gSW50ZXJwcmV0ZXI6OmV4ZWN1
dGVfbWxhbVAocHJvZ3JhbSkiKTsKKyAgICAgICAgI2VuZGlmCiAgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgIH0KIAor
ICAgIC8vIFB1c2ggdGhlIGNhbGwgZnJhbWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG9sZEVuZCArIGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsK
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1l
dGVyIGZvciAndGhpcycuCiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2Nv
cGVDaGFpbiwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgMCk7CisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgKioqIHJlZW50cnkgJWRc
biIsIG1fcmVlbnRyeURlcHRoKTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG5ld0NhbGxG
cmFtZSwgIiAgKysrIGluaXQgIiwgMCwgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18p
OworICAgICNlbmRpZgogICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKHRoaXNPYmopOwog
ICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUoY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCksIG5ld0NhbGxGcmFtZSk7CisgICAgLy8gbWxhbSBCRUdJTgorICAgICNpZiBtbGFtX1BSSU5U
RgorICAgIHByaW50ZigiICoqKiByZWVudHJ5ICVkXG4iLCBtX3JlZW50cnlEZXB0aCk7CisgICAg
Vk1JbnNwZWN0b3I6OmR1bXBGcmFtZShuZXdDYWxsRnJhbWUsICIgID4+PiBQVVNIRUQgdG8gbmV3
ICIsIDAsIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAg
ICAvLyBtbGFtIEVORAogCiAgICAgaWYgKFByb2ZpbGVyKiBwcm9maWxlciA9IGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2lsbEV4
ZWN1dGUoY2FsbEZyYW1lLCBwcm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+bGluZU5vKCkp
OwogCisgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICB7
CiAgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5n
ZXQoKSk7CiAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAorI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCisgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGVMTEludENMb29wKE5vcm1hbCwgJm1fcmVn
aXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworI2Vsc2Ug
Ly8gIUVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgaWYgKCFj
bGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVk
SklUQ29kZSgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlQ2hh
aW4tPmdsb2JhbERhdGEpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdp
c3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1Ap
CiAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICB9CkBAIC0xMjYwLDExICsxMzkxLDE4
IEBAIGZhaWxlZEpTT05QOgogCiAgICAgbV9yZWdpc3RlckZpbGUuc2hyaW5rKG9sZEVuZCk7CiAK
KyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIiAqKiogcmVlbnRyeSAlZFxuIiwgbV9y
ZWVudHJ5RGVwdGgpOworICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICoq
KiBSRVRVUk4gUDMgZnJvbSBJbnRlcnByZXRlcjo6ZXhlY3V0ZV9tbGFtUChwcm9ncmFtKSIpOwor
ICAgICNlbmRpZgogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVj
dCogZnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgICNpZiBtbGFt
X1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICoqKiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNhbGwoZnVuY3Rpb24pIik7CisgICAgI2VuZGlmCiAgICAgQVNTRVJU
KGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJUKCFj
YWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKQEAgLTEyNzUsNiArMTQxMywxMiBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCiAgICAgUmVnaXN0
ZXIqIG9sZEVuZCA9IG1fcmVnaXN0ZXJGaWxlLmVuZCgpOworICAgIC8vIG1sYW0gQkVHSU4gdGVz
dCBkZWJ1ZworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50ZigiICAgbWxhbSBjYWxsRnJh
bWUtPmZyYW1lRXh0ZW50KCkgJXAgPD0gb2xkRW5kICAlcCA9PT4gcmVzdWx0ICVkXG4iLCBjYWxs
RnJhbWUtPmZyYW1lRXh0ZW50KCksIG9sZEVuZCwgKGNhbGxGcmFtZS0+ZnJhbWVFeHRlbnQoKSA8
PSBvbGRFbmQpKTsKKyAgICBwcmludGYoIiAgIG1sYW0gY2FsbEZyYW1lICVwID09IGNhbGxGcmFt
ZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSAlcCA9PT4gcmVzdWx0
ICVkXG4iLCBjYWxsRnJhbWUsICBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIChjYWxsRnJhbWUgPT0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKSk7CisgICAgI2VuZGlmCisgICAgLy8gbWxhbSBFTkQg
dGVzdCBkZWJ1ZwogICAgIEFTU0VSVChjYWxsRnJhbWUtPmZyYW1lRXh0ZW50KCkgPD0gb2xkRW5k
IHx8IGNhbGxGcmFtZSA9PSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpOwogICAgIGludCBhcmdDb3VudCA9IDEgKyBhcmdzLnNpemUoKTsgLy8gaW1w
bGljaXQgInRoaXMiIHBhcmFtZXRlcgogICAgIHNpemVfdCByZWdpc3Rlck9mZnNldCA9IGFyZ0Nv
dW50ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTMxNywxMiArMTQ2
MSwxNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgICAg
ICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkp
OwogCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGVMTEludENMb29wKE5vcm1hbCwgJm1f
cmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgICAgIGlmICghY2xhc3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxs
KCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNo
YWluLT5nbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFs
LCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZW5kaWYgLy8gIUVOQUJMRShMTElO
VF9DX0xPT1ApCisKICAgICAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgICAgIH0KIApA
QCAtMTM1OSw2ICsxNTA4LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2Fs
bEZyYQogCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQogeworICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBWTUluc3BlY3Rvcjo6ZHVt
cEZyYW1lKGNhbGxGcmFtZSwgIiAqKiogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoY29u
c3RydWN0b3IpIik7CisgICAgI2VuZGlmCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2Vw
dGlvbigpKTsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmlzQ29sbGVjdG9y
QnVzeSgpKTsKICAgICAvLyBXZSB0aHJvdyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRv
IHJldHVybiBzb21ldGhpbmcgInZhbGlkIiBidXQgd2UncmUKQEAgLTE0MTEsMTIgKzE1NjMsMTYg
QEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgICAgICAgICAg
U2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKIAog
ICAgICAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CisgICAgICAgICAgICByZXN1bHQgPSBleGVjdXRlTExJbnRDTG9vcChOb3JtYWwsICZtX3JlZ2lz
dGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xv
Z3VlKTsKKyNlbHNlIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgICAgICBpZiAoIWNsYXNzaWNFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3JDb25zdHJ1Y3QoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjb25z
dHJ1Y3REYXRhU2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBlbHNlCi0jZW5k
aWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZh
dGVFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUpOworI2VuZGlm
IC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsK
ICAgICAgICAgfQogCkBAIC0xNDg2LDcgKzE2NDIsOSBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yCiAgICAgfQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJmZ1
bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCk7CiAKKyAgICAvLyBW
TUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG5ld0NhbGxGcmFtZSwgIm1sYW0gQkVGT1JFIENsb3N1cmUg
ZnJhbWUgc2xpZGUiKTsKICAgICBuZXdDYWxsRnJhbWUgPSBzbGlkZVJlZ2lzdGVyV2luZG93Rm9y
Q2FsbChjb2RlQmxvY2ssICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCAwLCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShuZXdD
YWxsRnJhbWUsICJtbGFtIEFGVEVSICBDbG9zdXJlIGZyYW1lIHNsaWRlIik7CiAgICAgaWYgKFVO
TElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSk7CiAgICAgICAgIG1fcmVnaXN0ZXJGaWxlLnNocmluayhvbGRFbmQpOwpAQCAt
MTQ5NSwxMSArMTY1MywyNCBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJl
Rm9yCiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGVDaGFpbiwgY2Fs
bEZyYW1lLT5hZGRIb3N0Q2FsbEZyYW1lRmxhZygpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgZnVuY3Rpb24pOyAgCiAgICAgc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1l
ID0gbmV3Q2FsbEZyYW1lOwogICAgIENhbGxGcmFtZUNsb3N1cmUgcmVzdWx0ID0geyBjYWxsRnJh
bWUsIG5ld0NhbGxGcmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgc2NvcGVDaGFp
bi0+Z2xvYmFsRGF0YSwgb2xkRW5kLCBzY29wZUNoYWluLCBjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgfTsKKyAgICAvLyBtbGFtIEJFR0lOIHRl
c3QKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqXG4iKTsKKyAgICBwcmludGYoIiogSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxs
KClcbiIpOworICAgIHByaW50ZigiKiBjbG9zdXJlIG9sZEZyYW1lICVwIG5ld0ZyYW1lICVwIGZ1
bmN0aW9uICVwIGV4ZWN1dGFibGUgJXBcbiIsCisgICAgICAgICAgIGNhbGxGcmFtZSwgbmV3Q2Fs
bEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAgICBwcmludGYoIioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqXG4iKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtIEVORCB0ZXN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShD
YWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKSAKIHsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBw
cmludGYoIiAqKiogSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoY2xvc3VyZSkgb2xkIGZwICVwLCBuZXcg
ZnAgJXBcbiIsIGNsb3N1cmUub2xkQ2FsbEZyYW1lLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7Cisg
ICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjbG9zdXJlLm5ld0NhbGxGcmFtZSwgIiAqKiogSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoY2xvc3VyZSkiKTsKKyAgICAjZW5kaWYKICAgICBBU1NFUlQoIWNs
b3N1cmUub2xkQ2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwogICAg
IGlmIChjbG9zdXJlLm9sZENhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmlzQ29sbGVjdG9yQnVzeSgp
KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CkBAIC0xNTE0LDYgKzE2ODUsOSBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgICAgIFNhbXBsaW5nVG9vbDo6
Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAgICAgICAgIAogICAgICAg
ICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAg
cmVzdWx0ID0gZXhlY3V0ZUxMSW50Q0xvb3AoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIGNsb3N1
cmUubmV3Q2FsbEZyYW1lLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7CisjZWxz
ZSAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShD
TEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICBpZiAoY2xvc3VyZS5uZXdDYWxsRnJhbWUtPmds
b2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKQEAgLTE1MjIsMTAgKzE2OTYsMTIgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVS
UFJFVEVSKQogICAgICAgICBlbHNlCiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgICAgICByZXN1bHQg
PSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdDYWxs
RnJhbWUpOwogI2VuZGlmCisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICAgICAg
ICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICB9CiAKQEAgLTE1NDIsNiArMTcxOCw5IEBAIHZvaWQg
SW50ZXJwcmV0ZXI6OmVuZFJlcGVhdENhbGwoQ2FsbEZyYW0KIAogSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgaW50IGdsb2JhbFJl
Z2lzdGVyT2Zmc2V0KQogeworICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpk
dW1wRnJhbWUoY2FsbEZyYW1lLCAiICoqKiBJbnRlcnByZXRlcjo6ZXhlY3V0ZShldmFsKSIpOwor
ICAgICNlbmRpZgogICAgIEFTU0VSVChpc1ZhbGlkVGhpc09iamVjdCh0aGlzVmFsdWUsIGNhbGxG
cmFtZSkpOwogICAgIEFTU0VSVCghc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsK
ICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsK
QEAgLTE2MTksNiArMTc5OCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGEKIAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOwogICAgICAgICAKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQorICAgICAgICByZXN1bHQgPSBleGVjdXRlTExJbnRDTG9vcChOb3JtYWws
ICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKKyNl
bHNlIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxF
KENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKSkKQEAgLTE2MjcsMTAgKzE4MDksMTEgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQog
ICAgICAgICBlbHNlCiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYg
RU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgICAgICByZXN1bHQgPSBwcml2YXRl
RXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lKTsKICNlbmRpZgor
I2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICBtX3JlZW50cnlEZXB0aC0t
OwogICAgIH0KIApAQCAtMTkwNiwxMiArMjA4OSwxNSBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRl
cnByZXRlcjo6dW5jYWNoZUdlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRF
UikKIAorI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aWxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFsaXph
dGlvbiBvZiBvdXIgYWRkcmVzcyB0YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQogICAg
IC8vIGhlcmUgYmVjYXVzZSBvdXIgbGFiZWxzIGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlz
IGZ1bmN0aW9uLgogICAgIGlmIChVTkxJS0VMWShmbGFnID09IEluaXRpYWxpemVBbmRSZXR1cm4p
KSB7CiAgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVS
KQorICAgICAgICAvLyBtbGFtICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogICAg
ICAgICAgICAgI2RlZmluZSBMSVNUX09QQ09ERV9MQUJFTChpZCwgbGVuZ3RoKSAmJmlkLAogICAg
ICAgICAgICAgICAgIHN0YXRpYyBPcGNvZGUgbGFiZWxzW10gPSB7IEZPUl9FQUNIX09QQ09ERV9J
RChMSVNUX09QQ09ERV9MQUJFTCkgfTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobGFiZWxzKTsgKytpKQpAQCAtMTk5MSw5ICsyMTc3LDkg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICAgICAg
VVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOwogI2Vsc2UKICAgICAjZGVmaW5lIERFRklORV9PUENP
REUob3Bjb2RlKSBvcGNvZGU6IFVQREFURV9CWVRFQ09ERV9PRkZTRVQoKTsKLSNlbmRpZgorI2Vu
ZGlmIC8vIEVOQUJMRShPUENPREVfU1RBVFMpCiAgICAgTkVYVF9JTlNUUlVDVElPTigpOwotI2Vs
c2UKKyNlbHNlIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQog
ICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFNBTVBMRShjb2RlQmxvY2ssIHZQQyk7IGdv
dG8gaW50ZXJwcmV0ZXJMb29wU3RhcnQKICNpZiBFTkFCTEUoT1BDT0RFX1NUQVRTKQogICAgICNk
ZWZpbmUgREVGSU5FX09QQ09ERShvcGNvZGUpIFwKQEAgLTIwMDYsNyArMjE5Miw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICB3aGlsZSAoMSkgeyAvLyBp
dGVyYXRvciBsb29wIGJlZ2lucwogICAgIGludGVycHJldGVyTG9vcFN0YXJ0OjsKICAgICBzd2l0
Y2ggKHZQQy0+dS5vcGNvZGUpCi0jZW5kaWYKKyNlbmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dP
VE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICB7CiAgICAgREVGSU5FX09QQ09ERShvcF9uZXdf
b2JqZWN0KSB7CiAgICAgICAgIC8qIG5ld19vYmplY3QgZHN0KHIpCkBAIC01MzE5LDYgKzU1MDUs
OSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogI2VuZGlmIC8vIEVOQUJMRShDTEFTU0lDX0lOVEVS
UFJFVEVSKQogfQogCisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKKwogSlNWYWx1
ZSBJbnRlcnByZXRlcjo6cmV0cmlldmVBcmd1bWVudHNGcm9tVk1Db2RlKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBDYWxsRnJhbWUqIGZ1
bmN0aW9uQ2FsbEZyYW1lID0gZmluZEZ1bmN0aW9uQ2FsbEZyYW1lRnJvbVZNQ29kZShjYWxsRnJh
bWUsIGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxMSW50T3Bjb2RlLmgiIC8vIG1sYW0KICNp
bmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAtMTg5LDEy
ICsxOTAsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIGluaXRp
YWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplTExJbnRDTG9vcCgpOworI2Vu
ZGlmIAorCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9y
ZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2Rl
SUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCisvLyBtbGFtICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVS
KSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAg
ICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICBy
ZXR1cm4gaWQ7CkBAIC0yMDQsNiArMjEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9w
Y29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtX2luaXRpYWxpemVkKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVT
KQogI2lmIEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUp
KTsKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CkBAIC0y
MTMsNiArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKIAog
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbmRpZiAv
LyBtbGFtIG5ldwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKQEAg
LTIyNSw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzT3Bjb2Rl
KE9wY29kZSk7CiAKLSAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwg
Q2FsbEZyYW1lKiwgU2NvcGVDaGFpbk5vZGUqLCBKU09iamVjdCogdGhpc09iaik7CisgICAgICAg
IEpTVmFsdWUgZXhlY3V0ZV9tbGFtUChQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFNj
b3BlQ2hhaW5Ob2RlKiwgSlNPYmplY3QqIHRoaXNPYmopOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENh
bGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNP
YmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBD
b25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgU2NvcGVDaGFpbk5vZGUqKTsKQEAgLTI4MCw3ICsyODgsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIENhbGxGcmFtZSogZmluZEZ1bmN0aW9uQ2FsbEZy
YW1lRnJvbVZNQ29kZShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKik7CiAKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQorICAgICAgICBzdGF0aWMgSlNWYWx1ZSBleGVjdXRlTExJbnRDTG9vcChFeGVj
dXRpb25GbGFnLCBSZWdpc3RlckZpbGUqLCBDYWxsRnJhbWUqLCBMTEludE9wY29kZUlEIGJvb3Rz
dHJhcE9wY29kZUlkID0gbGxpbnRfdW51c2VkLyogbWxhbSBPQlNPTEVURSwgTExJbnQ6OkRhdGEq
IGRhdGEgPSAwKi8pOworI2Vsc2UKICAgICAgICAgSlNWYWx1ZSBwcml2YXRlRXhlY3V0ZShFeGVj
dXRpb25GbGFnLCBSZWdpc3RlckZpbGUqLCBDYWxsRnJhbWUqKTsKKyNlbmRpZgogCiAgICAgICAg
IHZvaWQgZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqKTsKICAgICAgICAgCkBAIC0yOTQsNiArMzA2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJG
aWxlOwogICAgICAgICAKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKSAvLyBtbGFt
CiAjaWYgRU5BQkxFKExMSU5UKQogICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1h
cHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNv
ZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlE
IGZvciBkZWNvbXBpbGluZwpAQCAtMzAxLDExICszMTQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2Rl
SUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29k
ZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNv
bXBpbGluZwogI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogI2Vu
ZGlmCiAgICAgICAgIGJvb2wgbV9jbGFzc2ljRW5hYmxlZDsKKworICAgICAgICAvLyBtbGFtIEJF
R0lOCisgICAgICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKKyAgICAgICAgLy8gbWxhbSBF
TkQKICAgICB9OwogCiAgICAgLy8gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBvYmplY3QgdGhh
dCB3b3VsZCByZXF1aXJlIHRoaXMgY29udmVyc2lvbiAoV2ViQ29yZSdzIGdsb2JhbCBvYmplY3Qp
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNw
ZWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1ZNSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQgQEAKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgY2hhciogVk1JbnNwZWN0b3I6OmdldFR5cGVOYW1lKEpTVmFsdWUgdmFsdWUp
Cit7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdCBjaGFyKiB2UENUYWdEZWNvZGVT
dHIgPSAiIjsKKyAgICBzd2l0Y2ggKHZhbHVlLnRhZygpKSB7CisgICAgY2FzZSBKU1ZhbHVlOjpJ
bnQzMlRhZzogICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPEludDMyPiI7IGJyZWFrOworICAg
IGNhc2UgSlNWYWx1ZTo6Qm9vbGVhblRhZzogICAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjxCb29s
PiI7IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6TnVsbFRhZzogICAgICAgICAgdlBDVGFnRGVj
b2RlU3RyID0gIjxOdWxsPiI7IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6VW5kZWZpbmVkVGFn
OiAgICAgdlBDVGFnRGVjb2RlU3RyID0gIjxVbmRlZmluZWQ+IjsgYnJlYWs7CisgICAgY2FzZSBK
U1ZhbHVlOjpDZWxsVGFnOiAgICAgICAgICB2UENUYWdEZWNvZGVTdHIgPSAiPENlbGw+IjsgYnJl
YWs7CisgICAgY2FzZSBKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnOiAgICB2UENUYWdEZWNvZGVTdHIg
PSAiPEVtcHR5PiI7IGJyZWFrOworICAgIGNhc2UgSlNWYWx1ZTo6RGVsZXRlZFZhbHVlVGFnOiAg
dlBDVGFnRGVjb2RlU3RyID0gIjxEZWxldGVkPiI7IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHZQQ1RhZ0RlY29kZVN0ciA9ICI8PiI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdlBD
VGFnRGVjb2RlU3RyOworI2Vsc2UKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKSAgICAgICAgICAg
cmV0dXJuICI8SW50MzI+IjsKKyAgICBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgICAgcmV0
dXJuICI8Qm9vbGVhbj4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVsbCgpKSAgICAgICByZXR1
cm4gIjxFbXB0eT4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpICByZXR1cm4g
IjxVbmRlZmluZWQ+IjsKKyAgICBlbHNlIGlmICh2YWx1ZS5pc0NlbGwoKSkgICAgICAgcmV0dXJu
ICI8Q2VsbD4iOworICAgIGVsc2UgaWYgKHZhbHVlLmlzRW1wdHkoKSkgICAgICByZXR1cm4gIjxF
bXB0eT4iOworICAgIC8vIG1sYW0gRklYTUUgPyBlbHNlIGlmIChKU1ZhbHVlOjppc0RlbGV0ZWRW
YWx1ZSh2YWx1ZS4pKSByZXR1cm4gIjxEZWxldGVkPiI7CisgICAgcmV0dXJuICIiOworI2VuZGlm
Cit9CisKK3ZvaWQgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZTAoQ2FsbEZyYW1lKiBmcmFtZSkgewor
ICAgIGR1bXBGcmFtZShmcmFtZSwgMCwgMCwgMCwgMCwgMCk7Cit9CisKKy8vIG1sYW0gQkVHSU4g
dGVzdAoraW50cHRyX3QgbWxhbUludm9rZUNvdW50ID0gMDsKKwordm9pZCBWTUluc3BlY3Rvcjo6
bWxhbUJyZWFrKCkgeworfQorCisvLyBtbGFtIEVORCB0ZXN0Cit2b2lkIFZNSW5zcGVjdG9yOjpk
dW1wRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJlZml4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQqIHBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGZ1bmNOYW1lLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKK3sKKyAg
ICBpbnQgZnJhbWVDb3VudCA9IFZNSW5zcGVjdG9yOjpjb3VudEZyYW1lcyhmcmFtZSk7CisgICAg
aWYgKGZyYW1lQ291bnQgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnN0cnVjdGlvbiog
dlBDID0gMDsKKyAgICBpZiAoZnJhbWUtPmNvZGVCbG9jaygpKQorICAgICAgICB2UEMgPSBmcmFt
ZS0+Y3VycmVudFZQQygpOworCisgICAgI2RlZmluZSBDQVNUIHJlaW50ZXJwcmV0X2Nhc3QKKwor
ICAgIHByaW50ZigiICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIik7IC8vIG1sYW0gVEVTVAorICAgIHByaW50
ZigiPCVsZD4gIiwgKyttbGFtSW52b2tlQ291bnQpOworICAgIGlmIChwcmVmaXgpCisgICAgICAg
IHByaW50ZigiJXMgIiwgcHJlZml4KTsKKyAgICBwcmludGYoIkZSQU1FIFslZF0gJXAgJXMgcGMg
JXAgfCB2cGMgJXAlcyB8IGNiICVwOiVzIHJldFBDICVwOiVzIHNjb3BlICVwOiVzIGNhbGxlckZy
YW1lICVwOiVzIGFyZ2MgJWQ6JXAgY2FsbGVlICVwOiVzIiwKKyAgICAgICAgICAgZnJhbWVDb3Vu
dCwgZnJhbWUsICI8dW5rbm93bj4iLCBwYywKKworICAgICAgICAgICB2UEMsCisgICAgICAgICAg
ICIiLCAvLyBtbGFtIERvIHdlIG5lZWQgdGhpcz8gZ2V0VHlwZU5hbWUoQ0FTVDxpbnRwdHJfdD4o
dlBDKSksCisKKyAgICAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxlOjpDb2Rl
QmxvY2tdLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5cGVOYW1lKGZyYW1lW1JlZ2lzdGVy
RmlsZTo6Q29kZUJsb2NrXS5qc1ZhbHVlKCkpLAorCisgICAgICAgICAgIENBU1Q8dm9pZCo+KGZy
YW1lW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnBheWxvYWQoKSksCisgICAgICAgICAgIGdldFR5
cGVOYW1lKGZyYW1lW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLmpzVmFsdWUoKSksCisKKyAgICAg
ICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXS5wYXlsb2Fk
KCkpLAorICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hh
aW5dLmpzVmFsdWUoKSksCisKKyAgICAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbUmVnaXN0ZXJG
aWxlOjpDYWxsZXJGcmFtZV0ucGF5bG9hZCgpKSwKKyAgICAgICAgICAgZ2V0VHlwZU5hbWUoZnJh
bWVbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0uanNWYWx1ZSgpKSwKKworICAgICAgICAgICBm
cmFtZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSwKKyAgICAgICAgICAg
Ly9nZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLmpzVmFsdWUo
KSksCisgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudF0udGFnKCkpLAorCisgICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1l
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5wYXlsb2FkKCkpLAorICAgICAgICAgICBnZXRUeXBlTmFt
ZShmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlZV0uanNWYWx1ZSgpKSk7CisKKyAgICBpZiAoZnVu
Y05hbWUgfHwgZmlsZSB8fCAobGluZSA+PSAwKSkgeworICAgICAgICBwcmludGYoIiBAIik7Cisg
ICAgICAgIGlmIChmdW5jTmFtZSkKKyAgICAgICAgICAgIHByaW50ZigiICVzIiwgZnVuY05hbWUp
OworICAgICAgICBpZiAoZmlsZSkKKyAgICAgICAgICAgIHByaW50ZigiICVzIiwgZmlsZSk7Cisg
ICAgICAgIGlmIChsaW5lID49IDApCisgICAgICAgICAgICBwcmludGYoIjolZCIsIGxpbmUpOwor
ICAgIH0KKyAgICBwcmludGYoIlxuIik7CisKKyAgICBwcmludGYoIiAgID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIp
OyAvLyBtbGFtIFRFU1QKKworICAgICN1bmRlZiBDQVNUCisKKyAgICAvLyBtbGFtIEJFR0lOIHRl
c3QKKyAgICBpZiAobWxhbUludm9rZUNvdW50ID09IDE2KSB7CisgICAgICAgIG1sYW1CcmVhaygp
OworICAgIH0KKyAgICAvLyBtbGFtIEVORCB0ZXN0Cit9CisKK2ludCBWTUluc3BlY3Rvcjo6Y291
bnRGcmFtZXMoQ2FsbEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpbnQgY291bnQgPSAtMTsKKyAgICAv
LyBtbGFtIERFQlVHIEFTU0VSVCghIWZyYW1lKTsKKyAgICAvLyBtbGFtIEZJWE1FOiBFdmVudHVh
bGx5LCB3ZSBzaG91bGQgY2hhbmdlIHRoaXMgc28gdGhhdCB3ZSBhbGxvdyB0aGUgSG9zdCBmbGFn
IHRvCisgICAgLy8gYmUgc2V0IGJ1dCB3ZSBnZXQgdGhlIGNhbGxlciB3aXRoIHRoZSBIb3N0IGZs
YWcgbWFza2VkIG91dCwgYW5kIG9ubHkgdGVybWluYXRlCisgICAgLy8gd2hlbiB0aGUgY2FsbGVy
IEZyYW1lIGlzIE5VTEwuCisgICAgd2hpbGUgKGZyYW1lICYmICFmcmFtZS0+aGFzSG9zdENhbGxG
cmFtZUZsYWcoKSkgeworICAgICAgICBjb3VudCsrOworICAgICAgICBmcmFtZSA9IGZyYW1lLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICAvLyBtbGFtIERFQlVHIEFTU0VSVCghIWZyYW1lKTsKKyAg
ICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitjb25zdCBjaGFyKiBWTUluc3BlY3Rvcjo6Z2V0
RnVuY3Rpb25OYW1lKEpTRnVuY3Rpb24qIGZ1bmMsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBV
U3RyaW5nIG5hbWUgPSBmdW5jLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoZXhlYyk7CisgICAgY29u
c3QgY2hhciogbmFtZVN0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUuY2hh
cmFjdGVyczgoKSk7CisgICAgaWYgKG5hbWVTdHIpCisgICAgICAgIHJldHVybiBuYW1lU3RyOwor
ICAgIHJldHVybiAiPHVua25vd24+IjsKK30KKworCit2b2lkIFZNSW5zcGVjdG9yOjpkdW1wU3Rh
Y2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgaW50IGRlcHRoID0gMDsKKyAgICBwcmlu
dGYoIlN0YWNrIHN0YXJ0aW5nIGZyb20gZnJhbWUgJXBcbiIsIGNhbGxGcmFtZSk7CisgICAgd2hp
bGUgKGNhbGxGcmFtZSkgeworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKKyAgICAgICAgLy9pZiAoZnVuYykgeworICAg
ICAgICAgICAgLy9jb25zdCBjaGFyKiBmdW5jTmFtZSA9IGdldEZ1bmN0aW9uTmFtZShmdW5jLCBj
YWxsRnJhbWUpOworICAgICAgICAgICAgLy9wcmludGYoIiAgWyVkXSAlcyBAJXAgfCBmcmFtZSAl
cFxuIiwgZGVwdGgrKywgZnVuY05hbWUsIGZ1bmMsIGNhbGxGcmFtZSk7CisgICAgICAgICAgICAv
L30gZWxzZSB7CisgICAgICAgICAgICBwcmludGYoIiAgWyVkXSA8bnVsbD4gQCVwIHwgZnJhbWUg
JXBcbiIsIGRlcHRoKyssIGZ1bmMsIGNhbGxGcmFtZSk7CisgICAgICAgICAgICAvL30KKyAgICAg
ICAgLy8gZHVtcFJlZ2lzdGVycyhjYWxsRnJhbWUpOworICAgICAgICBjYWxsRnJhbWUgPSBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lKCk7CisgICAgfQorICAgIHByaW50ZigiRU5EIG9mIHN0YWNrIGZy
b20gZnJhbWUgJXBcbiIsIGNhbGxGcmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3Iu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUlu
c3BlY3Rvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACisjaWZuZGVmIFZNSW5zcGVj
dG9yX2gKKyNkZWZpbmUgVk1JbnNwZWN0b3JfaAorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk1JbnNwZWN0b3Igewor
cHVibGljOiAgICAKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogZ2V0
VHlwZU5hbWUoSlNWYWx1ZSB2YWx1ZSk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZHVtcEZyYW1lMChDYWxsRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkdW1wRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJlZml4
ID0gMCwgdm9pZCogcGMgPSAwLCBjb25zdCBjaGFyKiBmdW5jTmFtZSA9IDAsIGNvbnN0IGNoYXIq
IGZpbGUgPSAwLCBpbnQgbGluZSA9IC0xKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUg
aW50IGNvdW50RnJhbWVzKENhbGxGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyBKU19FWFBPUlRf
UFJJVkFURSBjb25zdCBjaGFyKiBnZXRGdW5jdGlvbk5hbWUoSlNGdW5jdGlvbiogZnVuYywgRXhl
Y1N0YXRlKiBleGVjKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wU3Rh
Y2soQ2FsbEZyYW1lKik7CisKKyAgICAvLyBtbGFtIEJFR0lOIHRlc3QKKyAgICBzdGF0aWMgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBtbGFtQnJlYWsoKTsKKyAgICAvLyBtbGFtIEVORCB0ZXN0Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFZNSW5zcGVjdG9yLmgKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShy
ZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogLy8gVW5mb3J0dW5h
dGVseSB0aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJy
ZW50bHkgb25seSB1c2VkCiAvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0
cmljdGVkIHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCiAvLyBwcm9iYWJseSBmaXgg
dGhhdCBhdCBzb21lIHBvaW50LgotI2lmIENPTVBJTEVSKEdDQykKKyNpZiBDT01QSUxFUihHQ0Mp
ICYmIEVOQUJMRShKSVQpCiAKICNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAogI2Rl
ZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aWZuZGVmIEpJVENvZGVfaAogI2RlZmluZSBKSVRDb2RlX2gKIAotI2lmIEVOQUJMRShKSVQpCisj
aWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgCiAgICAgY2xhc3Mg
SklUQ29kZSB7Ci0jaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJ
TlRfQ19MT09QKQogICAgICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBDb2RlUmVm
OwogICAgICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwogI2Vsc2UK
QEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gaml0
VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CiAgICAg
ICAgIH0KICAgICAgICAgCi0jaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFC
TEUoTExJTlRfQ19MT09QKQogICAgICAgICBKSVRDb2RlKCkKICAgICAgICAgICAgIDogbV9qaXRU
eXBlKE5vbmUpCiAgICAgICAgIHsKQEAgLTEyNywxMiArMTI3LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHQpOwogICAg
ICAgICB9CiAKKyNpZiBFTkFCTEUoSklUKQogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlIQog
ICAgICAgICBpbmxpbmUgSlNWYWx1ZSBleGVjdXRlKFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxl
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICAg
ICB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjdGlUcmFt
cG9saW5lKG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWdpc3RlckZpbGUsIGNh
bGxGcmFtZSwgMCwgMCwgZ2xvYmFsRGF0YSkpOwogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERh
dGEtPmV4Y2VwdGlvbiA/IGpzTnVsbCgpIDogcmVzdWx0OwogICAgICAgICB9CisjZW5kaWYKIAog
ICAgICAgICB2b2lkKiBzdGFydCgpIGNvbnN0CiAgICAgICAgIHsKQEAgLTE4Miw3ICsxODQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBDb2RlUmVmIG1fcmVmOwogICAgICAgICBKSVRU
eXBlIG1faml0VHlwZTsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2VuZGlmIC8vIEVOQUJMRShK
SVQpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgfTsKIAogfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTI1NTA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsMzAgKzMxLDYzIEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiVk1J
bnNwZWN0b3IuaCIgLy8gbWxhbSBURVNUIG9ubHkKIAotI2lmIEVOQUJMRShKSVQpCisjaWYgRU5B
QkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEV4
Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhl
Y1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIHZQQ0lu
ZGV4KQogewogICAgIEFTU0VSVChleGNlcHRpb25WYWx1ZSk7CisgICAgI2lmIG1sYW1fUFJJTlRG
CisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgICBtbGFtIDo6IGdlbmVy
aWNUaHJvdyBCRUZPUkUgaGFuZGxlcjogIiwgKHZvaWQqKXZQQ0luZGV4LCBfX0ZJTEVfXywgX19G
VU5DVElPTl9fLF9fTElORV9fKTsKKyAgICAjZW5kaWYKIAogICAgIGdsb2JhbERhdGEtPmV4Y2Vw
dGlvbiA9IEpTVmFsdWUoKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGdsb2JhbERhdGEt
PmludGVycHJldGVyLT50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCB2
UENJbmRleCk7IC8vIFRoaXMgbWF5IHVwZGF0ZSBjYWxsRnJhbWUgJiBleGNlcHRpb25WYWx1ZSEK
ICAgICBnbG9iYWxEYXRhLT5leGNlcHRpb24gPSBleGNlcHRpb25WYWx1ZTsKKyAgICAjaWYgbWxh
bV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAgIG1sYW0g
OjogZ2VuZXJpY1Rocm93IEFGVEVSIGhhbmRsZXI6ICIsICh2b2lkKil2UENJbmRleCwgX19GVU5D
VElPTl9fLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgogCiAgICAgdm9pZCogY2F0
Y2hSb3V0aW5lOwogICAgIEluc3RydWN0aW9uKiBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAwOwog
ICAgIGlmIChoYW5kbGVyKSB7Ci0gICAgICAgIGNhdGNoUm91dGluZSA9IGhhbmRsZXItPm5hdGl2
ZUNvZGUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgY2F0Y2hQQ0ZvckludGVycHJldGVy
ID0gJmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2hhbmRsZXItPnRhcmdl
dF07Ci0gICAgfSBlbHNlCi0gICAgICAgIGNhdGNoUm91dGluZSA9IEZ1bmN0aW9uUHRyKGN0aU9w
VGhyb3dOb3RDYXVnaHQpLnZhbHVlKCk7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAg
ICAgLy8gSGFuZGxlckluZm8ubmF0aXZlQ29kZSBpcyBvbmx5IGluc3RhbnRpYXRlZCBhbmQgaW5p
dGlhbGl6ZWQgd2hlbgorICAgICAgICAvLyB0aGUgSklUIGlzIGluIHVzZWQuICBIZW5jZSwgd2Ug
Y2FuJ3QgcmVseSBvbiBpdCBmb3IgdGhlIEMgbG9vcCwKKyAgICAgICAgLy8gYnV0IGhhdmUgdG8g
Y29tcHV0ZSB0aGUgYnl0ZWNvZGUgUEMgb3Vyc2VsdmVzLgorICAgICAgICBjYXRjaFJvdXRpbmUg
PSByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uKj4oY2F0Y2hQQ0ZvckludGVycHJldGVyLT51
Lm9wY29kZSk7CisjZWxzZQorICAgICAgICBjYXRjaFJvdXRpbmUgPSBoYW5kbGVyLT5uYXRpdmVD
b2RlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZW5kaWYKKyAgICAgICAgLy8gbWxhbSBCRUdJTgor
ICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAgICAgICAgcHJpbnRmKCJcbiAgICBtbGFtIDo6IGdl
bmVyaWNUaHJvdygpIFNFVCBoYW5kbGVyICVwIHwgY2F0Y2hQQ0ZvckludGVycHJldGVyID0gJXAg
Y2F0Y2hSb3V0aW5lICVwXG4iLCBoYW5kbGVyLCBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIsIGNhdGNo
Um91dGluZSk7CisgICAgICAgICNlbmRpZiAvLyBtbGFtX1BSSU5URgorICAgICAgICAvLyBtbGFt
IEVORAorICAgIH0gZWxzZSB7CisgICAgICAgIGNhdGNoUm91dGluZSA9IEZ1bmN0aW9uUHRyKExM
SW50OjpEYXRhOjpnZXRDb2RlUHRyKGN0aU9wVGhyb3dOb3RDYXVnaHQpKS52YWx1ZSgpOworICAg
ICAgICAvLyBtbGFtIEJFR0lOCisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmlu
dGYoIlxuICAgIG1sYW0gOjogZ2VuZXJpY1Rocm93KCkgU0VUIE5PIGhhbmRsZXIgfCBjYXRjaFJv
dXRpbmUgPSAlcFxuIiwgY2F0Y2hSb3V0aW5lKTsKKyAgICAgICAgI2VuZGlmIC8vIG1sYW1fUFJJ
TlRGCisgICAgICAgIC8vIG1sYW0gRU5ECisgICAgfQogICAgIAogICAgIGdsb2JhbERhdGEtPmNh
bGxGcmFtZUZvclRocm93ID0gY2FsbEZyYW1lOworICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZN
SW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1lLCAiICAgbWxhbSA6OiBnZW5lcmljVGhyb3cg
VEFSR0VUIGNhbGxGcmFtZTogIiwgKHZvaWQqKXZQQ0luZGV4LCBfX0ZVTkNUSU9OX18sIF9fRklM
RV9fLCBfX0xJTkVfXyk7CisgICAgI2VuZGlmCiAgICAgZ2xvYmFsRGF0YS0+dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3cgPSBjYXRjaFJvdXRpbmU7CiAgICAgZ2xvYmFsRGF0YS0+dGFyZ2V0SW50ZXJw
cmV0ZXJQQ0ZvclRocm93ID0gY2F0Y2hQQ0ZvckludGVycHJldGVyOworICAgIC8vIG1sYW0gQkVH
SU4KKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIlxuICAgIG1sYW0gOjogZ2VuZXJp
Y1Rocm93KCkgY2F0Y2hSb3V0aW5lICVwIGNhdGNoUENGb3JJbnRlcnByZXRlciA9ICVwXG4iLCBj
YXRjaFJvdXRpbmUsIGNhdGNoUENGb3JJbnRlcnByZXRlcik7CisgICAgI2VuZGlmIC8vIG1sYW1f
UFJJTlRGCisgICAgLy8gbWxhbSBFTkQKICAgICAKICAgICBBU1NFUlQoY2F0Y2hSb3V0aW5lKTsK
ICAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIgPSB7IGNhdGNoUm91dGluZSwg
Y2FsbEZyYW1lIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAKLSNpZiBFTkFC
TEUoQVNTRU1CTEVSKQorI2lmIEVOQUJMRShBU1NFTUJMRVIpIHx8IEVOQUJMRShMTElOVF9DX0xP
T1ApCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MCw3ICs1MCw3IEBAIEV4Y2VwdGlvbkhhbmRs
ZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiwKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRp
ZgorI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCiAK
ICNlbmRpZiAvLyBKSVRFeGNlcHRpb25zX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDEzIEBAIGV4dGVybiAi
QyIgewogICAgIHZvaWQqIEpJVF9TVFVCIGN0aV92bV90aHJvdyhTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwogfSAvLyBleHRlcm4gIkMiCiAK
LSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2VsaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKworc3Ry
dWN0IEpJVFN0YWNrRnJhbWUgeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YTsKK307CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lu
bGluZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShKSVQpCisKIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTSW50ZXJmYWNlSklUIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICBwdWJsaWM6CkBAIC0zMzEsNiArMzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmly
dHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAgIH0KIAotfQorfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjZW5kaWYgLy8gSlNJ
bnRlcmZhY2VKSVRfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsNDggQEAKICNpbmNsdWRl
ICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKLSNpbmNs
dWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxMSW50
T3Bjb2RlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCisvLyBtbGFt
IEJFR0lOCitib29sIERhdGE6OnNfaXNJbml0aWFsaXplZCA9IGZhbHNlOworSW5zdHJ1Y3Rpb24q
IERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gMDsKK0xMSW50T3Bjb2RlKiBEYXRhOjpz
X29wY29kZU1hcCA9IDA7CisvLyBtbGFtIEVORAorCit2b2lkIERhdGE6OmluaXRpYWxpemUoKSB7
CisgICAgaWYgKCFzX2lzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgLy9wcmludGYoIlxuXG4gICAg
IERhdGE6OmluaXRpYWxpemUoKVxuXG4iKTsKKyAgICAgICAgc19leGNlcHRpb25JbnN0cnVjdGlv
bnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV07CisgICAgICAgIHNfb3Bj
b2RlTWFwID0gbmV3IExMSW50T3Bjb2RlW251bUxMSW50T3Bjb2RlSURzXTsKKworICAgICAgICAj
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemVM
TEludENMb29wKCk7CisKKyAgICAgICAgI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAg
ICAgICAgICAgc19leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSk7CisgICAg
ICAgICNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBzX29wY29kZU1hcFtvcGNv
ZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisgICAgICAgICN1bmRlZiBPUENPREVf
RU5UUlkKKyAgICAgICAgc19pc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgI2VuZGlmIC8v
ICFFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIH0KK30KKwogRGF0YTo6RGF0YSgpCisvKiBtbGFt
IEJFR0lOIG9yaWcKICAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlv
blttYXhPcGNvZGVMZW5ndGggKyAxXSkKLSAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVt
T3Bjb2RlSURzXSkKKyAgICAgIC8vIG1sYW0gb3JpZyAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVb
bnVtT3Bjb2RlSURzXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtTExJbnRPcGNv
ZGVJRHNdKQorKi8KIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCAr
IDE7ICsraSkKLSAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZSk7Ci0jZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bj
b2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKLSAgICBGT1JfRUFD
SF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKLSN1bmRlZiBPUENPREVfRU5UUlkKKyAgICAvLyBt
bGFtIEJFR0lOCisgICAgLy9wcmludGYoIlxuXG4gICAgIERhdGE6OkRhdGEoKVxuXG4iKTsKKyAg
ICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICAvLyBtbGFtIEVORAogfQogCiAjaWYgQ09N
UElMRVIoQ0xBTkcpCkBAIC0xMjIsOCArMTUwLDEwIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2Vy
dGlvbnMoSlNHbG9iYWxEYXQKIAogRGF0YTo6fkRhdGEoKQogeworICAgIC8qIG1sYW0gQkVHSU4g
b3JpZwogICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwogICAgIGRlbGV0ZVtd
IG1fb3Bjb2RlTWFwOworICAgICovCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMTI1
NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw5IEBACiAjZGVmaW5lIExMSW50RGF0YV9oCiAKICNpbmNsdWRl
ICJPcGNvZGUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNDQsMTggKzQ2LDc4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHBl
cmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYpOwogICAgIAotICAgIEluc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0
aW9uczsKKyAgICAgICAgLy8gbWxhbSBvcmlnIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKKyAgICAgICAgcmV0dXJuIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwogICAgIH0KICAgICAK
LSAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgc3RhdGljIExMSW50T3Bjb2RlKiBvcGNvZGVN
YXAoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgICAgICAvLyBtbGFt
IHJldHVybiBtX29wY29kZU1hcDsKKyAgICAgICAgcmV0dXJuIHNfb3Bjb2RlTWFwOwogICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKworICAgIHN0YXRpYyBib29sIGlzSW5p
dGlhbGl6ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNfaXNJbml0aWFsaXplZDsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBzZXRJc0luaXRpYWxpemVkKCkKKyAgICB7CisgICAgICAgIHNf
aXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgc3RhdGljIExMSW50T3Bjb2RlIGdl
dE9wY29kZShMTEludE9wY29kZUlEIGlkKQorICAgIHsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19PUENPREVTKQorICAgICAgICByZXR1cm4gc19vcGNvZGVNYXBbaWRdOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PExMSW50T3Bjb2RlPihpZCk7CisjZW5kaWYKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBMTEludE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQg
aWQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0T3Bjb2RlKHN0YXRpY19jYXN0PExMSW50T3Bj
b2RlSUQ+KGlkKSk7CisgICAgfQorCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkKiBnZXRDb2RlUHRyKExMSW50T3Bjb2RlSUQgaWQpCisgICAg
eworICAgICAgICAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZShpZCkpOworICAgICAgICAjZWxzZQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKGlkKSk7CisgICAg
ICAgICNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCog
Z2V0Q29kZVB0cih2b2lkIGdsdWVIZWxwZXIoKSkKKyAgICB7CisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnbHVlSGVscGVyKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQqIGdldENvZGVQdHIoT3Bjb2RlSUQgaWQpCisgICAgewor
ICAgICAgICAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZShpZCkpOworICAgICAgICAjZWxzZQorICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKGlkKSk7CisgICAgICAg
ICNlbmRpZgorICAgIH0KKwogcHJpdmF0ZToKKyAgICAvKiBtbGFtIEJFR0lOIG9yaWcKICAgICBJ
bnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CiAgICAgT3Bjb2RlKiBtX29wY29k
ZU1hcDsKKyAgICAqLworICAgIHN0YXRpYyBib29sIHNfaXNJbml0aWFsaXplZDsKKyAgICBzdGF0
aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBMTElu
dE9wY29kZSogc19vcGNvZGVNYXA7CisgICAgLy8gbWxhbSBFTkQgKi8KIH07CiAjZWxzZSAvLyBF
TkFCTEUoTExJTlQpCiAKQEAgLTY4LDEzICsxMzAsMTMgQEAgY2xhc3MgRGF0YSB7CiBwdWJsaWM6
CiAgICAgdm9pZCBwZXJmb3JtQXNzZXJ0aW9ucyhKU0dsb2JhbERhdGEmKSB7IH0KIAotICAgIElu
c3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHN0YXRpYyBJbnN0cnVjdGlv
biogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCi0gICAgT3Bjb2RlKiBvcGNv
ZGVNYXAoKQorICAgIHN0YXRpYyBPcGNvZGUqIG9wY29kZU1hcCgpCiAgICAgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAx
MjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgdm9pZCBnZXRGdW5jdGlvbkVudHJ5
cG9pbnQoSlNHbG9iYWxEYXRhJgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorI2lmIEVO
QUJMRShKSVQpCiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgaml0Q29k
ZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKICAgICAgICAgYXJpdHlD
aGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKTsKQEAgLTYxLDYgKzYyLDcgQEAgdm9pZCBnZXRGdW5jdGlvbkVu
dHJ5cG9pbnQoSlNHbG9iYWxEYXRhJgogICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisjZW5kaWYKIH0KIAog
dm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUm
IGppdENvZGUpCkBAIC02OSw4ICs3MSw5IEBAIHZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiBnbG8KICAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorI2lmIEVOQUJM
RShKSVQpICAgIAogICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihl
dmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworI2Vu
ZGlmCiB9CiAKIHZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKSVRDb2RlJiBqaXRDb2RlKQpAQCAtNzksOCArODIsOSBAQCB2b2lkIGdldFByb2dyYW1F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgCiAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9n
dWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKKyNpZiBFTkFCTEUoSklUKQogICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEu
Z2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspOworI2VuZGlmCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJ
KHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxNCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorc3RhdGljIHZvaWQgZml4dXBQQ2ZvckV4Y2Vw
dGlvbklmTmVlZGVkKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVCghIWNvZGVCbG9jayk7CisgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgIGV4ZWMtPnNldEN1cnJlbnRW
UEMoY29kZUJsb2NrLT5hZGp1c3RQQ0lmQXRDYWxsU2l0ZShwYykpOworfQorCiB2b2lkIGludGVy
cHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcGMp
CiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
QEAgLTQ0LDYgKzUyLDcgQEAgdm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRl
KgogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhj
ZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwogI2Vu
ZGlmCisgICAgZml4dXBQQ2ZvckV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMpOwogICAgIGdlbmVyaWNU
aHJvdygKICAgICAgICAgZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAog
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgcGMpKTsKQEAg
LTYxLDYgKzcwLDcgQEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleAog
I2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0
aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlw
dGlvbigpKTsKICNlbmRpZgorICAgIGZpeHVwUENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsK
ICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
LCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAK
ICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygp
OwpAQCAtNzMsOSArODMsMTAgQEAgdm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cgogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVz
Y3JpcHRpb24oKSk7CiAjZW5kaWYKKyAgICBmaXh1cFBDZm9yRXhjZXB0aW9uSWZOZWVkZWQoZXhl
Yyk7CiAgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2Vw
dGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Ci0g
ICAgCi0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19j
YWxsX3RyYW1wb2xpbmUpOworCisgICAgcmV0dXJuIExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKGxs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTkgKzMxLDI2IEBACiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgQ1BVKFg4NikKKworI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCisjZGVmaW5lIE9GRkxJTkVfQVNNX0NfTE9PUCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9DX0xPT1AgMAorI2VuZGlmCisKKyNpZiBDUFUoWDg2KSAmJiAhRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKICNlbHNlCiAjZGVmaW5lIE9GRkxJTkVf
QVNNX1g4NiAwCiAjZW5kaWYKIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQVShBUk1fVEhV
TUIyKSAmJiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcg
MQogI2Vsc2UKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAogI2VuZGlmCiAKLSNpZiBDUFUo
WDg2XzY0KQorI2lmIENQVShYODZfNjQpICYmICFFTkFCTEUoTExJTlRfQ19MT09QKQogI2RlZmlu
ZSBPRkZMSU5FX0FTTV9YODZfNjQgMQogI2Vsc2UKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0
IDAKQEAgLTkxLDYgKzk4LDEwIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX1ZBTFVFX1BST0ZJTEVS
IDAKICNlbmRpZgogCisvKiBtbGFtIFRSWSBtb3ZpbmcgdG8gTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAKKworI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiAvLyBUaGVzZSBhcmUgZm9yIGJ1aWxk
aW5nIGFuIGludGVycHJldGVyIGZyb20gZ2VuZXJhdGVkIGFzc2VtYmx5IGNvZGU6CiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0JFR0lOICAgYXNtICgKICNkZWZpbmUgT0ZGTElORV9BU01fRU5EICAgICAp
OwpAQCAtMTA4LDcgKzExOSwyMSBAQAogICAgIEhJREVfU1lNQk9MKGxhYmVsKSAiXG4iICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCiAjZW5kaWYK
KyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wY29kZSkgT0ZGTElORV9BU01fR0xP
QkFMX0xBQkVMKGxsaW50XyMjb3Bjb2RlKQogCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMKGxhYmVsKSAgIExPQ0FMX0xBQkVMX1NUUklORyhsYWJlbCkgIjpcbiIKIAorI2Vsc2UgLy8g
RU5BQkxFKExMSU5UX0NfTE9PUCkKKworLy8gVGhlc2UgYXJlIGZvciBidWlsZGluZyBhIEMgTG9v
cCBpbnRlcnByZXRlcjoKKyNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4KKyNkZWZpbmUgT0ZGTElO
RV9BU01fRU5ECisjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9MQUJFTChvcGNvZGUpIERFRklO
RV9PUENPREUob3Bjb2RlKQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwp
ICBsYWJlbDoKKyNkZWZpbmUgT0ZGTElORV9BU01fTE9DQUxfTEFCRUwobGFiZWwpICAgbGFiZWw6
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorCisvLyBtbGFtIEVORCB0cnkgbW92
aW5nIHRvIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovCisKICNlbmRpZiAvLyBMTEludE9mZmxp
bmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRl
ICJWTUluc3BlY3Rvci5oIiAvLyBtbGFtCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYxLDcgKzYyLDggQEAgcHVibGljOgogCiBjb25zdCB1
bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCiB7Ci0jaWYgRU5BQkxFKEpJ
VCkKKy8vIG1sYW0gI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExM
SU5UKQogLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVf
b2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0
YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29t
YmluYXRpb24gb2YKIC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRl
IGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T3Bjb2RlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRPcGNvZGVfaAorI2RlZmluZSBMTEludE9wY29kZV9oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUg
Ik9wY29kZS5oIgorCisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorCisjZGVmaW5lIEZPUl9F
QUNIX0xMSU5UX05PSklUX05BVElWRV9IRUxQRVIodikgXAorICAgIHYoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgXAorICAgIHYoY3RpT3BUaHJvd05vdENhdWdodCkKKworI2Vsc2UgLy8gIUVOQUJM
RShMTElOVF9DX0xPT1ApCisKKyNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfTk9KSVRfTkFUSVZFX0hF
TFBFUih2KSBcCisgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLiBVc2UgdGhlIEpJVCBpbXBsIGlu
c3RlYWQuCisKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworCisjZGVmaW5lIEZP
Ul9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIodikgXAorICAgIEZPUl9FQUNIX0xMSU5UX05PSklU
X05BVElWRV9IRUxQRVIodikgXAorICAgIFwKKyAgICB2KGxsaW50X2JlZ2luKSBcCisgICAgXAor
ICAgIHYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkgXAorICAgIHYobGxpbnRfZXZhbF9wcm9sb2d1
ZSkgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpIFwKKyAgICB2KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpIFwKKyAgICB2KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSBcCisgICAgdihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkg
XAorICAgIHYobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkgXAorICAgIHYo
bGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkgXAorICAgIFwKKyAgICAvKiBOYXRp
dmUgY2FsbCB0cmFtcG9saW5lcyAqLyBcCisgICAgdihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9s
aW5lKSBcCisgICAgdihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpIFwKKyAgICBc
CisgICAgdihsbGludF9lbmQpCisKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisKKyAgICAv
LyBEZWZpbmUgcHNldWRvIG9wY29kZXMgZm9yIHRoZSBDIGxvb3A6CisgICAgI2RlZmluZSBPUENP
REVfSURfRU5VTShfX29wY29kZSwgbGVuZ3RoKSBfX29wY29kZSwKKyAgICAjZGVmaW5lIE9QQ09E
RV9QU0VVRE9fSURfRU5VTShfX29wY29kZSkgX19vcGNvZGUsCisKKyAgICB0eXBlZGVmIGVudW0g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVSKE9QQ09ERV9QU0VVRE9fSURf
RU5VTSkgICAgIFwKKyAgICB9IExMSW50T3Bjb2RlSUQ7CisKKyAgICAjdW5kZWYgT1BDT0RFX0lE
X0VOVU0KKyAgICAjdW5kZWYgT1BDT0RFX1BTRVVET19JRF9FTlVNCisKKyAgICAjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICB0eXBlZGVmIEpTQzo6T3Bjb2RlIExMSW50T3Bj
b2RlOworICAgICNlbHNlCisgICAgdHlwZWRlZiBMTEludE9wY29kZUlEIExMSW50T3Bjb2RlOwor
ICAgICNlbmRpZgorCisgICAgY29uc3QgaW50IG51bUxMSW50T3Bjb2RlSURzID0gbGxpbnRfZW5k
ICsgMTsKKyAgICBjb25zdCBMTEludE9wY29kZUlEIGxsaW50X3VudXNlZCA9IGxsaW50X2VuZDsK
KworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKKyAgICAvLyBEZWZpbmUgcHNldWRv
IG9wY29kZXMgZm9yIHRoZSBDIGxvb3A6CisgICAgI2RlZmluZSBPUENPREVfSURfRU5VTShfX29w
Y29kZSwgbGVuZ3RoKSBfX29wY29kZSwKKyAgICB0eXBlZGVmIGVudW0geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9JRChPUENPREVfSURfRU5VTSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gTExJbnRP
cGNvZGVJRDsKKyAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KKworICAgIHR5cGVkZWYgSlNDOjpP
cGNvZGUgTExJbnRPcGNvZGU7CisgICAgY29uc3QgaW50IG51bUxMSW50T3Bjb2RlSURzID0gSlND
OjpudW1PcGNvZGVJRHM7CisKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50T3Bjb2RlX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCisjaW5jbHVkZSAiUHJvZmlsZXIuaCIgLy8gbWxhbQorI2luY2x1ZGUgIlZN
SW5zcGVjdG9yLmgiIC8vIG1sYW0KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CiAKQEAgLTIzMSw5ICsyMzMsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNo
ZWNrX2ZvCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogewotICAgIGRhdGFMb2coIiVw
IC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBzY29wZSAlcFxuIiwKKyAgICBkYXRhTG9nKCIl
cCB2cGMgJXA6IGV4ZWN1dGluZyAlcCBiYyMlenUsICVzLCBzY29wZSAlcFxuIiwKICAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLAotICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4
ZWMsIHBjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAogICAgICAgICAgICAgb3Bjb2RlTmFt
ZXNbZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSldLAogICAgICAgICAgICAgZXhlYy0+c2NvcGVDaGFpbigpKTsKQEAgLTI1NSw2ICsyNTcs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNlKQogICAgIExMSU5UX0VORF9J
TVBMKCk7CiB9CiAKKyNpZiBFTkFCTEUoSklUKQogaW5saW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJ
VHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KQEAgLTM5MCw2ICszOTMsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQogICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRB
bnl0aW1lU29vbigpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9CisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAogTExJTlRfU0xPV19QQVRIX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKIHsKQEAg
LTQwMyw2ICs0MDcsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNr
CiAjZW5kaWYKICAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygp
LT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWdsb2JhbERhdGEuaW50
ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNv
ZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAgICAjaWYgbWxhbV9Q
UklOVEYKKyAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShleGVjLCAiICAgKioqIG1sYW0g
bGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjazogIik7CisgICAgICAgICNlbmRpZgogICAgICAgICBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDID0gZXhlYy0+cmV0dXJuUEMoKTsKICAgICAgICAgZXhl
YyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0g
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwpAQCAtNDIxLDggKzQyOCwxNCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0CiAgICAgICAgIGV4ZWMgPSBleGVj
LT5jYWxsZXJGcmFtZSgpOwogICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKICAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVy
KGV4ZWMsIHJldHVyblBDKTsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgICAgIFZNSW5z
cGVjdG9yOjpkdW1wRnJhbWUoZXhlYywgIiAqKiogU3RhY2tPdmVyZmxvdyAoaW4gc2xvd19wYXRo
X2NhbGxfYXJpdHlDaGVjaykiKTsKKyAgICAgICAgI2VuZGlmCiAgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhl
Yyk7CiAgICAgfQorICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJh
bWUobmV3RXhlYywgIiAqKiogTm9ybWFsIChpbiBzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKSIp
OworICAgICNlbmRpZgogICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7CiB9CiAKQEAg
LTYzNyw2ICs2NTAsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX211bCkKICAg
ICBMTElOVF9CRUdJTigpOwogICAgIGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYyk7CiAgICAgZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmludGYoIlxuID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworICAgIHByaW50
ZigiIGxsaW50IHNsb3dfcGF0aF9tdWwgJWUgKiAlZSA9PT4gJWVcbiIsIGEsIGIsIGEqYik7Cisg
ICAgcHJpbnRmKCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PVxuIik7CisgICAgI2VuZGlmCiAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgKiBiKSk7CiB9
CiAKQEAgLTc3OCw3ICs3OTYsOSBAQCBzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNT
dGF0ZSogCiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CiAgICAg
aW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgCisKKyAgICAvL3N0YXRpYyBpbnQgbWxh
bUNvdW50ID0gMDsKKyAgICAvL3ByaW50ZigiXG5cbiAqKiogWyVkXSBzdHJ1Y3R1cmUgJXAsIGds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCkgJXBcblxuIiwgKyttbGFtQ291bnQsIHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUs
IHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICAKICAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CkBAIC03OTIs
NyArODEyLDEyIEBAIHN0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhlY1N0YXRlKiAKICAg
ICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOwogICAgICAgICAgICAgcGNbNF0gPSBz
bG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICAvKiBtbGFt
CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBpZiAocmVzdWx0LmlzSW50MzIoKSkK
KyAgICAgICAgICAgIHByaW50ZigiICAgbWxhbSBTTE9XIHJlc29sdmVHbG9iYWwgfCBjb2RlQmxv
Y2sgJXAgb2JqICVwIHJlc3VsdCA9ICVkXG4iLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgcmVz
dWx0LmFzSW50MzIoKSk7CisgICAgICAgICNlbmRpZgorICAgICAgICAvLyBtbGFtICovCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtODk3LDEwICs5MjIsMTAgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2dldF9ieV9pZCk7CisgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZz
ZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRf
b3V0X29mX2xpbmUpOwogICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTMwLDEyICs5NTUsMzQgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgIAogICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAg
ICBpZiAocGNbOF0udS5vcGVyYW5kKSB7CiAgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1
dERpcmVjdChnbG9iYWxEYXRhLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3Qp
OwotICAgIGVsc2UKKyAgICAgICAgLyogbWxhbQorICAgICAgICAjaWYgbWxhbV9QUklOVEYKKyAg
ICAgICAgaWYgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLmlzSW50MzIoKSkgeworICAgICAgICAg
ICAgLy8gcHJpbnRmKCIgICBtbGFtIFBBVEhfMSBzbG93X3BhdGhfcHV0X2J5X2lkIHwgY29kZWJs
b2NrICVwIHJlc3VsdCA9ICVkXG4iLCBjb2RlQmxvY2ssIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LmFzSW50MzIoKSk7CisgICAgICAgIH0KKyAgICAgICAgI2VuZGlmCisgICAgICAgIC8vIG1sYW0g
Ki8KKyAgICB9IGVsc2UgewogICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgICAgIC8qIG1sYW0KKyAgICAgICAgI2lm
IG1sYW1fUFJJTlRGCisgICAgICAgIGlmIChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS5pc0ludDMy
KCkpIHsKKyAgICAgICAgICAgIC8vIHByaW50ZigiICAgbWxhbSBQQVRIXzIgc2xvd19wYXRoX3B1
dF9ieV9pZCB8IG9iaiAlcCBjb2RlYmxvY2sgJXAgcmVzdWx0ID0gJWRcbiIsIGJhc2VWYWx1ZS5n
ZXRPYmplY3QoKSwgY29kZUJsb2NrLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS5hc0ludDMyKCkp
OworICAgICAgICB9CisgICAgICAgICNlbmRpZgorICAgICAgICAvLyBtbGFtICovCisgICAgfQog
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIAorICAgIC8qIG1sYW0KKyAgICAjaWYg
bWxhbV9QUklOVEYKKyAgICBpZiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkuaXNJbnQzMigpKSB7
CisgICAgICAgIC8vIHByaW50ZigiICAgbWxhbSBOT19FWENFUFRJT04gc2xvd19wYXRoX3B1dF9i
eV9pZCB8IGNvZGVibG9jayAlcCByZXN1bHQgPSAlZFxuIiwgY29kZUJsb2NrLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS5hc0ludDMyKCkpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICAvLyBtbGFt
ICovCisKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVwogICAgICAgICAmJiBiYXNl
VmFsdWUuaXNDZWxsKCkKICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CkBAIC05NTMs
NyArMTAwMCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVk
IGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCiAgICAgICAgICAgICAgICAgICAg
IC8vIGJlbG93IG1heSBHQy4KLSAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9wdXRfYnlfaWQpOwogCiAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNo
YWluKGV4ZWMsIGJhc2VDZWxsKTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC05NzMsMjQgKzEw
MjAsMjQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERh
dGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Qp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGdsb2JhbERhdGEuaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAg
ICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEz
MDQsNiArMTM1MSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY18K
IAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKKyAgICAvLyBtbGFtIHByaW50ZigiICAgbWxhbSBTTE9XIFBBVEgg
aGFuZGxlSG9zdENhbGwgZnAgJXAgcGMgJXAgY2FsbGVlICVwIGtpbmQgJWQgQCAlczolZFxuIiwg
ZXhlY0NhbGxlZSwgcGMsIGNhbGxlZS5nZXRPYmplY3QoKSwga2luZCwgX19GSUxFX18sIF9fTElO
RV9fKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwog
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAt
MTMyMiw3ICsxMzcwLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwog
ICAgICAgICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgICAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgTExJbnQ6OkRhdGE6OmdldENvZGVQdHIoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIAogI2lmIExMSU5UX1NM
T1dfUEFUSF9UUkFDSU5HCkBAIC0xMzQ1LDcgKzEzOTMsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09i
amVjdChjYWxsZWUpKTsKICAgICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUp
KTsKIAotICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgTExJbnQ6OkRhdGE6OmdldENvZGVQdHIoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOwogICAgIH0KICAgICAKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJB
Q0lORwpAQCAtMTM3MSwyMiArMTQxOSw1NSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNl
dFVwQ2FsbChFeGVjCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gKnNjb3BlLT5nbG9i
YWxEYXRhOwogICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oc2NvcGUpOwogICAgIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgI2lmIG1s
YW1fUFJJTlRGCisgICAgcHJpbnRmKCIgICAqKiogbWxhbSBleGVjdXRhYmxlID0gY2FsbGVlLT5l
eGVjdXRhYmxlKCkgJXBcbiIsIGV4ZWN1dGFibGUpOworICAgICNlbmRpZgogICAgIAogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
MDsKLSAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoZXhlY3V0
YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworI2lmIEVOQUJMRShKSVQpIC8vIG1sYW0gRklYTUUK
ICAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCku
YWRkcmVzc0ZvckNhbGwoKTsKLSAgICBlbHNlIHsKKyNlbHNlCisgICAgICAgIGNvZGVQdHIgPSAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgPworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSkgOgorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRf
bmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lKTsKKyNlbmRpZiAvLyBtbGFtIEZJWE1FCisgICAg
ICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIiAgICoqKiBtbGFtIGlzSG9zdEZ1
bmN0aW9uIHwgY29kZVB0ciA/P1xuIiAvKiAsIGNvZGVQdHIgKi8pOworICAgICAgICAjZW5kaWYK
KyAgICB9IGVsc2UgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogICAg
ICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhl
Y0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKLSAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxl
ZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgfQogICAgICAgICBjb2RlQmxv
Y2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKICAg
ICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAg
ICBwcmludGYoIiAgICoqKiBtbGFtIE5PVCBpc0hvc3RGdW5jdGlvbiB8IGNvZGVCbG9jayAlcFxu
IiwgY29kZUJsb2NrKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIC8vKiBtbGFtCisgICAgICAg
ICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIlxuIG1sYW0gQ09NUElMRUQgY29kZUJs
b2NrPSAlcCBleGVjdXRhYmxlICVwIEAgJXMgJXM6JWRcbiIsCisgICAgICAgICAgICAgICBjb2Rl
QmxvY2ssIGZ1bmN0aW9uRXhlY3V0YWJsZSwgX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19MSU5F
X18pOworICAgICAgICAjZW5kaWYKKyAgICAgICAgLy8gbWxhbSAqLworI2lmIEVOQUJMRShKSVQp
IC8vIG1sYW0gRklYTUUKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSkKICAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5k
KS5hZGRyZXNzRm9yQ2FsbCgpOworI2Vsc2UgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAg
ICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNv
ZGVQdHIgPSAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgPworICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKSA6CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgPworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSA6CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICAgICB9CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rSW5mbykgewpAQCAtMTQwMCw2ICsx
NDgxLDExIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAg
ICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOwogICAgIH0K
ICAgICAKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2so
Y29kZUJsb2NrKTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGV4ZWNDYWxsZWUsICIgID4+
PiBQVVNIRUQgKEVORCBzZXR1cENhbGwpIHRvIG5ldyAiLCBwYywgX19GVU5DVElPTl9fLCBfX0ZJ
TEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgorCiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKQEAgLTE0MTQs
MTAgKzE1MDAsMjIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeAog
ICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwogICAg
IAogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7Cisg
ICAgI2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgICAqKiogbWxhbSBleGVjQ2FsbGVlICVw
ID0gIGV4ZWMgJXAgKyAlZFxuIiwgZXhlY0NhbGxlZSwgZXhlYywgcGNbM10udS5vcGVyYW5kKTsK
KyAgICAjZW5kaWYKICAgICAKICAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgICNpZiBtbGFtX1BSSU5URgorICAgIHByaW50
ZigiICAgKioqIG1sYW0gYXJnQ291bnRJbmNsdWRpbmdUaGlzICVkXG4iLCBwY1syXS51Lm9wZXJh
bmQpOworICAgICNlbmRpZgogICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBwcmlu
dGYoIiAgICoqKiBtbGFtIGNhbGxlZSAlcFxuIiwgY2FsbGVlQXNWYWx1ZS5nZXRPYmplY3QoKSk7
CisgICAgI2VuZGlmCiAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
I2lmIG1sYW1fUFJJTlRGCisgICAgcHJpbnRmKCIgICAqKiogbWxhbSBjYWxsZXJGcmFtZSAlcFxu
IiwgZXhlYyk7CisgICAgI2VuZGlmCiAgICAgCiAgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJ
bmZvKTsKICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVB
c1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7CkBAIC0xNDI1LDYgKzE1MjMsMTIgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeAogCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY2FsbCkKIHsKKyAgICAvKiBtbGFtCisgICAgI2lmIG1sYW1fUFJJTlRG
CisgICAgcHJpbnRmKCJcblxuIG1sYW0gJiYmJiYmJiYgbGxpbnRfc2xvd19wYXRoX2NhbGwgfCBw
YyAlcCBmcmFtZSglcCktPmN1cnJlbnRWUEMoKSA9ICVwIEAgJXM6JWRcblxuIiwKKyAgICAgICAg
ICAgcGMsIGV4ZWMsIGV4ZWMtPmN1cnJlbnRWUEMoKSwgX19GSUxFX18sIF9fTElORV9fKTsKKyAg
ICAjZW5kaWYKKyAgICAvLyBtbGFtICovCiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAg
ICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7CiB9CkBAIC0xNDY4
LDE1ICsxNTcyLDIzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwK
ICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKICAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhl
Y0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOwotICAgIGV4ZWNDYWxs
ZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmlj
X3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKExMSW50OjpEYXRh
OjpnZXRDb2RlUHRyKGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CiAgICAgZXhlY0NhbGxl
ZS0+c2V0Q29kZUJsb2NrKDApOwogICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyBPUENPREVf
TEVOR1RIKG9wX2NhbGxfZXZhbCkpOwogICAgIAogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2Fs
bGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4
ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CiAgICAgCisgICAgI2lm
IG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShleGVjQ2FsbGVlLCAiICA+
Pj4gUFVTSEVEIChzbG93IGV2YWwpIHRvIG5ldyAiLCBwYywgX19GVU5DVElPTl9fLCBfX0ZJTEVf
XywgX19MSU5FX18pOworICAgICNlbmRpZgorCiAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVy
blZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKLSAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2Fs
bGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkp
OworICAgICNpZiBtbGFtX1BSSU5URgorICAgIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoZXhlY0Nh
bGxlZSwgIiAgPz8/IEFGVEVSIChzbG93IGV2YWwpIHRvIG5ldyAiLCBwYywgX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICNlbmRpZgorCisgICAgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlY0NhbGxlZSwgcGMsIExMSW50OjpEYXRhOjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RlYXJfb2Zm
X2FjdGl2YXRpb24pCkBAIC0xNTE0LDYgKzE2MjYsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3N0cmNhdCkKIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3By
aW1pdGl2ZSkKIHsKKyAgICAvKiBtbGFtCisgICAgI2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNw
ZWN0b3I6OmR1bXBGcmFtZShleGVjLCAiICAgPT09IGluc3BlY3QgIiwgcGMsIF9fRlVOQ1RJT05f
XywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAgICAvLyBtbGFtICovCiAgICAg
TExJTlRfQkVHSU4oKTsKICAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9QcmltaXRpdmUoZXhlYykpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMyAr
NDQsNTAgQEAgbmFtZXNwYWNlIExMSW50IHsKIC8vIHdhcm5pbmdzLCBvciB3b3JzZSwgYSBjaGFu
Z2UgaW4gdGhlIEFCSSB1c2VkIHRvIHJldHVybiB0aGVzZSB0eXBlcy4KIHN0cnVjdCBTbG93UGF0
aFJldHVyblR5cGUgewogICAgIHZvaWQqIGE7Ci0gICAgdm9pZCogYjsKKyAgICBFeGVjU3RhdGUq
IGI7CiB9OwogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBh
LCB2b2lkKiBiKQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCog
YSwgRXhlY1N0YXRlKiBiKQogewogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQ7CiAgICAg
cmVzdWx0LmEgPSBhOwogICAgIHJlc3VsdC5iID0gYjsKICAgICByZXR1cm4gcmVzdWx0OwogfQot
I2Vsc2UKKworaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQoreworICAgIGEgPSByZXN1bHQuYTsKKyAgICBi
ID0gcmVzdWx0LmI7Cit9CisKKyNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiB0eXBlZGVmIGlu
dDY0X3QgU2xvd1BhdGhSZXR1cm5UeXBlOwogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVu
Y29kZVJlc3VsdCh2b2lkKiBhLCB2b2lkKiBiKQordHlwZWRlZiB1bmlvbiB7CisgICAgc3RydWN0
IHsKKyAgICAgICAgdm9pZCogYTsKKyAgICAgICAgRXhlY1N0YXRlKiBiOworICAgIH0gcGFpcjsK
KyAgICBpbnQ2NF90IGk7Cit9IFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nOworCitpbmxpbmUg
U2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3RhdGUqIGIpCiB7
Ci0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdm9pZCogYTsKLSAg
ICAgICAgICAgIHZvaWQqIGI7Ci0gICAgICAgIH0gcGFpcjsKLSAgICAgICAgaW50NjRfdCBpOwot
ICAgIH0gdTsKKyAgICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OwogICAgIHUucGFpci5h
ID0gYTsKICAgICB1LnBhaXIuYiA9IGI7CiAgICAgcmV0dXJuIHUuaTsKIH0KLSNlbmRpZgorCitp
bmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZCom
IGEsIEV4ZWNTdGF0ZSomIGIpCit7CisgICAgU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsK
KyAgICB1LmkgPSByZXN1bHQ7CisgICAgYSA9IHUucGFpci5hOworICAgIGIgPSB1LnBhaXIuYjsK
K30KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50
IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
bGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJl
LCBpbnQgb3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKKyNpZiAhRU5BQkxFKExMSU5UX0Nf
TE9PUCkKKwogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNo
YXIgKnRodW5rS2luZCkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CkBAIC03OCw2ICs4MCw4
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0cKICAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSwgInByb2dyYW0iKTsKIH0KIAorI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIAogI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtODMsMTUgKzgzLDE2IEBAIGNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwogCiAK
ICMgVXRpbGl0aWVzCisKIG1hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCi0gICAgYWRkcCBhZHZhbmNl
ICogNCwgUEMKLSAgICBqbXAgW1BDXQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDICAgICAgICAv
LyBwYyA9IHBjICsgc2l6ZW9mKGN1cnJlbnRCeXRlY29kZSk7CisgICAgam1wIFtQQ10gICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gTkVYVF9JTlNUUlVDVElPTjsKIGVuZAogCiBtYWNybyBkaXNw
YXRjaEJyYW5jaFdpdGhPZmZzZXQocGNPZmZzZXQpCiAgICAgbHNoaWZ0aSAyLCBwY09mZnNldAog
ICAgIGFkZHAgcGNPZmZzZXQsIFBDCi0gICAgam1wIFtQQ10KKyAgICBqbXAgW1BDXSAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBORVhUX0lOU1RSVUNUSU9OOwogZW5kCiAKIG1hY3JvIGRpc3Bh
dGNoQnJhbmNoKHBjT2Zmc2V0KQpAQCAtMTAwLDIxICsxMDEsMjUgQEAgbWFjcm8gZGlzcGF0Y2hC
cmFuY2gocGNPZmZzZXQpCiBlbmQKIAogbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQotICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKLSAgICBqbXAgW1BDXQorICAg
IG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gbWxhbSA6OiBQUklOVCBkaXNw
YXRjaEFmdGVyQ2FsbCgpIHwgcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7XG5cbiIpOworICAg
IGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMgICAgLy8gcGMgPSBjZnIu
QXJndW1lbnRDb3VudC5UYWc7IC8vIFJlbG9hZCBhIHByZXZpb3VzbHkgc3Rhc2hlZCByZXR1cm5Q
Qy4KKyAgICBqbXAgW1BDXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdv
dG8gTkVYVF9JTlNUUlVDVElPTjsKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEs
IGFyZzIpCiAgICAgaWYgQVJNdjcKLSAgICAgICAgbW92ZSBhcmcxLCB0MAotICAgICAgICBtb3Zl
IGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhcmcxID0gLi4uOworICAgICAgICBtb3ZlIGFyZzIsIHQxICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYXJnMiA9IC4uLjsKKyAgICAgICAgY2FsbCBmdW5jdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhbGwgQyBmdW5jdGlvbjsKICAgICBlbHNpZiBYODYKLSAgICAg
ICAgcG9rZSBhcmcxLCAwCi0gICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzEs
IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMSA9IC4uLjsKKyAgICAgICAgcG9r
ZSBhcmcyLCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZzIgPSAuLi47CisgICAg
ICAgIGNhbGwgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVu
Y3Rpb247CisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIGN4eENhbGxTbG93UGF0aCBmdW5jdGlv
biwgYXJnMSwgYXJnMiAgICAvLyBjYWxsIEMgZnVuY3Rpb24oYXJnMSwgYXJnMik7CiAgICAgZWxz
ZQogICAgICAgICBlcnJvcgogICAgIGVuZAotICAgIGNhbGwgZnVuY3Rpb24KIGVuZAogCiAjIFRo
aXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlh
dGVzLgpAQCAtMTI0LDIxICsxMjksMjQgQEAgbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBh
cmcyLCBhcmczLAogICAgICAgICBtb3ZlIGFyZzIsIHQxCiAgICAgICAgIG1vdmUgYXJnMywgdDIK
ICAgICAgICAgbW92ZSBhcmc0LCB0MworICAgICAgICBjYWxsIGZ1bmN0aW9uCiAgICAgZWxzaWYg
WDg2CiAgICAgICAgIHBva2UgYXJnMSwgMAogICAgICAgICBwb2tlIGFyZzIsIDEKICAgICAgICAg
cG9rZSBhcmczLCAyCiAgICAgICAgIHBva2UgYXJnNCwgMworICAgICAgICBjYWxsIGZ1bmN0aW9u
CisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIGVycm9yCiAgICAgZWxzZQogICAgICAgICBlcnJv
cgogICAgIGVuZAotICAgIGNhbGwgZnVuY3Rpb24KIGVuZAogCiBtYWNybyBjYWxsU2xvd1BhdGgo
c2xvd1BhdGgpCiAgICAgY0NhbGwyKHNsb3dQYXRoLCBjZnIsIFBDKQotICAgIG1vdmUgdDAsIFBD
Ci0gICAgbW92ZSB0MSwgY2ZyCisgICAgbW92ZSB0MCwgUEMgICAgICAgICAgICAgICAgIC8vIHBj
ID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgorICAgIG1vdmUgdDEsIGNmciAgICAgICAgICAgICAg
ICAvLyBjZnIgPSByZXN1bHQuZXhlY1N0YXRlPHQxPgogZW5kCiAKICMgRGVidWdnaW5nIG9wZXJh
dGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9u
IHN0cmVhbS4gZnJvbVdoZXJlCkBAIC0xNjIsOCArMTcwLDkgQEAgZW5kCiAKICMgQ2FsbCBhIHNs
b3dQYXRoIGZvciBjYWxsIG9wY29kZXMuCiBtYWNybyBjYWxsQ2FsbFNsb3dQYXRoKGFkdmFuY2Us
IHNsb3dQYXRoLCBhY3Rpb24pCi0gICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCi0gICAgc3Rv
cmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBhZGRwIGFkdmFuY2Ug
KiA0LCBQQywgdDAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVyblBDPHQwPiA9IHBjICsgYWR2
YW5jZSo0OworICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdICAg
Ly8gY2ZyLkFyZ3VtZW50Q291bnQuVGFnID0gcmV0dXJuUEM8dDA+OworICAgIG1sYW1EbyAgLy8g
aWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuIG1sYW0gOjogUFJJTlQgY2FsbENhbGxTbG93UGF0
aCgpIHwgY2ZyICVwIHBjICVwIHwgcmV0dXJuUEM8dDA+ID0gcGMgKyBhZHZhbmNlKjQ7IGNmci5B
cmd1bWVudENvdW50LlRhZyA9IHJldHVyblBDPHQwPjtcblxuIiwgY2FsbEZyYW1lLCByUEMudnAp
OwogICAgIGNDYWxsMihzbG93UGF0aCwgY2ZyLCBQQykKICAgICBtb3ZlIHQxLCBjZnIKICAgICBh
Y3Rpb24odDApCkBAIC0xNzMsMzAgKzE4MiwzMCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9y
TG9vcCgpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVCgKICAgICAgICAgMSwKICAgICAgICAgbWFjcm8g
KCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJd
CisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSAg
IC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHBjOwogICAgICAgICAgICAgY0NhbGwyKF9sbGlu
dF9sb29wX29zciwgY2ZyLCBQQykKICAgICAgICAgICAgIG1vdmUgdDEsIGNmcgogICAgICAgICAg
ICAgYnRweiB0MCwgLnJlY292ZXIKICAgICAgICAgICAgIGptcCB0MAogICAgICAgICAucmVjb3Zl
cjoKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMK
KyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMgICAg
Ly8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7CiAgICAgICAgIGVuZCkKIGVuZAogCiAjIElu
ZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXgg
aXMgbm90CiAjIGNoYW5nZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0
YWcsIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwgLmNvbnN0YW50Ci0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCi0gICAgam1wIC5k
b25lCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmIChpbmRl
eDxhMD4gPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIGdvdG8gLmNvbnN0YW50OworICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWc8YTE+ID0gY2ZyW2lu
ZGV4PGEwPl0uVGFnOworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBh
eWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBwYXlsb2FkPGEyPiA9IGNmcltpbmRleDxhMD4uUGF5bG9hZDsKKyAgICBqbXAgLmRvbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgZ290byAuZG9uZTsKIC5jb25zdGFudDoKLSAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25z
dGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb2RlQmxvY2s8YTI+ID0g
Y2ZyLkNvZGVCbG9jazsKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQgICAgICAgICAgICAgICAgIC8v
ICAgdmVjdG9yQnVmZmVyPGEyPiA9IGNvZGVCbG9jazxhMj4uY29uc3RhbnRSZWdpc3RlcnMudmVj
dG9yQnVmZmVyOwogICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKICAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgotICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0sIHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXls
b2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRhZzxhMT4g
PSB2ZWN0b3JCdWZmZXI8YTI+W2luZGV4PGEwPl0uVGFnOworICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkPGEyPiA9IHZlY3RvckJ1ZmZlcjxhMj5baW5k
ZXg8YTA+XS5QYXlsb2FkOwogLmRvbmU6CiBlbmQKIApAQCAtMjE1LDM1ICsyMjQsNDAgQEAgZW5k
CiAKICMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBt
YXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgs
IHRhZywgcGF5bG9hZCkKLSAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCAuY29uc3RhbnQKLSAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZwot
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICBqbXAg
LmRvbmUKKyAgICAvLyBtYWNybzogbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRh
ZywgcGF5bG9hZCkgeworICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsIC5jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICBpZiAoaW5kZXg8YTA+ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSBnb3RvIC5jb25z
dGFudDsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGEx
PiA9IGNmcltpbmRleDxhMD5dLlRhZzsKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdLCBwYXlsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgcGF5bG9hZDxhMj4gPSBjZnJbaW5kZXg8YTA+XS5QYXlsb2FkOworICAgIGpt
cCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBnb3RvIC5kb25lOwogLmNvbnN0
YW50OgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKLSAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhMT4gPSBj
ZnIuQ29kZUJsb2NrOworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ICB2ZWN0b3JCdWZmZXI8YTE+ID0gY29kZUJsb2NrPGExPi5jb25zdGFudFJlZ2lzdGVycy52ZWN0
b3JCdWZmZXI7CiAgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRl
eCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAogICAgICMg
dGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpIDw8IDMuCi0gICAgbHNoaWZ0aSAzLCBpbmRleAotICAgIGFkZHAgaW5kZXgs
IHRhZwotICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAotICAgIGxvYWRwIFRh
Z09mZnNldFt0YWddLCB0YWcKKyAgICBsc2hpZnRpIDMsIGluZGV4ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgYnl0ZUluZGV4PGEwPiA9IGluZGV4PGEwPiA8PCAzOworICAgIGFkZHAgaW5kZXgsIHRh
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zdGFudDxhMT4gPSAmdmVjdG9yQnVmZmVyPGEx
PltieXRlSW5kZXg8YTA+XTsKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgcGF5bG9hZDxhMj4gPSBjb25zdGFudDxhMT4uUGF5bG9hZDsKKyAgICBsb2FkcCBUYWdP
ZmZzZXRbdGFnXSwgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgdGFnPGExPiA9IGNvbnN0YW50PGExPi5UYWc7
CiAuZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZy4K
IGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRl
eCwgdGFnQ2hlY2ssIHBheWxvYWQpCi0gICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgs
IDhdKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKLSAg
ICBqbXAgLmRvbmUKKyAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpIHsKKyAgICBiaWd0ZXEgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KSBnb3RvIC5jb25zdGFudDsKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgdGFnQ2hlY2soY2ZyW2luZGV4XS5UYWcpOworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkID0gY2ZyW2luZGV4XS5QYXlsb2FkOwor
ICAgIG1sYW1EbyAvLyBpZiAobWxhbVByaW50KSB7IHByaW50ZigiICAgICAgbWxhbSBBU00gbG9h
ZCB2YXIgfCBvYmogJXAgY2ZyICVwW2luZGV4ICVsZF1cbiIsIHIwLnZwLCBjYWxsRnJhbWUsIHI0
LmkpOyBtbGFtUHJpbnQ9IGZhbHNlOyB9CisgICAgam1wIC5kb25lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgIGdvdG8gLmRvbmU7CiAuY29uc3RhbnQ6Ci0gICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHBheWxvYWQKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgcGF5bG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29kZUJsb2NrPHBheWxvYWQ+ID0gY2ZyLkNvZGVC
bG9jazsKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQgICAgICAgICAgICAgICAgIC8vICAgdmVjdG9y
QnVmZmVyPHBheWxvYWQ+ID0gY29kZUJsb2NrPHBheWxvYWQ+LmNvbnN0YW50UmVnaXN0ZXJzLnZl
Y3RvcmVCdWZmZXI7CiAgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAogICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCi0gICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGlu
ZGV4LCA4XSkKLSAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5
bG9hZAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB0YWdDaGVj
ayh2ZWN0b3JCdWZmZXI8cGF5bG9hZD5baW5kZXhdLlRhZyk7CisgICAgbG9hZHAgUGF5bG9hZE9m
ZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgIHBheWxvYWQgPSB2ZWN0b3JCdWZmZXI8cGF5bG9hZD5b
aW5kZXhdLlBheWxvYWQ7CiAuZG9uZToKKyAgICAvLyB9IEVORCBtYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbS4KIGVuZAogCiAjIEluZGV4IGFuZCBwYXlsb2FkIG11
c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQpAQCAt
MjUyLDEwICsyNjYsMTQgQEAgZW5kCiAjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCiAjIHRhZy4KIG1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwg
c2xvdykKKyAgICAvLyBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwg
ZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpIHsKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbSgKICAgICAgICAgaW5kZXgsCi0gICAgICAgIG1hY3JvIChhY3R1YWxU
YWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAotICAgICAgICBwYXls
b2FkKQorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKQorICAgICAgICAgICAgYmluZXEgYWN0dWFs
VGFnLCBleHBlY3RlZFRhZywgc2xvdyAgLy8gICBpZiAoYWN0dWFsVGFnICE9IGV4cGVjdGVkVGFn
KSBnb3RvIC5zbG93OworICAgICAgICBlbmQsCisgICAgICAgIHBheWxvYWQpIC8vIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKC4uLik7CisgICAgLy8gfSBFTkQgbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQuCiBlbmQKIAogbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCkBAIC0yNzEsOCArMjg5
LDEwIEBAIGVuZAogCiBtYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQog
ICAgIGlmIFZBTFVFX1BST0ZJTEVSCi0gICAgICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCi0gICAgICAgIHN0b3JlaSBwYXlsb2FkLCBW
YWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KKyAgICAvLyBt
YWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlIGkuZS4gb3JhY2xlQ2FjaGVJ
ZCkgeworICAgICAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09m
ZnNldFtwcm9maWxlXSAgICAgICAgICAgIC8vICAgVmFsdWVQcm9maWxlOjpidWNrZXRzW29yYWNs
ZUNhY2hlSWRdLlRhZyA9IHRhZzxhMD47CisgICAgICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVBy
b2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0gICAgLy8gICBWYWx1ZVBy
b2ZpbGU6OmJ1Y2tldHNbb3JhY2xlQ2FjaGVJZF0uUGF5bG9hZCA9IHBheWxvYWQ8YTE+OworICAg
IC8vIH0gRU5EIHZhbHVlUHJvZmlsZS4KICAgICBlbmQKIGVuZAogCkBAIC0yOTksNjMyICszMTks
OTY2IEBAIGVuZAogCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucwogCisvLyBieXRlY29k
ZTogZW50ZXIKKy8vIGZ1bmN0aW9uOiBmb3IgZWFjaCBpZCBpbiBsb2NhbHMgeyBjZnJbaWRdID0g
dW5kZWZpbmVkOyB9CisvLworLy8gICBJbml0aWFsaXplcyBsb2NhbCB2YXJpYWJsZXMgdG8gdW5k
ZWZpbmVkLiBJZiB0aGUgY29kZSBibG9jayByZXF1aXJlcworLy8gICBhbiBhY3RpdmF0aW9uLCBl
bnRlcl93aXRoX2FjdGl2YXRpb24gaXMgdXNlZCBpbnN0ZWFkLgorLy8gICBUaGlzIG9wY29kZSBh
cHBlYXJzIG9ubHkgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNvZGUgYmxvY2suCisKIF9sbGludF9v
cF9lbnRlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVCbG9jaz4gPSBjZnIuQ29kZUJsb2NrCi0gICAg
bG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MiAgICAgIC8vIHQyPHNpemVfdD4gPSB0
MjxDb2RlQmxvY2s+Lm1fbnVtVmFycwotICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQotICAgIG1v
dmUgVW5kZWZpbmVkVGFnLCB0MAotICAgIG1vdmUgMCwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQyPiA9IGNmci5Db2RlQmxvY2s7
CisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MiAgICAgIC8vIG51bVZhcnM8
dDI+ID0gY29kZUJsb2NrPHQyPi5tX251bVZhcnM7CisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25l
ICAgICAgICAgICAgICAgICAgIC8vIGlmIChudW1WYXJzPHQyPiA9PSAwKSBnb3RvIC5kb25lOwor
ICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MCAgICAgICAgICAgICAgICAgICAvLyBqc1VuZGVmaW5l
ZDx0MD4gPSBVbmRlZmluZWRUYWc7CisgICAgbW92ZSAwLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHplcm88dDE+ID0gMDsKIC5vcEVudGVyTG9vcDoKLSAgICBzdWJpIDEsIHQy
Ci0gICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisgICAg
c3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbnVtVmFyczx0Mj4t
LTsKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgLy8gICBjZnJb
bnVtVmFyczx0Mj5dLlRhZyA9IGpzVW5kZWZpbmVkPHQwPjsKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgLy8gICBjZnJbbnVtVmFyczx0Mj5dLlBheWxvYWQgPSB6
ZXJvPHQxPjsKKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wICAgICAgICAgICAgICAgICAgLy8g
aWYgKG51bVZhcnM8dDI+ICE9IDApIGdvdG8gLmxvb3A7CiAub3BFbnRlckRvbmU6Ci0gICAgZGlz
cGF0Y2goMSkKKyAgICBkaXNwYXRjaCgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBjcmVhdGVfYWN0aXZhdGlvbiBk
c3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBuZXcgQWN0aXZhdGlvbigpIGlm
IG5vdCBhbHJlYWR5IHByZXNlbnQ7CisvLworLy8gICBJZiB0aGUgYWN0aXZhdGlvbiBvYmplY3Qg
Zm9yIHRoaXMgY2FsbGZyYW1lIGhhcyBub3QgeWV0IGJlZW4gY3JlYXRlZCwKKy8vICAgdGhpcyBj
cmVhdGVzIGl0IGFuZCB3cml0ZXMgaXQgYmFjayB0byBkc3QuCisKIF9sbGludF9vcF9jcmVhdGVf
YWN0aXZhdGlvbjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0g
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVB
Y3RpdmF0aW9uRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9h
Y3RpdmF0aW9uKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGlvblJlZzx0MD4gPSBvcGVyYW5k
c1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZSAvLyBpZiAoY2ZyW2FjdGl2YXRpb25SZWc8dDA+
XS5UYWcgIT0gRW1wdHlWYWx1ZVRhZykgZ290byAuZG9uZTsKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikgICAgICAgICAgICAgICAgICAgIC8vIGNh
bGwgc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uOwogLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6
Ci0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
KwogCisvLyBieXRlY29kZTogaW5pdF9sYXp5X3JlZyBkc3RSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltkc3RSZWdJZF0gPSBKU1ZhbHVlKCk7CisvLworLy8gICBJbml0aWFsaXNlcyBkc3QocikgdG8g
SlNWYWx1ZSgpLgorLy8gICBUaGlzIG9wY29kZSBhcHBlYXJzIG9ubHkgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBhIGNvZGUgYmxvY2suCiAKIF9sbGludF9vcF9pbml0X2xhenlfcmVnOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBzdG9yZWkgRW1wdHlWYWx1ZVRh
ZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0PHQwPiA9IG9w
ZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3Q8dDA+XS5UYWcgPSBF
bXB0eVZhbHVlVGFnOworICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdDx0MD5dLlBheWxvYWQgPSAw
OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2Rl
OiBjcmVhdGVfYXJndW1lbnRzIGRzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9
IG5ldyBBcmd1bWVudHMoKSBpZiBub3QgYWxyZWFkeSBwcmVzZW50OworLy8KKy8vICAgQ3JlYXRl
cyB0aGUgJ2FyZ3VtZW50cycgb2JqZWN0IGFuZCBwbGFjZXMgaXQgaW4gYm90aCB0aGUKKy8vICAg
J2FyZ3VtZW50cycgY2FsbCBmcmFtZSBzbG90IGFuZCB0aGUgbG9jYWwgJ2FyZ3VtZW50cycKKy8v
ICAgcmVnaXN0ZXIsIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGluaXRpYWxpc2VkLgorCiBf
bGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9h
ZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVy
YW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lICAvLyBpZiAoY2ZyW2RzdDx0MD5dLlRhZyAh
PSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5kb25lOworICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93
X3BhdGhfY3JlYXRlX2FyZ3VtZW50czsKIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6Ci0gICAgZGlz
cGF0Y2goMikKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBi
eXRlY29kZTogb3BfY3JlYXRlX3RoaXMgdGhpc1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW3RoaXNS
ZWdJZF0gPSBuZXcgT2JqZWN0KGN1cnJlbnQgUHJvdG8/KTsKKy8vIG1sYW0gRklYTUU6IEhvdyBk
b2VzIHRoZSBjYWNoZWRJbmhlcml0b3IgZ2V0IHBvcHVsYXRlZD8KKy8vICAgICAgIENsYXNzaWMg
c3BlY2lmaWVzIGEgMm5kIG9wZXJhbmQgcHJvdG8ociksIGJ1dCBvdXIgZGlzcGF0Y2ggYmVsb3cg
aWdub3JlcyBpdC4KKy8vCisvLyAgIEFsbG9jYXRlIGFuIG9iamVjdCBhcyAndGhpcycsIGZvciB1
c2UgaW4gY29uc3RydWN0aW9uLgorLy8gICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1c2Vk
IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIGJsb2NrLgogCiBfbGxpbnRfb3BfY3JlYXRlX3Ro
aXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MAotICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9ySURbdDBdLCB0MgotICAgIGJ0cHog
dDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzPHQwPiA9IGNmci5D
YWxsZWU7CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9jYWNoZWRJbmhlcml0b3JJRFt0MF0sIHQy
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmhlcml0b3I8dDI+ID0gdGhpczx0MD4uY2FjaGVk
SW5oZXJpdG9ySUQ7CisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoaW5oZXJpdG9yID09IDApIGdvdG8g
LnNsb3c7CisgICAgLy8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCBpbmhlcml0b3I8
dDI+LCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdyk7CiAgICAgYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFs
T2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCi0gICAg
bG9hZGkgNFtQQ10sIHQxCi0gICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNo
KDIpCisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGlzSUQ8dDE+ID0gb3BlcmFuZHNbdGhpc1JlZ0lkXTsK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmclt0aGlzSUQ8dDE+XS5UYWcgPSBDZWxsVGFnOworICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyW3RoaXNJRDx0MT5dLlBheWxvYWQgPSB0aGlzPHQwPjsKKyAgICBkaXNw
YXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6Ci0gICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2go
MikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NyZWF0ZV90aGlzOworICAgIGRp
c3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKKy8vIGJ5dGVjb2RlOiBjb252ZXJ0
X3RoaXMgdGhpc1JlZ0lkIG9yYWNsZUNhY2hlSWQKKy8vIGZ1bmN0aW9uOiBjZnJbdGhpc1JlZ0lk
XSA9IENvbnZlcnRUb1RoaXMoY2ZyW3RoaXNSZWdJZF0pOworLy8KKy8vICAgVGFrZXMgdGhlIHZh
bHVlIGluIHRoZSAndGhpcycgcmVnaXN0ZXIsIGNvbnZlcnRzIGl0IHRvIGEKKy8vICAgdmFsdWUg
dGhhdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHRoZSAndGhpcycgdmFsdWUsIGFuZAorLy8gICBz
dG9yZXMgaXQgaW4gdGhlICd0aGlzJyByZWdpc3Rlci4gVGhpcyBvcGNvZGUgaXMgZW1pdHRlZAor
Ly8gICB0byBhdm9pZCBkb2luZyB0aGUgY29udmVyc2lvbiBpbiB0aGUgY2FsbGVyIHVubmVjZXNz
YXJpbHkuCisvLworLy8gICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgYSBjb2RlCisvLyAgIGJsb2NrLgorCiBfbGxpbnRfb3BfY29udmVydF90aGlz
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdwotICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQwCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKLSAgICBsb2FkaSA4
W1BDXSwgdDEKLSAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywgdDAsIHQxKQotICAgIGRpc3BhdGNo
KDMpCisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGlzSUQ8dDA+ID0gb3BlcmFuZHNbdGhpc1JlZ0lkXTsK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlz
U2xvdyAgICAgICAgICAgIC8vIGlmIChjZnJbdGhpc0lEPHQwPl0uVGFnICE9IENlbGxUYWcpIGdv
dG8gLnNsb3c7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzPHQwPiA9IGNmclt0aGlzSUQ8dDA+XS5Q
YXlsb2FkOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IHRoaXM8dDA+LnN0cnVj
dHVyZTsKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdyAgICAvLyBpZiAoc3RydWN0dXJlPHQw
Pi50eXBlSW5mby50eXBlIDwgT2JqZWN0VHlwZSkgZ290byAuc2xvdzsKKyAgICBsb2FkaSA4W1BD
XSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG9yYWNsZUlkPHQxPiA9IG9wZXJhbmRzW29yYWNsZUNhY2hlSWRdOworICAgIHZhbHVlUHJv
ZmlsZShDZWxsVGFnLCB0MCwgdDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdmFsdWVQcm9maWxlKENlbGxUYWcsIHN0cnVjdHVyZTx0MD4sIG9yYWNsZUlkPHQxPik7
CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcENvbnZlcnRUaGlz
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jb252ZXJ0X3RoaXMpCi0g
ICAgZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jb252ZXJ0
X3RoaXMpICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2NvbnZlcnRf
dGhpczsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogCisvLyBieXRl
Y29kZTogbmV3X29iamVjdCBkc3RSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBu
ZXcgT2JqZWN0KCk7CisvLworLy8gICBDb25zdHJ1Y3RzIGEgbmV3IGVtcHR5IE9iamVjdCBpbnN0
YW5jZSB1c2luZyB0aGUgb3JpZ2luYWwKKy8vICAgY29uc3RydWN0b3IsIGFuZCBwdXRzIHRoZSBy
ZXN1bHQgaW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbmV3X29iamVjdDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCi0gICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6
Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZUJsb2NrPHQwPiA9IGNm
ci5Db2RlQmxvY2s7CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
ICAgICAgICAgICAgICAgICAvLyBnbG9iYWxPYmplY3Q8dDA+ID0gY29kZUJsb2NrPHQwPi5nbG9i
YWxPYmplY3Q7CisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1
cmVbdDBdLCB0MSAgICAvLyBlbXB0eVN0cnVjdHVyZTx0MT4gPSBnbG9iYWxPYmplY3Q8dDA+LmVt
cHR5T2JqZWN0U3RydWN0dXJlOworICAgIC8vIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFs
T2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5m
bywgZW1wdHlTdHJ1Y3R1cmU8dDE+LCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KTsKICAg
ICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0ds
b2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdP
YmplY3RTbG93KQotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAg
ICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0gICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0
MT5dLlBheWxvYWQgPSBhbGxvY2F0ZWRPYmplY3Q8dDA+OworICAgIGRpc3BhdGNoKDIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAub3BOZXdPYmplY3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX25ld19vYmplY3QpCi0gICAgZGlzcGF0Y2goMikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KSAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX25l
d19vYmplY3Q7CisgICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IG1v
diBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3Jj
UmVnSWRdOworLy8KKy8vICAgQ29waWVzIHJlZ2lzdGVyIHNyYyB0byByZWdpc3RlciBkc3QuCiAK
IF9sbGludF9vcF9tb3Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0
MQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQy
LCB0MykKLSAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQotICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkg
OFtQQ10sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJ
ZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tk
c3RSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKSAgICAgICAg
ICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQxPiA9PT4gdmFs
dWU8dDIsIHQzPik7CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDA+XS5UYWcgPSBzcmNUYWc8dDI+OworICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQwPl0uUGF5bG9hZCA9IHNyY1BheWxvYWQ8dDM+OworICAgICMgbWxhbURv
IC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgICBtbGFtIG9wX21vdiB8IHBheWxvYWQ8dDM+
ID0gJWxkXG4iLCByNC5pKTsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRl
Y29kZTogbm90IGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9
ICFjZnJbc3JjcmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgbG9naWNhbCBOT1Qgb2YgcmVnaXN0
ZXIgc3JjIChjb252ZXJ0ZWQgdG8KKy8vICAgYm9vbGVhbiksIGFuZCBwdXRzIHRoZSByZXN1bHQg
aW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3Bfbm90OgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCi0gICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5v
dFNsb3cKLSAgICB4b3JpIDEsIHQzCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRj
aCgzKQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRb
UENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8
dDE+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAs
IHQyLCB0MykgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
cmNJZDx0MD4gPT4gdGFnPHQyPiwgcGF5bG9hZDx0Mz4pOworICAgIGJpbmVxIHQyLCBCb29sZWFu
VGFnLCAub3BOb3RTbG93ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4gIT0g
Qm9vbGVhblRhZykgZ290byAuc2xvdzsKKyAgICB4b3JpIDEsIHQzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxvYWQ8dDM+ID0gIXBheWxvYWQ8dDM+
OworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2ZyW2RzdHhzSWQ8dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElk
PHQxPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDM+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
CiAub3BOb3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkKLSAg
ICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfbm90OworICAgIGRpc3BhdGNoKDMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBlcSBkc3RSZWdJZCBzcmMxUmVnSWQgc3JjMlJl
Z0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdHJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSA9PSBjZnJb
c3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGFuZCBy
ZWdpc3RlciBzcmMyIGFyZSBlcXVhbCwKKy8vICAgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPT0n
IG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGFzIGEgYm9vbGVhbiBpbiByZWdp
c3RlciBkc3QuCiAKIF9sbGludF9vcF9lcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9h
ZGkgMTJbUENdLCB0MgotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQotICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93Ci0gICAgYmllcSB0MiwgQ2VsbFRhZywg
Lm9wRXFTbG93Ci0gICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdwotICAgIGxvYWRpIDRb
UENdLCB0MgotICAgIGNpZXEgdDAsIHQxLCB0MAotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BDXSwgdDIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQyPiA9IG9wZXJhbmRzW3NyYzJSZWdJ
ZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAg
ICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT4gdGFnMTx0Mj4s
IHBheWxvYWQxPHQwPik7CisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnMTx0Mj4gIT0gdGFnMjx0Mz4pIGdvdG8gLnNs
b3c7CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAodGFnMTx0Mj4gPT0gQ2VsbFRhZykgZ290byAuc2xvdzsKKyAgICBiaWIg
dDIsIExvd2VzdFRhZywgLm9wRXFTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
ICgodW5zaWduZWQpdGFnMTx0Mj4gPCBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkg
NFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJ
ZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgY2llcSB0MCwgdDEsIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQ8dDA+ID0gKHBheWxvYWQy
PHQxPiA9PSBwYXlsb2FkMTx0MD4pOworICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uVGFnID0gQm9vbGVh
blRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAg
ICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlBheWxvYWQgPSBwYXlsb2FkMTx0MD47CisgICAg
ZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcEVxU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9lcSkKLSAgICBkaXNwYXRjaCg0KQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2VxKSAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhf
ZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGVxX251bGwg
ZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0cmVnSWRdID0gKGNmcltzcmNS
ZWdJZF0gPT0gbnVsbCk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMgaXMg
bnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0
cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9l
cV9udWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBs
b2FkaSA0W1BDXSwgdDMKLSAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKLSAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKLSAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCi0gICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQx
Ci0gICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFu
ZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDM+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYXNzZXJ0Tm90Q29uc3RhbnQoc3JjSWQ8dDA+KTsKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MT4gPSBjZnJbc3Jj
SWQ8dDA+XS5UYWc7CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAgICAg
ICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkPHQwPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAg
ICAgICAvLyBpZiAodGFnPHQxPiAhPSBDZWxsVGFnKSBnb3RvIC5pbW1lZGlhdGU7CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAvLyBz
dHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0MD4uc3RydWN0dXJlOworICAgIHRibnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCB0MSAvLyByZXN1bHQ8dDE+ID0gKChzdHJ1Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWcgJiBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSAhPSAwKTsKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRp
YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gLm5vdEltbWVkaWF0ZTsK
IC5vcEVxTnVsbEltbWVkaWF0ZToKLSAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgotICAgIGNpZXEg
dDEsIFVuZGVmaW5lZFRhZywgdDEKLSAgICBvcmkgdDIsIHQxCisgICAgY2llcSB0MSwgTnVsbFRh
ZywgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc051bGw8dDI+ID0g
KHRhZzx0MT4gPT0gTnVsbHRhZyk7CisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc1VuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiA9
PSBVbmRlZmluZWRUYWcpOworICAgIG9yaSB0MiwgdDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IGlzTnVsbDx0Mj4gfCBpc1VuZGVm
aW5lZDx0MT47CiAub3BFcU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29s
ZWFuVGFnOworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAg
ZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IG5lcSBkc3RSZWdJZCBzcmMx
UmVnSWQgc3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJl
Z0lkXSAhPSBjZnJbc3JjMlJlZ0lkXSk7CisvLworLy8gICBDaGVja3Mgd2hldGhlciByZWdpc3Rl
ciBzcmMxIGFuZCByZWdpc3RlciBzcmMyIGFyZSBub3QKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhl
IEVDTUFTY3JpcHQgJyE9JyBvcGVyYXRvciwgYW5kIHB1dHMgdGhlCisvLyAgIHJlc3VsdCBhcyBh
IGJvb2xlYW4gaW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfbmVxOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApCi0gICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93Ci0gICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdwotICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BO
ZXFTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgY2luZXEgdDAsIHQxLCB0MAotICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDEyW1BD
XSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQy
PiA9IG9wZXJhbmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3BlcmFuZHNbc3Jj
MVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpICAgICAgICAg
ICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3JjMklkPHQyPiA9PT4gdGFn
Mjx0Mz4sIHBheWxvYWQyPHQxPik7CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhz
cmMxSWQ8dDA+ID09PiB0YWcxPHQyPiwgcGF5bG9hZDE8dDA+KTsKKyAgICBiaW5lcSB0MiwgdDMs
IC5vcE5lcVNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQy
PiAhPSB0YWcyPHQzPikgZ290byAuc2xvdzsKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFT
bG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcxPHQyPiA9PSBDZWxsdGFn
KSBnb3RvIC5zbG93OworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKCh1bnNpZ25lZCl0YWcxPHQyPiA8IExvd2VzdFRhZykg
Z290byAuc2xvdzsKKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBj
aW5lcSB0MCwgdDEsIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHJlc3VsdDx0MD4gPSAocGF5bG9hZDE8dDA+ICE9IHBheWxvYWQyPHQxPik7CisgICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9h
ZCA9IHJlc3VsdDx0MD47CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcE5lcVNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKQotICAgIGRpc3BhdGNoKDQp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKSAgICAgICAgICAgICAgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZXE7CisgICAgZGlzcGF0Y2goNCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAg
ICAgCiAKKy8vIGJ5dGVjb2RlOiBuZXFfbnVsbCBkc3RSZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rp
b246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyY1JlZ0lkXSAhPSBudWxsKTsKKy8vCisvLyAgIENo
ZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYyBpcyBub3QgbnVsbCwgYXMgd2l0aCB0aGUgRUNNQVNj
cmlwdCAnIT0nCisvLyAgIG9wZXJhdG9yLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVh
biBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uZXFfbnVsbDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCi0gICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQot
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKLSAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQotICAgIGptcCAub3BOZXFOdWxsTm90
SW1tZWRpYXRlCisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9h
ZGkgNFtQQ10sIHQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
c3RJZDx0Mz4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnROb3RDb25zdGFudChz
cmNJZDx0MD4pOworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdGFnPHQxPiA9IGNmcltzcmNJZDx0MD5dLlRhZzsKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MCAgICAgICAgICAgICAgICAgICAgIC8vIHBh
eWxvYWQ8dDA+ID0gY2ZyW3NyY0lkPHQwPl0uUGF5bG9hZDsKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wTmVxTnVsbEltbWVkaWF0ZSAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9
IENlbGxUYWcpIGdvdG8gLmltbWVkaWF0ZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTx0MT4gPSBwYXlsb2Fk
PHQwPi5zdHJ1Y3R1cmU7CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEgLy8gcmVzdWx0PHQxPiA9
ICgoc3RydWN0dXJlPHQxPi50eXBlSW5mby5mbGFncyAmIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
ID09IDApOworICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byAubm90SW1tZWRpYXRlOwogLm9wTmVxTnVsbEltbWVkaWF0ZToK
LSAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKLSAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0
MQotICAgIGFuZGkgdDIsIHQxCisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpc05vdE51bGw8dDI+ID0gKHRhZzx0MT4gIT0gTnVs
bFRhZyk7CisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpc05vdFVuZGVmaW5lZDx0MT4gPSAodGFnPHQxPiAhPSBVbmRlZmluZWRU
YWcpOworICAgIGFuZGkgdDIsIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcmVzdWx0PHQxPiA9IChpc05vdE51bGw8dDI+ICYgaXNOb3RVbmRlZmluZWQ8
dDE+KTsKIC5vcE5lcU51bGxOb3RJbW1lZGlhdGU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFu
VGFnOworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAg
ICAgICAgICAgLy8gY2ZyW2RzdElkPHQzPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47CisgICAgZGlz
cGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
b3RvIG5leHQgYnl0ZWNvZGU7CiAKIAogbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24s
IHNsb3dQYXRoKQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0MiwgdDMsIC5zbG93Ci0gICAgYmli
IHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QxXSwgdDMKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwotICAgIGJiZXEgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5z
bG93CisgICAgbG9hZGkgMTJbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzcmMySWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4
W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzFJ
ZDx0MD4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQzLCB0MSkgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzcmMySWQ8dDI+ID09PiB0YWcyPHQzPiwgcGF5bG9hZDI8dDE+KTsKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKSAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4p
OworICAgIGJpbmVxIHQyLCB0MywgLnNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9IHRhZzI8dDM+KSBnb3RvIC5zbG93OworICAgIGJpYiB0
MiwgTG93ZXN0VGFnLCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
KHRhZzE8dDI+IDwgTG93ZXN0VGFnKSBnb3RvIC5zbG93OworICAgIGJpbmVxIHQyLCBDZWxsVGFn
LCAubm90U3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzE8dDI+ICE9
IENlbGxUYWcpIGdvdG8gLm5vdFN0cmluZzsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTE8dDI+ID0gcGF5bG9h
ZDE8dDA+LnN0cnVjdHVyZTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVjdHVyZTI8dDM+ID0gcGF5bG9hZDI8dDE+LnN0
cnVjdHVyZTsKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZyAgLy8gaWYgKHN0cnVjdHVyZTE8dDI+LnR5
cGVJbmZvLnR5cGUgIT0gU3RyaW5nVHlwZSkgZ290byAubm90U3RyaW5nOworICAgIGJiZXEgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5z
bG93ICAgICAgICAvLyBpZiAoc3RydWN0dXJlMjx0Mz4udHlwZUluZm8udHlwZSA9PSBTdHJpbmdU
eXBlKSBnb3RvIC5zbG93OwogLm5vdFN0cmluZzoKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBl
cXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGxvYWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcmVzdWx0PHQwPiA9IHBheWxvYWQxPHQwPiBDT01QQVJBVE9SIHBheWxvYWQyPHQx
PjsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAg
ICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5UYWc7CisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0
SWQ8dDI+XS5QYXlsb2FkID0gcmVzdWx0PHQwPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
IAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDQpCisg
ICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIHNsb3dQYXRoPGExPjsKKyAgICBkaXNwYXRjaCg0KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIGVuZAog
CisvLyBieXRlY29kZTogc3RyaWN0ZXEgZHN0UmVnSWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8g
ZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAoY2ZyW3NyYzFSZWdkXSA9PT0gY2ZyW3NyYzJSZWdJ
ZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBhbmQgcmVnaXN0ZXIg
c3JjMiBhcmUgc3RyaWN0bHkKKy8vICAgZXF1YWwsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz09
PScgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZQorLy8gICByZXN1bHQgYXMgYSBib29sZWFuIGluIHJl
Z2lzdGVyIGRzdC4KKwogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAvLyBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCBy
aWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcT4pOwor
ICAgIC8vIENPTVBBUkFUT1IgPSAiPT0iCiAgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0
LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhf
c3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IG5zdHJpY3RlcSBkc3RSZWdJZCBzcmMxUmVnSWQg
c3JjMlJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IChjZnJbc3JjMVJlZ0lkXSAh
PT0gY2ZyW3NyYzJSZWdJZF0pOworLy8KKy8vICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3Jj
MSBhbmQgcmVnaXN0ZXIgc3JjMiBhcmUgbm90CisvLyAgIHN0cmljdGx5IGVxdWFsLCBhcyB3aXRo
IHRoZSBFQ01BU2NyaXB0ICchPT0nIG9wZXJhdG9yLCBhbmQKKy8vICAgcHV0cyB0aGUgcmVzdWx0
IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9uc3RyaWN0ZXE6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIC8vIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwg
cmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgc2xvd1BhdGg8X2xsaW50X3Ns
b3dfcGF0aF9uc3RyaWN0ZXE+KTsKKyAgICAvLyBDT01QQVJBVE9SID0gIiE9IgogICAgIHN0cmlj
dEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgX2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAorLy8gYnl0ZWNvZGU6IHByZV9p
bmMgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbc3JjRHN0cmVnSWRdID0gKytjZnJbc3Jj
RHN0cmVnSWRdOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRvIG51bWJlciwg
YWRkcyBvbmUsIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgYmFjayBpbiByZWdpc3RlciBzcmNE
c3QuCisKIF9sbGludF9vcF9wcmVfaW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2Fk
aSA0W1BDXSwgdDAKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAu
b3BQcmVJbmNTbG93Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAg
ICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGxvYWRpIDRbUENdLCB0MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ0lkPHQwPiA9IG9w
ZXJhbmRzW3NyY0RzdFJlZ0lkXTsKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIElu
dDMyVGFnLCAub3BQcmVJbmNTbG93ICAgICAgICAvLyBpZiAoY2ZyW3JlZ0lkPHQwPl0uVGFnICE9
IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdDx0MT4gPSBjZnJbcmVnSWQ8
dDA+XS5QYXlsb2FkOworICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgrK3Jlc3VsdDx0MT4gb3Zlcmxvd3MpIGdvdG8g
LnNsb3c7CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZCA9IHJlc3VsdDx0MT47Cisg
ICAgZGlzcGF0Y2goMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAub3BQcmVJbmNTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCi0gICAgZGlzcGF0Y2goMikKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKSAgICAgICAgICAgICAgICAgICAg
ICAvLyBjYWxsIHNsb3dfcGF0aF9wcmVfaW5jOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKKwogCisvLyBieXRlY29kZTogcHJlX2RlYyBzcmNEc3RSZWdJZAorLy8gZnVuY3Rpb246IGNm
cltzcmNEc3RSZWdJZF0gPSAtLWNmcltzcmNEc3RSZWdJZF07CisvLworLy8gICBDb252ZXJ0cyBy
ZWdpc3RlciBzcmNEc3QgdG8gbnVtYmVyLCBzdWJ0cmFjdHMgb25lLCBhbmQgcHV0cyB0aGUgcmVz
dWx0CisvLyAgIGJhY2sgaW4gcmVnaXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcHJlX2RlYzoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCi0gICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNT
bG93Ci0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0
Y2goMikKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyByZWdJZDx0MD4gPSBvcGVyYW5kc1tzcmNEc3RSZWdJZF07CisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdyAgICAg
ICAgLy8gaWYgKGNmcltyZWdJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyByZXN1bHQ8dDE+ID0gY2ZyW3JlZ0lkPHQwPl0uUGF5bG9hZDsKKyAgICBic3ViaW8g
MSwgdDEsIC5vcFByZURlY1Nsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAoLS1yZXN1bHQ8dDE+IG92ZXJsb3dzKSBnb3RvIC5zbG93OworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltyZWdJ
ZDx0MD5dLlBheWxvYWQgPSByZXN1bHQ8dDE+OworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29k
ZTsKIAogLm9wUHJlRGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
cmVfZGVjKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfcHJlX2RlYykgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfcHJlX2Rl
YzsKKyAgICBkaXNwYXRjaCgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIAorLy8gYnl0ZWNvZGU6IHBvc3Rf
aW5jIGRzdFJlZ0lkIHNyY0RzdFJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNm
cltzcmNEc3RSZWdJZF0rKzsKKy8vCisvLyAgIENvbnZlcnRzIHJlZ2lzdGVyIHNyY0RzdCB0byBu
dW1iZXIuIFRoZSBudW1iZXIgaXRzZWxmIGlzCisvLyAgIHdyaXR0ZW4gdG8gcmVnaXN0ZXIgZHN0
LCBhbmQgdGhlIG51bWJlciBwbHVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVnaXN0
ZXIgc3JjRHN0LgorCiBfbGxpbnRfb3BfcG9zdF9pbmM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93Ci0gICAgYmllcSB0MCwg
dDEsIC5vcFBvc3RJbmNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDIKLSAgICBtb3ZlIHQyLCB0MwotICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKLSAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lkXTsK
KyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cgICAgICAgLy8gaWYg
KGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVxIHQw
LCB0MSwgLm9wUG9zdEluY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
ZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQYXls
b2FkPHQyPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9hZDx0
Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKytuZXdQYXlsb2FkPHQzPiBvdmVy
Zmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50MzJU
YWc7CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+Owor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmcltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5vcFBv
c3RJbmNEb25lOgotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2Rl
OwogCiAub3BQb3N0SW5jU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
b3N0X2luYykKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3Bvc3RfaW5jKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bvc3Rf
aW5jOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTogcG9z
dF9kZWMgZHN0UmVnSWQgc3JjRHN0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0g
Y2ZyW3NyY0RzdFJlZ0lkXS0tOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3JjRHN0IHRv
IG51bWJlci4gVGhlIG51bWJlciBpdHNlbGYgaXMKKy8vICAgd3JpdHRlbiB0byByZWdpc3RlciBk
c3QsIGFuZCB0aGUgbnVtYmVyIG1pbnVzIG9uZSBpcyB3cml0dGVuCisvLyAgIGJhY2sgdG8gcmVn
aXN0ZXIgc3JjRHN0LgogCiBfbGxpbnRfb3BfcG9zdF9kZWM6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQotICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93Ci0gICAgYmllcSB0
MCwgdDEsIC5vcFBvc3REZWNEb25lCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDIKLSAgICBtb3ZlIHQyLCB0MwotICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cK
LSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQwPiA9IG9wZXJhbmRzW3NyY0RzdFJlZ0lk
XTsKKyAgICBsb2FkaSA0W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cgICAgICAgLy8g
aWYgKGNmcltzcmNJZDx0MD5dLlRhZyAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBiaWVx
IHQwLCB0MSwgLm9wUG9zdERlY0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAoc3JjSWQ8dDA+ID09IGRzdElkPHQxPikgZ290byAuZG9uZTsKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbGRQ
YXlsb2FkPHQyPiA9IGNmcltzcmNJZDx0MD5dLlBheWxvYWQ7CisgICAgbW92ZSB0MiwgdDMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3UGF5bG9h
ZDx0Mz4gPSBvbGRQYXlsb2FkPHQyPjsKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoLS1uZXdQYXlsb2FkPHQzPiBv
dmVyZmxvd3MpIGdvdG8gLnNsb3c7CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0gICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uVGFnID0gSW50
MzJUYWc7CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQxPl0uUGF5bG9hZCA9IG9sZFBheWxvYWQ8dDI+
OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNmcltzcmNJZDx0MD5dLlBheWxvYWQgPSBuZXdQYXlsb2FkPHQzPjsKIC5v
cFBvc3REZWNEb25lOgotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goMykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAub3BQb3N0RGVjU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9wb3N0X2RlYykKLSAgICBkaXNwYXRjaCgzKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3Bvc3RfZGVjKSAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Bv
c3RfZGVjOworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKwogCisvLyBieXRlY29kZTog
dG9fanNudW1iZXIgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRd
ID0gTnVtYmVyKGNmcltkc3RSZWdJZF0pOworLy8KKy8vICAgQ29udmVydHMgcmVnaXN0ZXIgc3Jj
IHRvIG51bWJlciwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCiAK
IF9sbGludF9vcF90b19qc251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkg
OFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MCwgdDIsIHQzKQotICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQK
LSAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKyAgICBsb2Fk
aSA4W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBzcmNJZDx0MD4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQxICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDE+ID0g
b3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0
MykgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc3Jj
SWQ8dDA+ID09PiB0YWc8dDI+LCBwYXlsb2FkPHQzPik7CisgICAgYmllcSB0MiwgSW50MzJUYWcs
IC5vcFRvSnNudW1iZXJJc0ludCAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRhZzx0Mj4g
PT0gSW50MzJUYWcpIGdvdG8gLmlzSW50OworICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAu
b3BUb0pzbnVtYmVyU2xvdyAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFnPHQy
PiA+PSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5zbG93OwogLm9wVG9Kc251bWJlcklzSW50OgotICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8
dDE+XS5UYWcgPSB0YWc8dDI+OworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLlBheWxvYWQgPSBw
YXlsb2FkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFRvSnNudW1i
ZXJTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX2pzbnVtYmVyKQot
ICAgIGRpc3BhdGNoKDMpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNu
dW1iZXIpICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfdG9fanNudW1iZXI7Cisg
ICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2RlOiBuZWdhdGUgZHN0
UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gLWNmcltzcmNSZWdJ
ZF07CisvLworLy8gICBDb252ZXJ0cyByZWdpc3RlciBzcmMgdG8gbnVtYmVyLCBuZWdhdGVzIGl0
LCBhbmQgcHV0cyB0aGUKKy8vICAgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KIAogX2xsaW50X29w
X25lZ2F0ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAg
bG9hZGkgNFtQQ10sIHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQot
ICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50Ci0gICAgYnRpeiB0Miwg
MHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwotICAgIG5lZ2kgdDIKLSAgICBzdG9yZWkgSW50MzJU
YWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgbG9hZGkgOFtQQ10sIHQwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDA+ID0gb3BlcmFu
ZHNbc3JjUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQzPiA9IG9wZXJhbmRzW2RzdFJlZ0lkXTsK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyY0lkPHQwPiA9PT4gdGFnPHQxPiwg
cGF5bG9hZDx0Mj4pOworICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50
ICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWc8dDE+ICE9IEludDMyVGFnKSBnb3RvIC5z
cmNOb3RJbnQ7CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaWYgKChwYXlsb2FkPHQyPiAmIDB4N2ZmZmZmZmYpID09IDAp
IGdvdG8gLnNsb3c7IC8vIGlmIChpcyAwIG9yIElOVF9NSU4pIC4uLgorICAgIG5lZ2kgdDIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBheWxv
YWQ8dDI+ID0gLXBheWxvYWQ8dDI+OworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IElu
dDMyVGFnOworICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwYXlsb2FkPHQyPjsK
KyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BOZWdhdGVTcmNOb3RJbnQ6Ci0gICAg
YmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKLSAgICB4b3JpIDB4ODAwMDAwMDAsIHQx
Ci0gICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGJpYSB0MSwgTG93
ZXN0VGFnLCAub3BOZWdhdGVTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgo
dW5zaWduZWQpdGFnPHQxPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBXZSBoYXZl
IGFuIHVuYm94ZWQgZG91YmxlLCBqdXN0IGludmVydCBpdHMgc2lnbiBiaXQ6CisgICAgeG9yaSAw
eDgwMDAwMDAwLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aGlnaFdvcmQ8dGFnPHQxPj4uc2lnbkJpdCA9ICFoaWdoV29yZDx0YWc8dDE+Pi5zaWduQml0Owor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlRhZyA9IHRhZzx0MT47CisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2Rz
dElkPHQzPl0uUGF5bG9hZCA9IHBheWxvYWQ8dDI+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogLm9wTmVnYXRlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZWdhdGUpCi0gICAgZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9uZWdhdGUpICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9uZWdh
dGU7CisgICAgZGlzcGF0Y2goMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIG1hY3JvIGJpbmFyeU9wQ3Vz
dG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQ
YXRoKQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKLSAg
ICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAg
ICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQotICAgIGRp
c3BhdGNoKDUpCisgICAgLy8gbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0
aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIHsKKyAgICBsb2FkaSAxMltQ
Q10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMy
SWQ8dDI+ID0gb3BlcmFuZHNbc3JjMlJlZ0lkXTsKKyAgICBsb2FkaSA4W1BDXSwgdDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmMxSWQ8dDA+ID0gb3Bl
cmFuZHNbc3JjMVJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJ
ZDx0Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHNyYzFJZDx0MD4gPT0+IHRhZzE8dDI+LCBwYXlsb2FkMTx0MD4pOwor
ICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDFcbiIpOworICAgIGJpbmVx
IHQyLCBJbnQzMlRhZywgLm9wMU5vdEludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmICh0YWcxPHQyPiAhPSBJbnQzMlRhZykgZ290byAub3AxTm90SW50OworICAgIGJpbmVxIHQz
LCBJbnQzMlRhZywgLm9wMk5vdEludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
ICh0YWcyPHQzPiAhPSBJbnQzMlRhZykgZ290byAub3AyTm90SW50OworICAgIG1sYW1EbyAvLyBw
cmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDIgfCB0MSAlbGQsIHQwICVsZFxuIiwgcjEuaSwgcjAu
aSk7CisgICAgLy8gb3AxIGFuZCBvcDIgYXJlIGludDMyOiBkbyBmYXN0IGludDMyIG9wZXJhdGlv
biwgYW5kIGVuZC4KKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07Cisg
ICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikgICAgICAg
ICAgICAgLy8gaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHRhZzI8dDM+LCBwYXlsb2FkMjx0MT4s
IHBheWxvYWQxPHQwPiwgLnNsb3csIHQyKTsKKyAgICAjIG1sYW1EbyAvLyBpZiAobWxhbV9QUklO
VEYpIHByaW50ZigiIG1sYW0gQklOIE9QIGludCB8IHJlc3VsdDx0MD4gPSAlbGRcbiIsIHIwLmkp
OworICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIEJJTiBPUCBpbnQgfCByZXN1bHQ8dDA+ID0g
JWxkXG4iLCByMC5pKTsKKyAgICBkaXNwYXRjaCg1KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcDFOb3RJ
bnQ6Ci0gICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNl
Y29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgotICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAu
c2xvdwotICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCi0gICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdwotICAgIGNpMmQgdDEsIGZ0MQotICAgIGptcCAub3AxTm90
SW50UmVhZHkKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgbWxhbSBCSU4gT1Agc3RlcCAzXG4iKTsK
KyAgICAvLyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29u
ZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xv
dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQpdGFn
MTx0Mj4gPiBMb3dlc3RUYWcpIGdvdG8gLnNsb3c7CisgICAgLy8gb3AxIGlzIGludC1lbmNvZGVk
LWRvdWJsZSwgb3AyIGlzID8/PzogY2hlY2sgb3AyLgorICAgIGJpYiB0MywgTG93ZXN0VGFnLCAu
b3AxTm90SW50T3AyRG91YmxlICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgodW5zaWduZWQp
dGFnMjx0Mz4gPCBMb3dlc3RUYWcpIGdvdG8gLm9wMU5vdEludE9wMkRvdWJsZTsKKyAgICBiaW5l
cSB0MywgSW50MzJUYWcsIC5zbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpZiAoIXRhZzI8dDM+ICE9IEludDMyVGFnKSBnb3RvIC5zbG93OworICAgIC8vIG9wMSBpcyBp
bnQtZW5jb2RlZC1kb3VibGUsIG9wMiBpcyBpbnQzMjogY29udmVydCBvcDIgdG8gZG91YmxlLgor
ICAgIGNpMmQgdDEsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9wMkRibDxmdDE+ID0gRG91YmxlKHBheWxvYWQyPHQxPik7CisgICAgam1wIC5v
cDFOb3RJbnRSZWFkeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byAub3AxTm90SW50UmVhZHk7CiAub3AxTm90SW50T3AyRG91YmxlOgotICAgIGZpaTJkIHQx
LCB0MywgZnQxCisgICAgbWxhbURvIC8vIHByaW50ZigiIG1sYW0gQklOIE9QIHN0ZXAgNFxuIik7
CisgICAgLy8gb3AxIGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3AyIGlzIGludC1lbmNvZGVkLWRv
dWJsZTogY29udmVydCBvcDIgdG8gZG91YmxlLgorICAgIGZpaTJkIHQxLCB0MywgZnQxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wMkRibDxmdDE+ID0gRG91
YmxlKHBheWxvYWQyPHQxPiwgdGFnMjx0Mz4pOwogLm9wMU5vdEludFJlYWR5OgotICAgIGxvYWRp
IDRbUENdLCB0MQotICAgIGZpaTJkIHQwLCB0MiwgZnQwCi0gICAgZG91YmxlT3BlcmF0aW9uKGZ0
MSwgZnQwKQotICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDUpCisg
ICAgbWxhbURvIC8vIHByaW50ZigiIG1sYW0gQklOIE9QIHN0ZXAgNVxuIik7CisgICAgLy8gb3Ax
IGlzIGludC1lbmNvZGVkLWRvdWJsZSwgb3AyIGlzIGRvdWJsZToKKyAgICBsb2FkaSA0W1BDXSwg
dDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0
MT4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgZmlpMmQgdDAsIHQyLCBmdDAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJsPGZ0MD4gPSBEb3VibGUo
cGF5bG9hZDE8dDA+LCB0YWcxPHQyPik7CisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0RGJsPGZ0MD4gPSBkb3Vi
bGVPcGVyYXRpb24ob3AyRGJsPGZ0MT4sIG9wMURibDxmdDA+KTsKKyAgICAjIG1sYW0gbWxhbURv
IC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgbWxhbSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0
PGZ0MD4gPSAlZVxuIiwgZDAuZCk7CisgICAgbWxhbURvIC8vIHByaW50ZigiIG1sYW0gQklOIE9Q
IGRvdWJsZSB8IHJlc3VsdDxmdDA+ID0gJWVcbiIsIGQwLmQpOworICAgIHN0b3JlZCBmdDAsIFtj
ZnIsIHQxLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+OworICAgIGRpc3BhdGNoKDUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRl
Y29kZTsKIAogLm9wMk5vdEludDoKLSAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBh
biBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KLSAgICBsb2FkaSA0
W1BDXSwgdDIKLSAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKLSAgICBjaTJkIHQwLCBmdDAK
LSAgICBmaWkyZCB0MSwgdDMsIGZ0MQotICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKLSAg
ICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAv
LyBwcmludGYoIiBtbGFtIEJJTiBPUCBzdGVwIDZcbiIpOworICAgIC8vIEZpcnN0IG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dC4KKyAgICBsb2FkaSA0W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RSZWdJZF07CisgICAgYmlhIHQz
LCBMb3dlc3RUYWcsIC5zbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgKCh1bnNpZ25lZCl0YWcyPHQzPiA+IExvd2VzdFRhZykgZ290byAuc2xvdzsKKyAgICAvLyBv
cDEgaXMgaW50MzIsIG9wMiBpcyBpbnQtZW5jb2RlZC1kb3VibGU6CisgICAgY2kyZCB0MCwgZnQw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AxRGJs
PGZ0MD4gPSBEb3VibGUocGF5bG9hZDE8dDA+KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICBmaWkyZCB0MSwgdDMsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBvcDJEYmw8ZnQxPiA9IERvdWJsZShwYXlsb2FkMjx0MT4sIHRhZzI8dDM+KTsKKyAg
ICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyByZXN1bHREYmw8ZnQwPiA9IGRvdWJsZU9wZXJhdGlvbihvcDJEYmw8ZnQxPiwgb3Ax
RGJsPGZ0MD4pOworICAgICMgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCIgbWxh
bSBCSU4gT1AgZG91YmxlIHwgcmVzdWx0PGZ0MD4gPSAlZVxuIiwgZDAuZCk7CisgICAgbWxhbURv
IC8vIHByaW50ZigiIG1sYW0gQklOIE9QIGRvdWJsZSB8IHJlc3VsdDxmdDA+ID0gJWVcbiIsIGQw
LmQpOworICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0MT5dLkRvdWJsZSA9IHJlc3VsdERibDxmdDA+Owor
ICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLnNsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDUpCisgICAgbWxhbURvIC8vIHByaW50ZigiIG1sYW0g
QklOIE9QIHN0ZXAgN1xuIik7CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93IHBhdGg7CisgICAgZGlzcGF0
Y2goNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z290byBuZXh0IGJ5dGVjb2RlOworICAgIC8vIH0gRU5EIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUuIAogZW5kCiAKIG1hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJh
dGlvbiwgc2xvd1BhdGgpCisgICAgLy8gbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwg
ZG91YmxlT3BlcmF0aW9uLCBzbG93UGF0aCkgewogICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAg
ICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAg
ICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKLSAgICAgICAgICAgIHN0
b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCi0gICAgICAgICAgICBzdG9y
ZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIC8vIG1h
Y3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KSB7CisgICAgICAgICAgICBp
bnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KSAgICAgICAgICAgICAgICAgLy8gICBp
bnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KTsKKyAgICAgICAgICAgIHN0b3JlaSBp
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdICAgICAgICAgICAvLyAgIGNmcltpbmRl
eF0uVGFnID0gaW50MzJUYWc7CisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0gICAgICAgICAgLy8gICBjZnJbaW5kZXhdLlBheWxvYWQgPSByaWdo
dDsKKyAgICAgICAgICAgICMgbWxhbURvIC8vIGlmIChtbGFtUHJpbnQpIHsgcHJpbnRmKCIgICAg
ICAgIG1sYW0gQVNNIEFERCB8IGNmciAlcFtpbmRleCAlbGRdID0gcmVzdWx0ICVsZCB8IGNmclsx
XTwlcD4gPSAlcFxuIiwgY2FsbEZyYW1lLCByMi5pLCByMC5pLCBDQVNUPHZvaWQgKj4oZnAuaThw
ICsgKDEgPDwgMykgKyAwKSwgKkNBU1Q8dm9pZCAqKj4oZnAuaThwICsgKDEgPDwgMykgKyAwKSk7
IG1sYW1QcmludCA9IGZhbHNlOyB9CisgICAgICAgICAgICBtbGFtRG8gLy8geyBwcmludGYoIiAg
ICAgICAgbWxhbSBBU00gQUREIHwgY2ZyICVwW2luZGV4ICVsZF0gPSByZXN1bHQgJWxkIHwgY2Zy
WzFdPCVwPiA9ICVwXG4iLCBjYWxsRnJhbWUsIHIyLmksIHIwLmksIENBU1Q8dm9pZCAqPihmcC5p
OHAgKyAoMSA8PCAzKSArIDApLCAqQ0FTVDx2b2lkICoqPihmcC5pOHAgKyAoMSA8PCAzKSArIDAp
KTsgbWxhbVByaW50ID0gZmFsc2U7IH0KKyAgICAgICAgICAgIC8vIH0gRU5EIG1hY3JvLgogICAg
ICAgICBlbmQsCi0gICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAgICAgIGRv
dWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpIC8vICAgYmluYXJ5T3BDdXN0b21TdG9yZSgpOworICAg
IC8vIH0gRU5EIG1hY3JvIGJpbmFyeU9wLgogZW5kCiAKKy8vIGJ5dGVjb2RlOiBhZGQgZHN0UmVn
SWQgc3JjMVJlZ0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJb
c3JjMlJlZ0lkXSArIGNmcltzcmMxUmVnSWRdOworLy8KKy8vICAgQWRkcyByZWdpc3RlciBzcmMx
IGFuZCByZWdpc3RlciBzcmMyLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJlZ2lzdGVy
IGRzdC4gKEpTIGFkZCBtYXkgYmUgc3RyaW5nIGNvbmNhdGVuYXRpb24gb3IKKy8vICAgbnVtZXJp
YyBhZGQsIGRlcGVuZGluZyBvbiB0aGUgdHlwZXMgb2YgdGhlIG9wZXJhbmRzLikKKwogX2xsaW50
X29wX2FkZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8vIG1sYW1QcmludCA9
IHRydWU7CiAgICAgYmluYXJ5T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
YmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9hZGQpCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIG1sYW1EbyAvLyBw
cmludGYoIiAgICoqKiBtbGFtIEBAQCBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgQCAlczolZFxu
IiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICBiYWRkaW8gbGVmdCwgcmln
aHQsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAoKHJpZ2h0ICs9IGxl
ZnQpIG92ZXJmbG93cykgZ290byBzbG93OworICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAgICoqKiBtbGFtIEBA
QCBhZGRkIGxlZnQsIHJpZ2h0IEAgJXM6JWRcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwor
ICAgICAgICAgICAgYWRkZCBsZWZ0LCByaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgcmlnaHQgPSBsZWZ0ICsgcmlnaHQ7CisgICAgICAgIGVuZCwKKyAgICAgICAg
X2xsaW50X3Nsb3dfcGF0aF9hZGQpIC8vIGJpbmFyeU9wKCJiYWRkaW8gbGVmdCwgcmlnaHQsIHNs
b3ciLCAiYWRkZCBsZWZ0LCByaWdodCIsIF9sbGludF9zbG93X3BhdGhfYWRkKSB7CisgICAgLy8g
fSAvLyBFTkQgYmluYXJ5T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBtdWwgZHN0UmVnSWQgc3JjMVJl
Z0lkIHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lk
XSAqIGNmcltzcmMyUmVnSWRdCisvLworLy8gICBNdWx0aXBsaWVzIHJlZ2lzdGVyIHNyYzEgYW5k
IHJlZ2lzdGVyIHNyYzIgKGNvbnZlcnRlZCB0bworLy8gICBudW1iZXJzKSwgYW5kIHB1dHMgdGhl
IHByb2R1Y3QgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfbXVsOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAoaW50MzJU
YWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKLSAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2gg
PSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVn
aXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCi0gICAgICAgICAgICBtb3ZlIHJpZ2h0LCBz
Y3JhdGNoCi0gICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdwotICAgICAgICAg
ICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKLSAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdwot
ICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAgICAgLy8gbWFjcm8gKGlu
dDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IHNj
cmF0Y2ggPSBpbnQzMlRhZyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCB3
ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50
LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc2NyYXRjaCA9IHJpZ2h0OworICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0
Y2gsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKChzY3JhdGNoICo9IGxlZnQpIG92
ZXJmbG93cykgZ290byBzbG93OworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNjcmF0Y2ggIT0gMCkgZ290byAuZG9uZTsK
KyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmIChsZWZ0IDwgMCkgZ290byAuc2xvdzsKKyAgICAgICAgICAgIGJpbHQgcmlnaHQs
IDAsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChyaWdodCA8IDApIGdv
dG8gLnNsb3c7CiAgICAgICAgIC5kb25lOgotICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XSAgICAgICAvLyBjZnJbaW5kZXhdLlRhZyA9IEludDMyVGFn
OworICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0gICAgLy8gY2ZyW2luZGV4XS5QYXlsb2FkID0gc2NyYXRjaDsKKyAgICAgICAgICAgIC8vIH0g
RU5EIG1hY3JvLgogICAgICAgICBlbmQsCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVs
ZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfbXVsKQorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpCisgICAgICAgICAgICBtdWxkIGxlZnQsIHJpZ2h0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IGxlZnQgKiByaWdodDsKKyAgICAg
ICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX211bCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYmluYXJ5T3BDdXN0b21TdG9yZSguLi4sIF9sbGludF9zbG93X3BhdGhf
bXVsKTsKKwogCisvLyBieXRlY29kZTogc3ViIGRzdFJlZ0lkIHNyYzFSZWdJZCBzcmMyUmVnSWQK
Ky8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyYzFSZWdJZF0gLSBjZnJbc3JjMlJl
Z0lkXTsKKy8vCisvLyAgIFN1YnRyYWN0cyByZWdpc3RlciBzcmMyIChjb252ZXJ0ZWQgdG8gbnVt
YmVyKSBmcm9tIHJlZ2lzdGVyCisvLyAgIHNyYzEgKGNvbnZlcnRlZCB0byBudW1iZXIpLCBhbmQg
cHV0cyB0aGUgZGlmZmVyZW5jZSBpbgorLy8gICByZWdpc3RlciBkc3QuCiAKIF9sbGludF9vcF9z
dWI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpbmFyeU9wKAotICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCi0gICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGlu
dF9zbG93X3BhdGhfc3ViKQorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAg
ICAgICAgICBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIGlmICgocmlnaHQgLT0gbGVmdCkgb3ZlcmZsb3dzKSBnb3RvIHNsb3c7CisgICAgICAgIGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KQorICAgICAgICAgICAgc3ViZCBsZWZ0LCBy
aWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByaWdodCA9IHJpZ2h0IC0g
bGVmdDsKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikgLy8gYmlu
YXJ5T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3N1YikgeworICAgIC8vIH0gLy8gRU5EIGJpbmFy
eU9wKCkKKwogCisvLyBieXRlY29kZTogZGl2IGRzdFJlZ0lkIGRpdmlkZW5kUmVnSWQgZGl2aXNv
clJlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmcltkaXZpZGVuZFJlZ0lkXSAv
IGNmcltkaXZpc29yUmVnSWRdOworLy8KKy8vICAgRGl2aWRlcyByZWdpc3RlciBkaXZpZGVuZCAo
Y29udmVydGVkIHRvIG51bWJlcikgYnkgdGhlCisvLyAgIHJlZ2lzdGVyIGRpdmlzb3IgKGNvbnZl
cnRlZCB0byBudW1iZXIpLCBhbmQgcHV0cyB0aGUKKy8vICAgcXVvdGllbnQgaW4gcmVnaXN0ZXIg
ZHN0LgogCiBfbGxpbnRfb3BfZGl2OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaW5hcnlP
cEN1c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93
LCBpbmRleCkKLSAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCi0gICAgICAgICAgICBjaTJkIHJp
Z2h0LCBmdDEKLSAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKLSAgICAgICAgICAgIGJjZDJpIGZ0
MSwgcmlnaHQsIC5ub3RJbnQKLSAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdCi0gICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0KLSAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAgICAgLy8gbWFj
cm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpIHsKKyAgICAgICAgICAgIGNp
MmQgbGVmdCwgZnQwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnREYmw8
ZnQwPiA9IERvdWJsZShsZWZ0KTsKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0RGJsPGZ0MT4gPSBEb3VibGUocmlnaHQp
OworICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcmVzdWx0RGJsPGZ0MT4gPSByaWdodERibDxmdDA+IC8gbGVmdERibDxmdDE+Owor
ICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludCAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmVzdWx0PHJpZ2h0PiA9IEludChyZXN1bHREYmw8ZnQxPikgaWYgKChkb3VibGUpKGlu
dClyZXN1bHREYmwgPSByZXN1bHREYmwpIGVsc2UgZ290byAubm90SW50OworICAgICAgICAgICAg
c3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0gICAgICAgLy8gY2ZyW2lu
ZGV4XS5UYWcgPSBpbnQzMlRhZzsKKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9m
ZnNldFtjZnIsIGluZGV4LCA4XSAgICAgIC8vIGNmcltpbmRleF0uUGF5bG9hZCA9IHJpZ2h0Owor
ICAgICAgICAgICAgam1wIC5kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ290byAuZG9uZTsKICAgICAgICAgLm5vdEludDoKLSAgICAgICAgICAgIHN0b3JlZCBm
dDEsIFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgs
IDhdICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2luZGV4XS5Eb3VibGUgPSByZXN1bHREYmw8
ZnQxPjsKICAgICAgICAgLmRvbmU6CisgICAgICAgICAgICAvLyBFTkQgbWFjcm8uCiAgICAgICAg
IGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwK
LSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9kaXYpCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkKKyAgICAgICAgICAgIGRpdmQgbGVmdCwgcmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJpZ2h0ID0gcmlnaHQgLyBsZWZ0OworICAgICAgICBlbmQsCisgICAgICAgIF9s
bGludF9zbG93X3BhdGhfZGl2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW5h
cnlPcEN1c3RvbVN0b3JlKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9kaXYpOwogCiAKIG1hY3JvIGJp
dE9wKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpCi0gICAgbG9hZGkgMTJbUENdLCB0Mgot
ICAgIGxvYWRpIDhbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQotICAgIGJpbmVx
IHQzLCBJbnQzMlRhZywgLnNsb3cKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93Ci0gICAg
bG9hZGkgNFtQQ10sIHQyCi0gICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCi0gICAgc3RvcmVp
IHQzLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaChhZHZhbmNlKQorICAgIC8vIG1hY3JvIGJpdE9wKG9w
ZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpIHsKKyAgICBsb2FkaSAxMltQQ10sIHQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNyYzJJZDx0Mj4gPSBvcGVyYW5kc1tzcmMyUmVnSWRd
OworICAgIGxvYWRpIDhbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Jj
MUlkPHQwPiA9IG9wZXJhbmRzW3NyYzFSZWdJZF07CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKSAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0
Mj4gPT0+IHRhZzI8dDM+LCBwYXlsb2FkMjx0MT4pOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc3Jj
MUlkPHQwPiA9PT4gdGFnMTx0Mj4sIHBheWxvYWQxPHQwPikKKyAgICBiaW5lcSB0MywgSW50MzJU
YWcsIC5zbG93ICAgICAgICAgICAgICAgICAgIC8vIGlmICh0YWcyPHQzPiAhPSBJbnQzMlRhZykg
Z290byAuc2xvdzsKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93ICAgICAgICAgICAgICAg
ICAgIC8vIGlmICh0YWcxPHQyPiAhPSBJbnQzMlRhZykgZ290byAuc2xvdzsKKyAgICBsb2FkaSA0
W1BDXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQyPiA9IG9wZXJh
bmRzW2RzdFJlZ0lkXTsKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykgICAgICAgICAgICAg
ICAgICAgIC8vIHJlc3VsdDx0MD4gPSBvcGVyYXRpb24ocGF5bG9hZDI8dDE+LCBwYXlsb2FkMTx0
MD4sIC5zbG93KTsKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAg
ICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IHRhZzI8dDM+OworICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgLy8gY2ZyW2RzdElkPHQyPl0uUGF5bG9hZCA9
IHJlc3VsdDx0MD47CisgICAgZGlzcGF0Y2goYWR2YW5jZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5zbG93OgotICAgIGNhbGxTbG93UGF0aChz
bG93UGF0aCkKLSAgICBkaXNwYXRjaChhZHZhbmNlKQorICAgIGNhbGxTbG93UGF0aChzbG93UGF0
aCkgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93UGF0aDsKKyAgICBkaXNwYXRjaChh
ZHZhbmNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsK
KyAgICAvLyBFTkQgbWFjcm8gbWFjcm8gYml0T3AuCiBlbmQKIAorCisvLyBieXRlY29kZTogbHNo
aWZ0IGRzdFJlZ0lkIHZhbFJlZ0lkIHNoaWZ0UmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gSW50MzIoY2ZyW3ZhbFJlZ0lkXSkgPDwgY2ZyW3NoaWZ0UmVnSWRdKTsKKy8vCisvLyAg
IFBlcmZvcm1zIGxlZnQgc2hpZnQgb2YgcmVnaXN0ZXIgdmFsIChjb252ZXJ0ZWQgdG8gaW50MzIp
IGJ5CisvLyAgIHJlZ2lzdGVyIHNoaWZ0IChjb252ZXJ0ZWQgdG8gdWludDMyKSwgYW5kIHB1dHMg
dGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3QuCisKIF9sbGludF9vcF9sc2hpZnQ6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAotICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpCisgICAgICAgICAgICBsc2hpZnRpIGxlZnQsIHJpZ2h0ICAgICAgICAgLy8g
cmlnaHQgPSAocmlnaHQgPDwgbGVmdCk7CisgICAgICAgIGVuZCwKICAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9sc2hpZnQsCi0gICAgICAgIDQpCisgICAgICAgIDQpIC8vIGJpdE9wKC4uLiwgX2xs
aW50X3Nsb3dfcGF0aF9sc2hpZnQsIDQpIHsKKyAgICAvLyB9IC8vIEVORCBiaXRPcCgpCiAKIAor
Ly8gYnl0ZWNvZGU6IHJzaGlmdCBkc3RSZWdJZCB2YWxSZWdJZCBzaGlmdFJlZ0lkCisvLyBmdW5j
dGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGNmclt2YWxSZWdJZF0gPj4gY2ZyW3NoaWZ0UmVnSWRdOwor
Ly8KKy8vICAgUGVyZm9ybXMgYXJpdGhtZXRpYyByaWdodCBzaGlmdCBvZiByZWdpc3RlciB2YWwg
KGNvbnZlcnRlZAorLy8gICB0byBpbnQzMikgYnkgcmVnaXN0ZXIgc2hpZnQgKGNvbnZlcnRlZCB0
bworLy8gICB1aW50MzIpLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KKwog
X2xsaW50X29wX3JzaGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCi0gICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHJzaGlmdGkgbGVm
dCwgcmlnaHQgICAgICAgICAvLyByaWdodCA9IChyaWdodCA+PiBsZWZ0KTsKKyAgICAgICAgZW5k
LAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwKLSAgICAgICAgNCkKKyAgICAgICAg
NCkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwgNCkgeworICAgIC8vIH0g
Ly8gRU5EIGJpdE9wKCkKIAorLy8gYnl0ZWNvZGU6IHJzaGlmdCBkc3RSZWdJZCB2YWxSZWdJZCBz
aGlmdFJlZ0lkCisvLyBmdW5jdGlvbjoKKy8vCisvLyAgIFBlcmZvcm1zIGxvZ2ljYWwgcmlnaHQg
c2hpZnQgb2YgcmVnaXN0ZXIgdmFsIChjb252ZXJ0ZWQKKy8vICAgdG8gdWludDMyKSBieSByZWdp
c3RlciBzaGlmdCAoY29udmVydGVkIHRvCisvLyAgIHVpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1
bHQgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfdXJzaGlmdDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKLSAg
ICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0Ci0gICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCBzbG93CisgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCByaWdodCAgICAgICAgLy8gcmlnaHQg
PSAoKHVuc2lnbmVkKXJpZ2h0ID4+IGxlZnQpOworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwg
c2xvdyAgICAgICAgIC8vIGlmIChyaWdodCA8IDApIGdvdG8gc2xvdzsKICAgICAgICAgZW5kLAog
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3Vyc2hpZnQsCi0gICAgICAgIDQpCisgICAgICAgIDQp
IC8vIGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF91cnNoaWZ0LCA0KSB7CisgICAgLy8gfSAv
LyBFTkQgYml0T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBiaXRhbmQgZHN0UmVnSWQgc3JjMVJlZ0lk
IHNyYzJSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSBjZnJbc3JjMVJlZ0lkXSAm
IGNmcltzcmMyUmVnSWRdOworLy8KKy8vICAgQ29tcHV0ZXMgYml0d2lzZSBBTkQgb2YgcmVnaXN0
ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8gICBhbmQgcmVnaXN0ZXIgc3JjMiAoY29u
dmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBk
c3QuCiAKIF9sbGludF9vcF9iaXRhbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9w
KAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBhbmRpIGxl
ZnQsIHJpZ2h0ICAgICAgICAgICAgLy8gcmlnaHQgPSAocmlnaHQgJiBsZWZ0KTsKKyAgICAgICAg
ZW5kLAogICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdGFuZCwKLSAgICAgICAgNSkKKyAgICAg
ICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdGFuZCwgNSkgeworICAgIC8v
IH0gLy8gRU5EIGJpdE9wKCkKIAogCisvLyBieXRlY29kZTogYml0eG9yIGRzdFJlZ0lkIHNyYzFS
ZWdJZCBzcmMyUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyYzFSZWdJ
ZF0gXiBjZnJbc3JjMlJlZ0lkXTsKKy8vCisvLyAgIENvbXB1dGVzIGJpdHdpc2UgWE9SIG9mIHJl
Z2lzdGVyIHNyYzEgKGNvbnZlcnRlZCB0byBpbnQzMikKKy8vICAgYW5kIHJlZ2lzdGVyIHNyYzIg
KGNvbnZlcnRlZCB0byBpbnQzMiksIGFuZCBwdXRzIHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0
ZXIgZHN0LgorCiBfbGxpbnRfb3BfYml0eG9yOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBi
aXRPcCgKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgeG9y
aSBsZWZ0LCByaWdodCAgICAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0IF4gbGVmdCk7CisgICAg
ICAgIGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsCi0gICAgICAgIDUpCisg
ICAgICAgIDUpIC8vIGJpdE9wKC4uLiwgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsIDUpIHsKKyAg
ICAvLyB9IC8vIEVORCBiaXRPcCgpCisKIAorLy8gYnl0ZWNvZGU6IGJpdG9yIGRzdFJlZ0lkIHNy
YzFSZWdJZCBzcmMyUmVnSUQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVnSWRdID0gY2ZyW3NyYzFS
ZWdJZF0gfCBjZnJbc3JjMlJlZ0lkXTsKKy8vCisvLyAgIENvbXB1dGVzIGJpdHdpc2UgT1Igb2Yg
cmVnaXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKQorLy8gICBhbmQgcmVnaXN0ZXIgc3Jj
MiAoY29udmVydGVkIHRvIGludDMyKSwgYW5kIHB1dHMgdGhlCisvLyAgIHJlc3VsdCBpbiByZWdp
c3RlciBkc3QuCiAKIF9sbGludF9vcF9iaXRvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Yml0T3AoCi0gICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgb3Jp
IGxlZnQsIHJpZ2h0ICAgICAgICAgICAgIC8vIHJpZ2h0ID0gKHJpZ2h0IHwgbGVmdCk7CisgICAg
ICAgIGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXRvciwKLSAgICAgICAgNSkKKyAg
ICAgICAgNSkgLy8gYml0T3AoLi4uLCBfbGxpbnRfc2xvd19wYXRoX2JpdG9yLCA1KSB7CisgICAg
Ly8gfSAvLyBFTkQgYml0T3AoKQorCiAKKy8vIGJ5dGVjb2RlOiBjaGVja19oYXNfaW5zdGFuY2Ug
Y29uc3RydWN0b3JSZWdJZAorLy8gZnVuY3Rpb246IGFzc2VydCh0eXBlb2YgY2ZyW2NvbnN0cnVj
dG9yUmVnSWRdLkhhc0luc3RhbmNlID09ICJmdW5jdGlvbiIpOworLy8KKy8vICAgQ2hlY2sgJ2Nv
bnN0cnVjdG9yJyBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgaW50ZXJuYWwgcHJvcGVydHkKKy8vICAg
W0hhc0luc3RhbmNlXSAoaS5lLiBpcyBhIGZ1bmN0aW9uIC4uLiAqc2hha2VzIGhlYWQgc2FkbHkg
YXQKKy8vICAgSlNDIEFQSSopLiBSYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHJlZ2lzdGVyIGNvbnN0
cnVjdG9yIGlzIG5vdAorLy8gICBhIHZhbGlkIHBhcmFtZXRlciBmb3IgaW5zdGFuY2VvZi4KIAog
X2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENl
bGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdwotICAgIGRpc3BhdGNoKDIpCisgICAgbG9hZGkgNFtQQ10sIHQxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0
b3JJZDx0MT4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
KSAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChjb25zdHJ1Y3RvcklkPHQxPiwgQ2Vs
bFRhZywgb2JqPHQwPiwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpOworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHN0cnVjdHVyZTx0MD4gPSBvYmo8dDA+LnN0cnVjdHVyZTsKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdyAgLy8gaWYgIShzdHJ1Y3R1cmU8dDA+LnR5
cGVJbmZvLmZsYWdzICYgSW1wbGVtZW50c0hhc0luc3RhbmNlKSBnb3RvIC5zbG93OworICAgIGRp
c3BhdGNoKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY2hlY2tfaGFzX2luc3Rh
bmNlKQotICAgIGRpc3BhdGNoKDIpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y2hlY2tfaGFzX2luc3RhbmNlKSAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzbG93X3Bh
dGhfY2hlY2tfaGFzX2luc3RhbmNlOworICAgIGRpc3BhdGNoKDIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKKwogCisvLyBieXRlY29kZTogaW5zdGFuY2VvZiBkc3RSZWdJZCB2YWx1ZVJlZ0lk
IGNvbnN0cnVjdG9yUmVnSWQgY29uc3RydWN0b3JQcm90b1JlZ0lkCisvLyBmdW5jdGlvbjogY2Zy
W2RzdFJlZ0lkXSA9IGNmclt2YWx1ZVJlZ0lkXSBpbnN0YW5jZW9mIGNmcltjb25zdHJ1Y3RvclJl
Z2lkXTsKKy8vCisvLyAgIFRlc3RzIHdoZXRoZXIgcmVnaXN0ZXIgdmFsdWUgaXMgYW4gaW5zdGFu
Y2Ugb2YgcmVnaXN0ZXIKKy8vICAgY29uc3RydWN0b3IsIGFuZCBwdXRzIHRoZSBib29sZWFuIHJl
c3VsdCBpbiByZWdpc3RlcgorLy8gICBkc3QuIFJlZ2lzdGVyIGNvbnN0cnVjdG9yUHJvdG8gbXVz
dCBjb250YWluIHRoZSAicHJvdG90eXBlIgorLy8gICBwcm9wZXJ0eSAobm90IHRoZSBhY3R1YWwg
cHJvdG90eXBlKSBvZiB0aGUgb2JqZWN0IGluCisvLyAgIHJlZ2lzdGVyIGNvbnN0cnVjdG9yLiBU
aGlzIGxvb2t1cCBpcyBzZXBhcmF0ZWQgc28gdGhhdAorLy8gICBwb2x5bW9ycGhpYyBpbmxpbmUg
Y2FjaGluZyBjYW4gYXBwbHkuCisvLworLy8gICBSYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHJlZ2lz
dGVyIGNvbnN0cnVjdG9yIGlzIG5vdCBhbgorLy8gICBvYmplY3QuCiAKIF9sbGludF9vcF9pbnN0
YW5jZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBp
bXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgIC8vIENoZWNr
IHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9y
LgogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCi0gICAgbG9hZGkgMTJb
UENdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0
MCkKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICAKLSAgICAjIEFjdHVhbGx5IGRv
IHRoZSB3b3JrLgotICAgIGxvYWRpIDE2W1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3Rh
bmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgotICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQot
ICAgIAotICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCi0g
ICAgbW92ZSAxLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVj
dG9ySWQ8dDE+ID0gb3BlcmFuZHNbY29uc3RydWN0b3JSZWdJZF07CisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQo
Y29uc3RydWN0b3JJZDx0MT4sIG9iajx0MD4pOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHN0cnVjdHVyZTx0MD4gPSBvYmo8dDA+LnN0cnVjdHVyZTsKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cgLy8gaWYgIShzdHJ1Y3R1cmU8dDA+LnR5
cGVJbmZvLmZsYWdzICYgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkgZ290byAuc2xvdzsK
KworICAgIC8vIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNvbnN0cnVjdG9yUHJvdG9JZDx0MD4gPSBvcGVyYW5kc1tjb25zdHJ1Y3RvclBy
b3RvUmVnSWRdOworICAgIGxvYWRpIDRbUENdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdElkPHQzPiA9
IG9wZXJhbmRzW2RzdFJlZ0lkXTsKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KSAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChjb25zdHJ1Y3RvclByb3RvSWQ8dDA+LCBDZWxs
VGFnLCBwcm90b09iajx0MT4sIC5zbG93KTsKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzdHJ1Y3R1cmU8dDI+ID0gcHJvdG9PYmo8dDE+LnN0cnVjdHVyZTsKKyAgICBiYmIgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5v
cEluc3RhbmNlb2ZTbG93ICAgICAvLyBpZiAoKHVuc2lnbmVkKXN0cnVjdHVyZTx0Mj4udHlwZUlu
Zm8udHlwZSA8IE9iamVjdFR5cGUpIGdvdG8gLnNsb3c7CisgICAgbG9hZGkgOFtQQ10sIHQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdmFsdWVJZDx0MD4gPSBvcGVyYW5kc1t2YWx1ZVJlZ0lkXTsKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZT
bG93KSAgICAgICAgICAgICAgICAgICAvLyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh2
YWx1ZUlkPHQwPiwgQ2VsbFRhZywgb2JqPHQyPiwgLnNsb3cpOworCisgICAgLy8gUmVnaXN0ZXIg
c3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcHJvdG9XYXNGb3VuZDx0MD4gPSB0cnVlOwogLm9wSW5zdGFuY2VvZkxvb3A6
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCi0gICAgbG9hZGkgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgotICAgIGJwZXEgdDIsIHQx
LCAub3BJbnN0YW5jZW9mRG9uZQotICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc3RydWN0dXJlPHQyPiA9IG9iajx0Mj4u
c3RydWN0dXJlOworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zm
c2V0W3QyXSwgdDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgb2JqPHQyPiA9
IHN0cnVjdHVyZTx0Mj4ucHJvdG90eXBlLlBheWxvYWQ7CisgICAgYnBlcSB0MiwgdDEsIC5vcElu
c3RhbmNlb2ZEb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICBpZiAob2JqPHQyPiA9PSBwcm90b09iaikgZ290byAuZG9uZTsKKyAgICBi
dGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob2JqPHQyPiAhPSBudWxsKSBnb3RvIC5s
b29wOwogCi0gICAgbW92ZSAwLCB0MAorICAgIG1vdmUgMCwgdDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHByb3RvV2FzRm91bmQ8dDA+ID0gZmFsc2U7CiAub3BJbnN0YW5jZW9mRG9uZToKLSAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goNSkKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDM+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mz5dLlBheWxvYWQgPSBwcm90
b1dhc0ZvdW5kOworICAgIGRpc3BhdGNoKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKIAogLm9wSW5zdGFuY2VvZlNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfaW5zdGFuY2VvZikKLSAgICBkaXNwYXRjaCg1KQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX2luc3RhbmNlb2Y7CisgICAgZGlzcGF0Y2go
NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOworCiAKKy8vIGJ5dGVjb2Rl
OiBpc191bmRlZmluZWQgZHN0UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0UmVn
SWRdID0gKHR5cGVvZiBjZnJbc3JjUmVnSWRdID09ICJ1bmRlZmluZWQiKTsKKy8vCisvLyAgIERl
dGVybWluZXMgd2hldGhlciB0aGUgdHlwZSBzdHJpbmcgZm9yIHNyYyBhY2NvcmRpbmcgdG8KKy8v
ICAgdGhlIEVDTUFTY3JpcHQgcnVsZXMgaXMgInVuZGVmaW5lZCIsIGFuZCBwdXRzIHRoZSByZXN1
bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgogCiBfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBsb2FkaSA0W1BDXSwg
dDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCi0gICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQotICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cElzVW5kZWZpbmVkQ2VsbAotICAgIGNpZXEgdDIsIFVuZGVmaW5lZFRhZywgdDMKLSAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGxv
YWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNyY0lkPHQx
PiA9IG9wZXJhbmRzW3NyY1JlZ0lkXTsKKyAgICBsb2FkaSA0W1BDXSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0MD4gPSBvcGVyYW5kc1tkc3RSZWdJZF07Cisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKSAgICAgICAgICAgICAgLy8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHRhZzx0Mj4sIHBheWxvYWQ8dDM+KTsK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAvLyBj
ZnJbZHN0SWQ8dDA+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cElzVW5kZWZpbmVkQ2VsbCAgICAgICAgICAgIC8vIGlmICh0YWc8dDI+ID09IENlbGxUYWcpIGdv
dG8gLmNlbGw7CisgICAgY2llcSB0MiwgVW5kZWZpbmVkVGFnLCB0MyAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaXNVbmRlZmluZWQ8dDM+ID0gKHRhZzx0Mj4gPT0gVW5kZWZpbmVkVGFnKTsKKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0gICAgICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDA+XSA9IGlzVW5kZWZpbmVkPHQzPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAub3BJc1Vu
ZGVmaW5lZENlbGw6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCi0gICAg
dGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIHQxCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDEgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmU8dDE+ID0gcGF5bG9hZDx0Mz4uc3RydWN0
dXJlOworICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MSAgLy8gaXNVbmRlZmluZWQ8dDE+ID0gKChz
dHJ1Y3R1cmU8dDE+LnR5cGVJbmZvLmZsYWdzICYgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgIT0g
MCk7CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAg
Ly8gY2ZyW2RzdElkPHQwPl0gPSBpc1VuZGVmaW5lZDx0MT47CisgICAgZGlzcGF0Y2goMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
CiAKKy8vIGJ5dGVjb2RlOiBpc19ib29sZWFuIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlv
bjogY2ZyW2RzdFJlZ0lkXSA9ICh0eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAiYm9vbGVhbiIpOwor
Ly8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHN0cmluZyBmb3Igc3JjIGFjY29y
ZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxlcyBpcyAiYm9vbGVhbiIsIGFuZCBwdXRz
IHRoZSByZXN1bHQKKy8vICAgaW4gcmVnaXN0ZXIgZHN0LgorCiBfbGxpbnRfb3BfaXNfYm9vbGVh
bjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkg
NFtQQ10sIHQyCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApCi0gICAgY2ll
cSB0MCwgQm9vbGVhblRhZywgdDAKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAg
ZGlzcGF0Y2goMykKKyAgICBsb2FkaSA4W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzcmNJZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQ
Q10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3Bl
cmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcodDEsIHQwKSAg
ICAgICAgICAgICAgIC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc3JjSWQ8dDE+ID09PiB0
YWc8dDA+KTsKKyAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MCAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpc0Jvb2xlYW48dDA+ID0gKHRhZzx0MD4gPT0gQm9vbGVhblRhZyk7CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgLy8gY2ZyW2RzdElk
PHQyPl0uVGFnID0gQm9vbGVhblRhZzsKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2FkID0gaXNCb29sZWFu
PHQwPjsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CisKIAorLy8gYnl0ZWNvZGU6IGlzX251bWJlciBkc3RS
ZWdJZCBzcmNSZWdJZAorLy8gZnVuY3Rpb246IGNmcltkc3RSZWdJZF0gPSAodHlwZW9mIGNmcltz
cmNSZWdJZF0gPT0gIm51bWJlciIpOworLy8KKy8vICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0
eXBlIHN0cmluZyBmb3Igc3JjIGFjY29yZGluZyB0bworLy8gICB0aGUgRUNNQVNjcmlwdCBydWxl
cyBpcyAibnVtYmVyIiwgYW5kIHB1dHMgdGhlIHJlc3VsdAorLy8gICBpbiByZWdpc3RlciBkc3Qu
CiAKIF9sbGludF9vcF9pc19udW1iZXI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRp
IDhbUENdLCB0MQotICAgIGxvYWRpIDRbUENdLCB0MgotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVUYWcodDEsIHQwKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KLSAgICBhZGRpIDEsIHQwCi0gICAgY2liIHQwLCBMb3dlc3RUYWcgKyAxLCB0MQotICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgIGRpc3BhdGNoKDMpCi0KKyAg
ICBsb2FkaSA4W1BDXSwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcmNJ
ZDx0MT4gPSBvcGVyYW5kc1tzcmNSZWdJZF07CisgICAgbG9hZGkgNFtQQ10sIHQyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRd
OworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcodDEsIHQwKSAgICAgICAgICAgICAgIC8v
IGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc3JjUmVnSWQ8dDE+ID09PiB0YWc8dDA+KTsKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAgICAgICAvLyBjZnJb
ZHN0SWQ8dDI+XS5UYWcgPSBCb29sZWFuVGFnOworICAgIGFkZGkgMSwgdDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhZzx0MD4gKz0gMTsKKyAgICBjaWIgdDAsIExv
d2VzdFRhZyArIDEsIHQxICAgICAgICAgICAgICAgICAgICAgICAvLyBpc051bWJlcjx0MT4gPSAo
KHVuc2lnbmVkKXRhZzx0MD4gPCBMb3dlc3RUYWcgKyAxKTsKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAvLyBjZnJbZHN0SWQ8dDI+XS5QYXlsb2Fk
ID0gaXNOdW1iZXI8dDE+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKKworCisvLyBieXRlY29kZTogaXNf
c3RyaW5nIGRzdFJlZ0lkIHNyY1JlZ0lkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9ICh0
eXBlb2YgY2ZyW3NyY1JlZ0lkXSA9PSAic3RyaW5nIik7CisvLworLy8gICBEZXRlcm1pbmVzIHdo
ZXRoZXIgdGhlIHR5cGUgc3RyaW5nIGZvciBzcmMgYWNjb3JkaW5nIHRvCisvLyAgIHRoZSBFQ01B
U2NyaXB0IHJ1bGVzIGlzICJzdHJpbmciLCBhbmQgcHV0cyB0aGUgcmVzdWx0CisvLyAgIGluIHJl
Z2lzdGVyIGRzdC4KIAogX2xsaW50X29wX2lzX3N0cmluZzoKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgbG9hZGkgOFtQQ10sIHQxCi0gICAgbG9hZGkgNFtQQ10sIHQyCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KLSAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNTdHJpbmdOb3RDZWxs
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQwCi0gICAgY2JlcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgdDEKLSAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICBkaXNwYXRjaCgzKQor
ICAgIGxvYWRpIDhbUENdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3JjSWQ8dDE+ID0gb3BlcmFuZHNbc3JjUmVnSWRdOworICAgIGxv
YWRpIDRbUENdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZHN0SWQ8dDI+ID0gb3BlcmFuZHNbZHN0UmVnSWRdOworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShzcmNJZDx0MT4gPT0+IHRhZzx0MD4sIHBheWxv
YWQ8dDM+KTsKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJZDx0Mj5dLlRhZyA9IEJvb2xlYW5U
YWc7CisgICAgYmluZXEgdDAsIENlbGxUYWcsIC5vcElzU3RyaW5nTm90Q2VsbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGFnPHQwPiAhPSBDZWxsVGFnKSBnb3RvIC5ub3RD
ZWxsOworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQwPiA9IHBheWxvYWQ8dDM+LnN0cnVj
dHVyZTsKKyAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBTdHJpbmdUeXBlLCB0MSAgIC8vIGlzU3RyaW5nPHQxPiA9IChzdHJ1Y3R1cmU8dDA+LnR5
cGVJbmZvLnR5cGUgPT0gU3RyaW5nVHlwZSk7CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnJbZHN0SWQ8
dDI+XS5QYXlsb2FkID0gaXNTdHJpbmc8dDE+OworICAgIGRpc3BhdGNoKDMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0
IGJ5dGVjb2RlOwogLm9wSXNTdHJpbmdOb3RDZWxsOgotICAgIHN0b3JlcCAwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCi0gICAgZGlzcGF0Y2goMykKKyAgICBzdG9yZXAgMCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltk
c3RJZDx0Mj5dLlBheWxvYWQgPSBmYWxzZTsKKyAgICBkaXNwYXRjaCgzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdG8gbmV4dCBi
eXRlY29kZTsKIAogCiBtYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RG
aW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAg
IC8vIG1hY3JvOiBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9w
ZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKSB7CiAgICAgYXNzZXJ0
KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHks
IG9rIGVuZCkKICAgICBuZWdpIHByb3BlcnR5T2Zmc2V0Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1f
b3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAg
IGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9i
amVjdEFuZFN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdG9yYWdlPG9i
amVjdEFuZFN0b3JhZ2U+ID0gb2JqZWN0PG9iamVjdEFuZFN0b3JhZ2U+Lm91dE9mTGluZVN0b3Jh
Z2U7CiAgICAgbG9hZGkgVGFnT2Zmc2V0ICsgKElubGluZVN0b3JhZ2VDYXBhY2l0eSAtIDIpICog
OFtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHRhZwogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyAoSW5saW5lU3RvcmFnZUNhcGFjaXR5IC0gMikgKiA4W29iamVjdEFuZFN0
b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZAorICAgIC8vIH0gRU5EIG1hY3JvIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsCiBlbmQKIAogbWFjcm8gbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFn
ZSwgdGFnLCBwYXlsb2FkKQpAQCAtOTQwLDMyICsxMjk0LDQ2IEBAIG1hY3JvIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXQocHJvcGUKIGVuZAogCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUs
IHNsb3cpCi0gICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKLSAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgotICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVy
IGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgotICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRl
ciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCi0gICAgIyAxNltQQ10g
IE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdl
bmVyYXRvci4KLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKLSAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKLSAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93Ci0gICAgbG9hZGkgMTZbUENdLCB0
MQotICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwg
dDIsIHQzKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCi0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
bG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MAotICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQw
KQotZW5kCisgICAgLy8gbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KSB7CisgICAgLy8g
T3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgLy8gNFtQQ10gICBEZXN0aW5hdGlvbiBmb3Ig
dGhlIGxvYWQuCisgICAgLy8gOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRo
ZSBjb2RlIGJsb2NrLgorICAgIC8vIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxp
emVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIC8vIDE2W1BDXSAgT2Zmc2V0IGlu
IGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgor
ICAgIC8vIC4uLgorICAgIC8vIG9yYWNsZUNhY2hlSWRbUENdICBPZmZzZXQgaW50byB0aGUgVmFs
dWVQcm9maWxlOjpidWNrZXRzIHRoYXQgd2lsbCBzdG9yZSB0aGUgb3JhY2xlIHZhbHVlIGZvciB0
aGlzIGJ5dGVjb2RlLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MD4gPSBjZnIuQ29kZUJsb2NrOwor
ICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAgICAgbWxhbSBjb2RlYmxv
Y2sgJXBcbiIsIHIwLnZwKTsKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAgICAgICAgICAgICAgICAgICAgICAvLyBnbG9iYWxPYmplY3Q8dDA+ID0gY29kZUJsb2Nr
PHQwPi5nbG9iYWxPYmplY3Q7CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJlPHQxPiA9IGdsb2JhbE9iamVj
dDx0MD4uc3RydWN0dXJlOworICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChzdHJ1Y3R1cmU8dDE+ICE9IHN0cnVjdHVy
ZUFyZzxwY1sxMl0+KSBnb3RvIC5zbG93OworICAgIGxvYWRpIDE2W1BDXSwgdDEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldDx0MT4gPSBvZmZzZXRB
cmdbcGNbMTZdXSk7CisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90Rmlu
YWwodDEsIHQwLCB0MiwgdDMpICAgLy8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3du
Tm90RmluYWwob2Zmc2V0PHQxPiwgZ2xvYmFsT2JqZWN0PHQwPiA9PT4gdGFnPHQyPiwgcGF5bG9h
ZDx0Mz4pOworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGRzdElkPHQwPiA9IHBjWzRdOworICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmcltkc3RJ
ZDx0MD5dLlRhZyA9IHRhZzx0Mj47CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyW2RzdElkPHQwPl0uUGF5bG9hZCA9
IHBheWxvYWQ8dDM+OworICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAg
bWxhbSByZXNvbHZlZ2xvYmFsIHwgcGF5bG9hZDx0Mz4gPSAlbGRcbiIsIHI0LmkpOworICAgIGxv
YWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG9yYWNsZUlkPHQwPiA9IHBjW29yYWNsZUNhY2hlSWRdOworICAgIHZhbHVlUHJvZmlsZSh0
MiwgdDMsIHQwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlUHJv
ZmlsZSh0YWc8dDI+LCBwYXlsb2FkPHQzPiwgb3JhY2xlSWQ8dDA+KTsKKyAgICAvLyB9IEVORCBt
YWNybyByZXNvbHZlR2xvYmFsLgorZW5kCisKKy8vIGJ5dGVjb2RlOiBkc3RSZWdJZCBnbG9iYWxP
YmplY3QoYykgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIG9mZnNldChuKSBvcmFjbGVDYWNo
ZUlkCisvLyBmdW5jdGlvbjogY2ZyW2RzdFJlZ0lkXSA9IGdsb2JhbE9iamVjdFtvZmZzZXRdOwor
Ly8KKy8vICAgUGVyZm9ybXMgYSBkeW5hbWljIHByb3BlcnR5IGxvb2t1cCBmb3IgdGhlIGdpdmVu
IHByb3BlcnR5LCBvbiB0aGUgcHJvdmlkZWQKKy8vICAgZ2xvYmFsIG9iamVjdC4gIElmIHN0cnVj
dHVyZSBtYXRjaGVzIHRoZSBTdHJ1Y3R1cmUgb2YgdGhlIGdsb2JhbCB0aGVuIHBlcmZvcm0KKy8v
ICAgYSBmYXN0IGxvb2t1cCB1c2luZyB0aGUgY2FzZSBvZmZzZXQsIG90aGVyd2lzZSBmYWxsIGJh
Y2sgdG8gYSBmdWxsIHJlc29sdmUgYW5kCisvLyAgIGNhY2hlIHRoZSBuZXcgc3RydWN0dXJlIGFu
ZCBvZmZzZXQKIAogX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQotICAgIGRpc3Bh
dGNoKDYpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykgIC8vIHJl
c29sdmVHbG9iYWwoNiwgLnNsb3cpOworICAgIGRpc3BhdGNoKDYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0ZWNvZGU7CiAKIC5vcFJlc29sdmVHbG9iYWxTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsKQotICAg
IGRpc3BhdGNoKDYpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9n
bG9iYWwpICAgLy8gY2FsbCBzbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWw7CisgICAgZGlzcGF0Y2go
NikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVj
b2RlOwogCiAKICMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91
IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKQEAgLTk3Myw1
NCArMTM0MSw2OSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CiAjIGhvbGRpbmcgdGhlIHNj
b3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRo
YXQgdGhpcyBkb2VzIG5vdAogIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBp
ZiBuZWVkIGJlLgogbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNo
ZWNrKQotICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCi0gICAg
bG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIC8vIG1hY3JvIGdldFNjb3BlKGRl
QnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykgeworICAgIGxvYWRwIFNjb3BlQ2hhaW4g
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlT2JqPHQw
PiA9IGNmci5TY29wZUNoYWluLlBheWxvYWQ7CisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVy
YW5kLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVCcnVpamluSW5kZXg8dDI+
ID0gW2RlQnJ1aWppbkluZGV4T3BlcmFuZF07CiAgICAgCi0gICAgYnRpeiB0MiwgLmRvbmUKKyAg
ICBidGl6IHQyLCAuZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiAoZGVCcnVpamluSW5kZXg8dDI+ID09IDApIGdvdG8gLmRvbmU7CiAgICAgCi0g
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVU
eXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAotICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRz
RnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGVCbG9jazx0MT4gPSBjZnIu
Q29kZUJsb2NrOworICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9u
Q29kZSwgLmxvb3AgICAgICAgIC8vIGlmIChjb2RlQmxvY2s8dDE+LmNvZGVUeXBlICE9IEZ1bmN0
aW9uQ29kZSkgZ290byAubG9vcDsKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29w
ZUNoYWluW3QxXSwgLmxvb3AgICAgICAgICAgICAvLyBpZiAoIWNvZGVCbG9jazx0MT4ubmVlZHNG
dWxsU2NvcGVDaGFpbikgZ290byAubG9vcDsKICAgICAKLSAgICBsb2FkaSBDb2RlQmxvY2s6Om1f
YWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZh
dGlvblJlZ2lzdGVyW3QxXSwgdDEgICAgICAgICAgICAgICAvLyBhY3RpdmF0aW9uUmVnPHQxPiA9
IGNvZGVCbG9jazx0MT4uYWN0aXZhdGlvblJlZ2lzdGVyOwogCi0gICAgIyBOZWVkIHRvIGNvbmRp
dGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KLSAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgotICAgIHNjb3BlQ2hlY2sodDAsIHQx
KQotICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICAvLyBOZWVkIHRv
IGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbiAgICAvLyBpZiAoY2ZyW2Fj
dGl2YXRpb25SZWc8dDE+XS5UYWcgPT0gRW1wdHlWYWx1ZVRhZykgZ290byAubm9BY3RpdmF0aW9u
OworICAgIHNjb3BlQ2hlY2sodDAsIHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNjb3BlQ2hlY2soc2NvcGVPYmo8dDA+LCBhY3RpdmF0aW9uUmVnPHQxPik7
CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2NvcGVPYmo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5leHQ7CiAubm9BY3RpdmF0
aW9uOgotICAgIHN1YmkgMSwgdDIKKyAgICBzdWJpIDEsIHQyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZUJydWlqaW5JbmRleDx0Mj4tLTsKICAg
ICAKLSAgICBidGl6IHQyLCAuZG9uZQorICAgIGJ0aXogdDIsIC5kb25lICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChkZUJydWlqaW5JbmRleDx0Mj4g
PT0gMCkgZ290byAuZG9uZTsKIC5sb29wOgotICAgIHNjb3BlQ2hlY2sodDAsIHQxKQotICAgIGxv
YWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKLSAgICBzdWJpIDEsIHQyCi0gICAgYnRp
bnogdDIsIC5sb29wCisgICAgc2NvcGVDaGVjayh0MCwgdDEpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gICBzY29wZUNoZWNrKHNjb3BlT2JqPHQwPiwgYWN0aXZh
dGlvblJlZzx0MT4pOworICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgc2NvcGVPYmo8dDA+ID0gc2NvcGVPYmo8dDA+Lm5l
eHQ7CisgICAgc3ViaSAxLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICBkZUJydWlqaW5JbmRleDx0Mj4tLTsKKyAgICBidGlueiB0MiwgLmxv
b3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVC
cnVpamluSW5kZXg8dDI+ICE9IDApIGdvdG8gLmxvb3A7CiAKIC5kb25lOgorICAgIC8vIH0gRU5E
IG1hY3JvIGdldFNjb3BlLgogZW5kCiAKKy8vIGJ5dGVjb2RlOiByZXNvbHZlX3NraXAgZHN0KHIp
IGdsb2JhbE9iamVjdChjKSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJRCkgb2Zmc2V0KG4pIG9y
YWNsZUNhY2hlSWQKKy8vIGZ1bmN0aW9uOiAKKy8vCisvLyAgIFBlcmZvcm1zIGEgZHluYW1pYyBw
cm9wZXJ0eSBsb29rdXAgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwgb24gdGhlIHByb3ZpZGVkCisv
LyAgIGdsb2JhbCBvYmplY3QuICBJZiBzdHJ1Y3R1cmUgbWF0Y2hlcyB0aGUgU3RydWN0dXJlIG9m
IHRoZSBnbG9iYWwgdGhlbiBwZXJmb3JtCisvLyAgIGEgZmFzdCBsb29rdXAgdXNpbmcgdGhlIGNh
c2Ugb2Zmc2V0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIGEgZnVsbCByZXNvbHZlIGFuZAorLy8g
ICBjYWNoZSB0aGUgbmV3IHN0cnVjdHVyZSBhbmQgb2Zmc2V0LgorLy8gICAgICAgICAKKy8vICAg
VGhpcyB3YWxrcyB0aHJvdWdoIG4gbGV2ZWxzIG9mIHRoZSBzY29wZSBjaGFpbiB0byB2ZXJpZnkg
dGhhdCBub25lIG9mIHRob3NlIGxldmVscworLy8gICBpbiB0aGUgc2NvcGUgY2hhaW4gaW5jbHVk
ZSBkeW5hbWljYWxseSBhZGRlZCBwcm9wZXJ0aWVzLgorCiBfbGxpbnRfb3BfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAgSklUU3RhY2tGcmFt
ZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCi0gICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9u
U3RydWN0dXJlW3QzXSwgdDMKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbG9i
YWxEYXRhPHQzPiA9IHNwLmdsb2JhbERhdGE7CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3Rp
dmF0aW9uU3RydWN0dXJlW3QzXSwgdDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gYWN0aXZhdGlvblN0cnVjdHVyZTx0Mz4gPSBnbG9iYWxEYXRhPHQzPi5hY3RpdmF0aW9u
U3RydWN0dXJlOwogICAgIGdldFNjb3BlKAogICAgICAgICAyMFtQQ10sCiAgICAgICAgIG1hY3Jv
IChzY29wZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmpl
Y3Rbc2NvcGVdLCBzY3JhdGNoCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKLSAgICAgICAg
ZW5kKQotICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQot
ICAgIGRpc3BhdGNoKDcpCisgICAgICAgIC8vIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgeworICAg
ICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9iajxzY3JhdGNoPiA9IHNjb3BlLm9iamVj
dDsKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAu
b3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdyAgICAvLyBpZiAob2JqPHNjcmF0Y2g+LnN0
cnVjdHVyZSAhPSBhY3RpdmF0aW9uU3RydWN0dXJlPHQzPikgZ290byAuc3VwZXJTbG93OworICAg
ICAgICAvLyB9IEVORCBtYWNyby4KKyAgICAgICAgZW5kKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn
ZXRTY29wZShvcGVyYW5kc1tvZmZzZXRdLCAuLi4pOworICAgIHJlc29sdmVHbG9iYWwoNywgLm9w
UmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJlc29sdmVHbG9iYWwoNywgLnNsb3cpOworICAgIGRpc3BhdGNoKDcpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdvdG8gbmV4dCBieXRlY29kZTsKIAogLm9wUmVzb2x2ZUdsb2JhbER5bmFt
aWNTdXBlclNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9m
b3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKLSAgICBkaXNwYXRjaCg3KQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290byBu
ZXh0IGJ5dGVjb2RlOwogCiAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKLSAgICBkaXNw
YXRjaCg3KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd19wYXRo
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM7CisgICAgZGlzcGF0Y2goNykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ290byBuZXh0IGJ5dGVjb2RlOwogCiAKIF9sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKQEAg
LTEwNjYsNiArMTQ0OSw3IEBAIG1hY3JvIGdldEdsb2JhbFZhcihzaXplKQogICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCiAgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MworICAgIG1sYW1EbyAv
LyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiICAgIG1sYW0gZ2V0R2xvYmFsVmFyOiA8dDM+ID0g
JWxkICB8IHBheWxvYWQ8dDE+ID0gJWxkXG4iLCByNC5pLCByMS5pKTsKICAgICB2YWx1ZVByb2Zp
bGUodDIsIHQxLCB0MykKICAgICBkaXNwYXRjaChzaXplKQogZW5kCkBAIC0xMTY1LDYgKzE1NDks
NyBAQCBtYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIG1sYW1E
byAvLyBtbGFtUHJpbnQ9IHRydWU7CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAg
ICAgZ2V0UHJvcGVydHlTdG9yYWdlKApAQCAtMTE3NiwxMSArMTU2MSwyMyBAQCBtYWNybyBwdXRC
eUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQyLCBzY3JhdGNoLCB0MikKICAgICAgICAgICAgIHdyaXRlQmFycmllcihzY3JhdGNo
LCB0MikKICAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbcHJvcGVydHlTdG9y
YWdlLCB0MV0KKyAgICAgICAgICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50Zigi
ICAgbWxhbSBBU00gcHV0QnlJZCByZXN1bHQ8dDI+ID0gJWxkXG4iLCByMi5pKTsKICAgICAgICAg
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQogICAgICAg
ICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAKKy8vIGJ5dGVjb2RlOiBwdXRf
YnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgbm9wKG4pIG5vcChuKSBub3Aobikg
bm9wKG4pIGRpcmVjdChiKQorLy8KKy8vICAgR2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3M6IFNldHMg
dGhlIHByb3BlcnR5IG5hbWVkIGJ5IGlkZW50aWZpZXIKKy8vICAgcHJvcGVydHksIGJlbG9uZ2lu
ZyB0byByZWdpc3RlciBiYXNlLCB0byByZWdpc3RlciB2YWx1ZS4KKy8vCisvLyAgIFVubGlrZSBt
YW55IG9wY29kZXMsIHRoaXMgb25lIGRvZXMgbm90IHdyaXRlIGFueSBvdXRwdXQgdG8KKy8vICAg
dGhlIHJlZ2lzdGVyIGZpbGUuCisvLworLy8gICBUaGUgImRpcmVjdCIgZmxhZyBzaG91bGQgb25s
eSBiZSBzZXQgdGhpcyBwdXRfYnlfaWQgaXMgdG8gaW5pdGlhbGl6ZQorLy8gICBhbiBvYmplY3Qg
bGl0ZXJhbC4KKwogX2xsaW50X29wX3B1dF9ieV9pZDoKICAgICBwdXRCeUlkKHdpdGhJbmxpbmVT
dG9yYWdlKQogCkBAIC0xNDM3LDI1ICsxODM0LDM0IEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNv
bXBhcmUsIGRvdWJsZUNvbXAKICAgICBsb2FkaSA4W1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMs
IHQyLCB0MykKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAg
MVxuIik7CiAgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CiAgICAgYmluZXEgdDIs
IEludDMyVGFnLCAub3AyTm90SW50CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0g
Q09NUEFSRSBzdGVwIDJcbiIpOworICAgIG1sYW1EbyAvLyBwcmludGYoIiAgIEBAQCBtbGFtIENv
bXBhcmluZyBpZiAodDEgJWxkIGFuZCB0MiAlbGQpOiBicmFuY2ggLi4uXG4iLCByMS5pLCByNC5p
KTsKICAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIG1sYW1EbyAv
LyBwcmludGYoIiAgIEBAQCBtbGFtIENPTVBBUkUgc3RlcCAzXG4iKTsKKyAgICBtbGFtRG8gLy8g
cHJpbnRmKCIgICBAQEAgbWxhbSBESUQgTk9UIGJyYW5jaFxuIik7CiAgICAgZGlzcGF0Y2goNCkK
IAogLm9wMU5vdEludDoKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJF
IHN0ZXAgNFxuIik7CiAgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CiAgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKICAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5z
bG93CiAgICAgY2kyZCB0MywgZnQxCiAgICAgam1wIC5vcDFOb3RJbnRSZWFkeQogLm9wMU5vdElu
dE9wMkRvdWJsZToKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0
ZXAgNVxuIik7CiAgICAgZmlpMmQgdDMsIHQyLCBmdDEKIC5vcDFOb3RJbnRSZWFkeToKKyAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgICBAQEAgbWxhbSBDT01QQVJFIHN0ZXAgNlxuIik7CiAgICAgZmlp
MmQgdDEsIHQwLCBmdDAKICAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkK
ICAgICBkaXNwYXRjaCg0KQogCiAub3AyTm90SW50OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAg
IEBAQCBtbGFtIENPTVBBUkUgc3RlcCA3XG4iKTsKICAgICBjaTJkIHQxLCBmdDAKICAgICBiaWEg
dDIsIExvd2VzdFRhZywgLnNsb3cKICAgICBmaWkyZCB0MywgdDIsIGZ0MQpAQCAtMTQ2Myw5ICsx
ODY5LDEyIEBAIG1hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAKICAgICBk
aXNwYXRjaCg0KQogCiAuanVtcFRhcmdldDoKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBAQEAg
bWxhbSBDT01QQVJFIHN0ZXAgOFxuIik7CisgICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1s
YW0gQlJBTkNIRURcbiIpOwogICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKIAogLnNsb3c6Cisg
ICAgbWxhbURvIC8vIHByaW50ZigiICAgQEBAIG1sYW0gQ09NUEFSRSBzdGVwIDlcbiIpOwogICAg
IGNhbGxTbG93UGF0aChzbG93UGF0aCkKICAgICBkaXNwYXRjaCgwKQogZW5kCkBAIC0xNTQ3LDMy
ICsxOTU2LDU1IEBAIF9sbGludF9vcF9uZXdfZnVuYzoKIC5vcE5ld0Z1bmNEb25lOgogICAgIGRp
c3BhdGNoKDQpCiAKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxsTGlua0luZm8pCisgICAg
aWYgQ19MT09QCisgICAgICAgIGN4eENhbGxKU0Z1bmN0aW9uIExMSW50Q2FsbExpbmtJbmZvOjpt
YWNoaW5lQ29kZVRhcmdldFtjYWxsTGlua0luZm9dICAgICAvLyBjYWxsIGNhbGxMaW5rSW5mby5t
YWNoaW5lQ29kZVRhcmdldDsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgTExJbnRDYWxsTGlua0lu
Zm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10gICAgIC8vIGNhbGwgY2FsbExpbmtJ
bmZvLm1hY2hpbmVDb2RlVGFyZ2V0OworICAgICAgICAvLyBSZWxvYWQgdGhlIHJldHVybiBQQyBm
cm9tIHdoZXJlIHdlIHN0YXNoZWQgaXQsIGFuZCBnbyB0aGVyZToKKyAgICAgICAgLy8gcGMgPSBj
ZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKKyAgICAgICAgZGlzcGF0Y2hBZnRlckNh
bGwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzcGF0Y2hB
ZnRlckNhbGwoKTsKKyAgICBlbmQKK2VuZAogCiBtYWNybyBkb0NhbGwoc2xvd1BhdGgpCi0gICAg
bG9hZGkgNFtQQ10sIHQwCi0gICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxvYWRwIExMSW50Q2Fs
bExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCi0gICAgYmluZXEgdDMsIHQyLCAub3BD
YWxsU2xvdwotICAgIGxvYWRpIDEyW1BDXSwgdDMKLSAgICBhZGRwIDI0LCBQQwotICAgIGxzaGlm
dGkgMywgdDMKLSAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBv
ZiBjZnIKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAotICAgIHN0
b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkgdDAsIFNjb3Bl
Q2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCi0gICAg
c3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KLSAgICBzdG9yZXAgY2Zy
LCBDYWxsZXJGcmFtZVt0M10KLSAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2Fk
T2Zmc2V0W3QzXQotICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCi0g
ICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCi0gICAgbW92ZSB0
MywgY2ZyCi0gICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFd
Ci0gICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIC8vIG1hY3JvIGRvQ2FsbChzbG93UGF0aCkg
eworICAgIGxvYWRpIDRbUENdLCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBmdW5jSWQ8dDA+ID0gcGNbMV07CisgICAgbG9hZGkgMTZbUENdLCB0MSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxMaW5rSW5mbzx0MT4gPSBwY1s0XTsKKyAg
ICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIgICAgICAgICAgICAgLy8g
Y2FsbGVlPHQyPiA9IGNhbGxMaW5rSW5mbzx0MT4uY2FsbGVlOworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpIC8vIGxvYWQoZnVu
Y0lkPHQwPiA9PT4gZnVuYzx0Mz4sIC4uLik7CisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xv
dyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChmdW5jPHQzPiAhPSBjYWxsZWU8dDI+
IGkuZS4gaXNCeXRlY29kZSgpPykgZ290byAuc2xvdzsKKyAgICBsb2FkaSAxMltQQ10sIHQzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0PHQzPiA9IHBjWzNdOwor
CisgICAgYWRkcCAyNCwgUEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBjICs9IDI0IGkuZS4gcG9pbnQgdG8gdGhlIHJldHVybiBhZGRyZXNzLgorCisgICAgLy8g
bmV3RnJhbWU8dDM+ID0gY2ZyICsgb2Zmc2V0PHQzPiA8PCAzOyAgLy8gb2Zmc2V0ID0gc2l6ZW9m
IGN1cnJlbnQgZnJhbWU7CisgICAgbHNoaWZ0aSAzLCB0MyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIG9mZnNldDx0Mz4gPSBvZmZzZXQ8dDM+IDw8IDM7CisgICAgYWRk
cCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyICAgIC8vIG5ld0Zy
YW1lPHQzPiA9IG9mZnNldDx0Mz4gKyBjZnI7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBuZXdG
cmFtZToKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MCAgICAgICAg
ICAgICAgLy8gc2NvcGU8dDA+ID0gY2FsbGVlPHQyPi5zY29wZUNoYWluOworICAgIHN0b3JlaSB0
MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10gICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0
Mz4uQ2FsbGVlLlBheWxvYWQgPSBjYWxsZWU8dDI+OworICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFp
biArIFBheWxvYWRPZmZzZXRbdDNdICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4uU2NvcGVDaGFp
bi5QYXlsb2FkID0gc2NvcGU8dDA+OworICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1BcmdzPHQyPiA9IC4uLjsKKyAgICBtbGFtRG8g
IC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiBtbGFtIDo6IFBSSU5UIGRvQ2FsbCgpIHwg
Y2ZyLkFyZ3VtZW50Q291bnQuVGFnID0gcGMgJXA7XG5cbiIsIHZQQyk7CisgICAgc3RvcmVpIFBD
LCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0gICAgICAgICAgIC8vIGNmci5Bcmd1bWVu
dENvdW50LlRhZyA9IHBjOyAvLyBTdGFzaCB0aGUgcmV0dXJuIFBDLgorICAgIHN0b3JlcCBjZnIs
IENhbGxlckZyYW1lW3QzXSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFtZTx0Mz4u
Q2FsbGVyRnJhbWUgPSBjZnI7CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9h
ZE9mZnNldFt0M10gICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5Bcmd1bWVudENvdW50LlBheWxvYWQg
PSBudW1BcmdzPHQyPjsKKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3Qz
XSAgICAgICAgICAgICAgLy8gbmV3RnJhbWU8dDM+LkNhbGxlZS5UYWcgPSBDZWxsVGFnOworICAg
IHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXSAgICAgICAgICAvLyBu
ZXdGcmFtZTx0Mz4uU2NvcGVDaGFpbi5UYWcgPSBDZWxsVGFnOworICAgIG1sYW1EbyAgLy8gaWYg
KG1sYW1fUFJJTlRGKSBwcmludGYoIlxuIG1sYW0gOjogQkVGT1JFIHB1c2ggfCBjZnIoJXApLT52
UEMoKSA9ICVwO1xuXG4iLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y3VycmVudFZQQygpKTsKKyAg
ICBtb3ZlIHQzLCBjZnIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyID0gbmV3RnJhbWU8dDM+OworICAgIG1sYW1EbyAgLy8gaWYgKG1sYW1fUFJJTlRGKSBwcmlu
dGYoIlxuIG1sYW0gOjogQUZURVIgcHVzaCB8IGNmciglcCktPnZQQygpID0gJXA7XG5cbiIsIGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jdXJyZW50VlBDKCkpOworICAgIG1sYW1EbyAgLy8gaWYgKG1s
YW1fUFJJTlRGKSBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIiAgPj4+IFBVU0hF
RCB0byBuZXcgIiwgdlBDLCAiZG9DYWxsIiwgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgIC8v
IENhbGwgdGhlIHRhcmdldCBhcyBpZiBpdCdzIGEgY29tcGlsZWQgbWV0aG9kOgorICAgICMgbWxh
bSBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0gICAgICAgLy8g
Y2FsbCBjYWxsTGlua0luZm88dDE+Lm1hY2hpbmVDb2RlVGFyZ2V0OworICAgIGNhbGxUYXJnZXRG
dW5jdGlvbih0MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbFRhcmdldEZ1
bmN0aW9uKGNhbGxMaW5rSW5mbzx0MT4pOwogCiAub3BDYWxsU2xvdzoKLSAgICBzbG93UGF0aEZv
ckNhbGwoNiwgc2xvd1BhdGgpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dQYXRoKSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgc2xvd1BhdGg7CisgICAgLy8gfSBFTkQgZG9DYWxs
LgogZW5kCiAKIApAQCAtMTU5OCwxMiArMjAzMCwyNSBAQCBfbGxpbnRfb3BfdGVhcl9vZmZfYXJn
dW1lbnRzOgogICAgIGRpc3BhdGNoKDIpCiAKIAorLy8gYnl0ZWNvZGU6IHJldCByZXN1bHRSZWdJ
ZAorLy8gZnVuY3Rpb246IHJldHVybiBjZnJbcmVzdWx0UmVnSWRdOworLy8KKy8vICAgUmV0dXJu
IHJlZ2lzdGVyIHJlc3VsdCBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjdXJyZW50CisvLyAg
IGZ1bmN0aW9uIGNhbGwsIHdyaXRpbmcgaXQgaW50byBmdW5jdGlvblJldHVyblZhbHVlLgorLy8g
ICBJbiBhZGRpdGlvbiwgdW53aW5kIG9uZSBjYWxsIGZyYW1lIGFuZCByZXN0b3JlIHRoZSBzY29w
ZQorLy8gICBjaGFpbiwgY29kZSBibG9jayBpbnN0cnVjdGlvbiBwb2ludGVyIGFuZCByZWdpc3Rl
ciBiYXNlCisvLyAgIHRvIHRob3NlIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLgorCiBfbGxpbnRf
b3BfcmV0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6
OmR1bXBGcmFtZShjYWxsRnJhbWUsICJtbGFtIEYuQS5BIik7CiAgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKLSAgICBsb2FkaSA0W1BDXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCi0gICAgZG9SZXR1cm4oKQorICAgIG1sYW1EbyAvLyBWTUluc3Bl
Y3Rvcjo6ZHVtcEZyYW1lKGNhbGxGcmFtZSwgIm1sYW0gRi5BLkIiKTsKKyAgICBsb2FkaSA0W1BD
XSwgdDIgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHRJZDx0Mj4gPSBvcGVyYW5kc1tyZXN1
bHRSZWdJZF07CisgICAgbWxhbURvIC8vIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoY2FsbEZyYW1l
LCAibWxhbSBGLkEuQyIpOworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkg
IC8vIGxvYWRDb25zdGFudE9yVmFyaWFibGUoY2ZyW3Jlc3VsdElkPHQyPl0gPT0+IHRhZzx0MT4s
IHBheWxvYWQ8dDA+KTsKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxs
RnJhbWUsICJtbGFtIEYuQS5EIik7CisgICAgZG9SZXR1cm4oKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZG9SZXR1cm4oKTsKIAogCiBfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgpAQCAt
MTY5MCw2ICsyMTM1LDEyIEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGRpc3BhdGNoKDAp
CiAKIAorLy8gYnl0ZWNvZGU6IGNhdGNoIGV4KHIpCisvLworLy8gICBSZXRyaWV2ZXMgdGhlIFZN
J3MgY3VycmVudCBleGNlcHRpb24gYW5kIHB1dHMgaXQgaW4gcmVnaXN0ZXIKKy8vICAgZXguIFRo
aXMgaXMgb25seSB2YWxpZCBhZnRlciBhbiBleGNlcHRpb24gaGFzIGJlZW4gcmFpc2VkLAorLy8g
ICBhbmQgdXN1YWxseSBmb3JtcyB0aGUgYmVnaW5uaW5nIG9mIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
LgorCiBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9t
IHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQogICAgICMgbWFjaGluZSBj
b2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBm
cm9tCkBAIC0xNjk3LDE4ICsyMTQ4LDE4IEBAIF9sbGludF9vcF9jYXRjaDoKICAgICAjIFRoZSBK
SVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0
aHJvd2luZwogICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5n
IHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKICAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRh
cmdldEludGVycHJldGVyUENGb3JUaHJvdy4KLSAgICBtb3ZlIHQwLCBjZnIKLSAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKLSAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCi0gICAgbG9hZGkgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKLSAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCi0gICAgc3RvcmVpIDAsIEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAot
ICAgIGxvYWRpIDRbUENdLCB0MgotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQotICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgbW92ZSB0MCwg
Y2ZyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjZnIgPSBjYXRjaGVyRnJhbWU8dDA+OworICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omds
b2JhbERhdGFbc3BdLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsRGF0
YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgIGxvYWRpIEpTR2xvYmFs
RGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMgICAgICAgICAgICAgLy8g
cGMgPSBnbG9iYWxEYXRhLnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsKKyAgICBsb2FkaSBK
U0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MCAgICAgICAgICAg
ICAgIC8vIHBheWxvYWQ8dDA+ID0gZ2xvYmFsRGF0YS5leGNlcHRpb24uUGF5bG9hZDsKKyAgICBs
b2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxICAgICAgICAg
ICAgICAgICAgIC8vIHRhZzx0MT4gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5UYWc7CisgICAgc3Rv
cmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10gICAgICAg
ICAgICAgICAvLyBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5QYXlsb2FkID0gMDsKKyAgICBzdG9yZWkg
RW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAg
ICAgIC8vIGdsb2JhbERhdGEuZXhjZXB0aW9uLlRhZyA9IEVtcHR5VmFsdWVUYWc7CisgICAgbG9h
ZGkgNFtQQ10sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBleFJlZ0lkPHQyPiA9IG9wZXJhbmRzWzBdOworICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyW2V4UmVnSWQ8dDI+XS5QYXlsb2FkID0gcGF5bG9hZDx0MD47CisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnJbZXhSZWdJZDx0Mj5dLlRhZyA9IHRhZzx0MT47CiAgICAgdHJhY2VFeGVjdXRpb24oKSAg
IyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIg
dDAsIHQxLCB0MiwgdDMgYWJvdmUuCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgyKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGdvdG8gbmV4dCBieXRlY29kZTsKIAogCiBfbGxpbnRfb3BfZW5kOgpAQCAtMTcyMiwxNSArMjE3
MywxNyBAQCBfbGxpbnRfb3BfZW5kOgogCiAKIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90
cmFtcG9saW5lOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioq
KioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJh
bXBvbGluZVxuXG4iKTsKICAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIg
KGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludFNsb3dQYXRocyksIHNvCiAgICAgIyB0aGUgdGhyb3cg
dGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhl
cmUuCiAgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBw
cm90b2NvbC4KLSAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKLSAg
ICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEgICAgICAgICAgICAgICAgIC8vIGds
b2JhbERhdGE8dDE+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICBsb2FkcCBK
U0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAgICAgICAgICAgIC8vIGNhbGxG
cmFtZTx0MD4gPSBnbG9iYWxEYXRhPHQxPi5jYWxsRnJhbWVGb3JUaHJvdzsKICAgICBqbXAgSlNH
bG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KIAogCiBfbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBtbGFtRG8gLy8gaWYgKG1sYW1fUFJJTlRGKSBw
cmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0gX2xsaW50X3Rocm93X2R1cmlu
Z19jYWxsX3RyYW1wb2xpbmVcblxuIik7CiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKHQyKQogICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQogICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MApAQCAtMTczOCwx
NiArMjE5MSwxOCBAQCBfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKIAogCiBt
YWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKLSAg
ICBzdG9yZXAgMCwgQ29kZUJsb2NrW2Nmcl0KLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0
MAotICAgIGxvYWRpIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QwXSwgdDEKLSAgICBzdG9y
ZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFtjZnJdCi0gICAgc3RvcmVpIHQxLCBT
Y29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdCisgICAgLy8gSW5pdCBjZnJbQ29kZUJsb2Nr
LCBTY29wZUNoYWluLCBSZXR1cm5QQ106CisgICAgc3RvcmVwIDAsIENvZGVCbG9ja1tjZnJdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmci5Db2RlQmxvY2sgPSAwOworICAgIGxvYWRw
IENhbGxlckZyYW1lW2Nmcl0sIHQwICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsZXJG
cmFtZTx0MD4gPSBjZnIuQ2FsbGVyRnJhbWU7CisgICAgbWxhbUR1bXAgdDAKKyAgICBsb2FkaSBT
Y29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0MF0sIHQxICAgICAgICAgICAgLy8gc2NvcGU8dDE+
ID0gY2FsbGVyRnJhbWU8dDA+LlNjb3BlQ2hhaW4uUGF5bG9hZDsKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFtjZnJdICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4u
VGFnID0gQ2VsbFRhZzsKKyAgICBzdG9yZWkgdDEsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0gICAgICAgICAgLy8gY2ZyLlNjb3BlQ2hhaW4uUGF5bG9hZCA9IHNjb3BlPHQxPjsKICAg
ICBpZiBYODYKICAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YSArIDRbc3Bd
LCB0MyAjIEFkZGl0aW9uYWwgb2Zmc2V0IGZvciByZXR1cm4gYWRkcmVzcwogICAgICAgICBzdG9y
ZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFtZVt0M10KICAgICAgICAgcGVlayAwLCB0
MQotICAgICAgICBzdG9yZXAgdDEsIFJldHVyblBDW2Nmcl0KKyAgICAgICAgc3RvcmVwIHQxLCBS
ZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJldHVyblBDID0gPHQx
PjsKICAgICAgICAgbW92ZSBjZnIsIHQyICAjIHQyID0gZWN4CiAgICAgICAgIHN1YnAgMTYgLSA0
LCBzcAogICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCkBAIC0x
NzU3LDI2ICsyMjEyLDQ4IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVP
ZmYKICAgICAgICAgYWRkcCAxNiAtIDQsIHNwCiAgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGEgKyA0W3NwXSwgdDMKICAgICBlbHNpZiBBUk12NwotICAgICAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKLSAgICAgICAgc3RvcmVwIGNmciwgSlNH
bG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVbdDNdCi0gICAgICAgIG1vdmUgdDAsIHQyCi0gICAgICAg
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MykKLSAgICAgICAgc3RvcmVwIHQzLCBS
ZXR1cm5QQ1tjZnJdCi0gICAgICAgIG1vdmUgY2ZyLCB0MAotICAgICAgICBsb2FkaSBDYWxsZWUg
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCi0gICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhl
Y3V0YWJsZVt0MV0sIHQxCi0gICAgICAgIG1vdmUgdDIsIGNmcgotICAgICAgICBjYWxsIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQotICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybih0MykKLSAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQzCisgICAgICAgIC8vIFNldCBnbG9iYWxEYXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRG
cmFtZTsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAg
ICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOwor
ICAgICAgICBzdG9yZXAgY2ZyLCBKU0dsb2JhbERhdGE6OnRvcENhbGxGcmFtZVt0M10gICAgICAv
LyBnbG9iYWxEYXRhPHQzPi50b3BDYWxsRnJhbWUgPSBjZnI7CisgICAgICAgIG1vdmUgdDAsIHQy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmVkQ2FsbGVyRnJhbWU8
dDI+ID0gY2FsbGVyRnJhbWU8dDA+OworICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwodDMpICAgICAgICAgICAgICAvLyBzYXZlZFJldHVyblBDPHQzPiA9IHJldHVyblBDOwor
ICAgICAgICBzdG9yZXAgdDMsIFJldHVyblBDW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBjZnIuUmV0dXJuUEMgPSA8dDM+OworICAgICAgICAvLyBQYXNzIGN1cnJlbnRGcmFtZSBhcyBh
biBhcmcgdG8gdGhlIHRhcmdldDoKKyAgICAgICAgbW92ZSBjZnIsIHQwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYXJnMDogYXJnMDx0MD4gPSBjZnI7CisgICAgICAgIC8v
IENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggcjAgPSBjdXJyZW50RnJhbWUsIGNmciA9IG9sZEZyYW1l
OiBXaHk/Pz8KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MSAg
ICAgICAgICAgLy8ganNmdW5jPHQxPiA9IGNmci5DYWxsZWUuUGF5bG9hZDsKKyAgICAgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEgICAgICAgICAgLy8gYXJnMTogZXhl
Y3V0YWJsZTx0MT4gPSBqc2Z1bmM8dDE+LmV4ZWN1dGFibGU7CisgICAgICAgIG1vdmUgdDIsIGNm
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNmciA9IHNhdmVkQ2FsbGVy
RnJhbWU8dDI+OworICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSAg
ICAgICAgICAgICAvLyBjYWxsIGV4ZWN1dGFibGU8dDE+LkNhbGxPckNvbnN0cnVjdDsKKworICAg
ICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykgICAgICAgICAgICAvLyBy
ZXR1cm5QQyA9IHNhdmVkUmV0dXJuUEM8dDM+OworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjpnbG9iYWxEYXRhW3NwXSwgdDMgICAgICAgICAvLyBnbG9iYWxEYXRhPHQzPiA9IGppdFN0YWNr
RnJhbWU8c3A+Lmdsb2JhbERhdGE7CisgICAgZWxzaWYgQ19MT09QCisgICAgICAgIC8vIFNldCBn
bG9iYWxEYXRhLnRvcENhbGxGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4g
PSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworICAgICAgICBzdG9yZXAgY2ZyLCBKU0ds
b2JhbERhdGE6OnRvcENhbGxGcmFtZVt0M10gICAgICAvLyBnbG9iYWxEYXRhPHQzPi50b3BDYWxs
RnJhbWUgPSBjZnI7CisgICAgICAgIG1sYW1EdW1wIGNmcgorICAgICAgICBtb3ZlIHQwLCB0MiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZlZENhbGxlckZyYW1lPHQy
PiA9IGNhbGxlckZyYW1lPHQwPjsKKyAgICAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKHQzKSAgICAgICAgICAgICAgLy8gc2F2ZWRSZXR1cm5QQzx0Mz4gPSByZXR1cm5QQzsKKyAg
ICAgICAgc3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2ZyLlJldHVyblBDID0gPHQzPjsKKyAgICAgICAgLy8gUGFzcyBjdXJyZW50RnJhbWUgYXMgYW4g
YXJnIHRvIHRoZSB0YXJnZXQ6CisgICAgICAgIG1vdmUgY2ZyLCB0MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFyZzA6IGFyZzA8dDA+ID0gY2ZyOworICAgICAgICAvLyBD
YWxsIHRoZSBmdW5jdGlvbiB3aXRoIHIwID0gY3VycmVudEZyYW1lLCBjZnIgPSBvbGRGcmFtZTog
V2h5Pz8/CisgICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEgICAg
ICAgICAgIC8vIGpzZnVuYzx0MT4gPSBjZnIuQ2FsbGVlLlBheWxvYWQ7CisgICAgICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxICAgICAgICAgIC8vIGFyZzE6IGV4ZWN1
dGFibGU8dDE+ID0ganNmdW5jPHQxPi5leGVjdXRhYmxlOworICAgICAgICBtb3ZlIHQyLCBjZnIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSBzYXZlZENhbGxlckZy
YW1lPHQyPjsKKyAgICAgICAgY3h4Q2FsbE5hdGl2ZSBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlv
blt0MV0gICAgLy8gY2FsbCBleGVjdXRhYmxlPHQxPi5DYWxsT3JDb25zdHJ1Y3Q7CisKKyAgICAg
ICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDMpICAgICAgICAgICAgLy8gcmV0
dXJuUEMgPSBzYXZlZFJldHVyblBDPHQzPjsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YVtzcF0sIHQzICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0Zy
YW1lPHNwPi5nbG9iYWxEYXRhOwogICAgIGVsc2UgIAogICAgICAgICBlcnJvcgogICAgIGVuZAot
ICAgIGJpbmVxIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlW
YWx1ZVRhZywgLmV4Y2VwdGlvbgotICAgIHJldAorICAgIGJpbmVxIEpTR2xvYmFsRGF0YTo6ZXhj
ZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1ZVRhZywgLmV4Y2VwdGlvbiAvLyBpZiAo
Z2xvYmFsRGF0YTx0Mz4uZXhjZXB0aW9uLFRhZyAhPSBFbXB0eVZhbHVlVGFnKSBnb3RvIC5leGNl
cHRpb247CisgICAgcmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJldHVybjsKIC5leGNlcHRpb246CiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQxKSAjIFRoaXMgaXMgcmVhbGx5IG9ubHkgbmVlZGVkIG9uIFg4NgotICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDICAgICAgICAgICAgLy8gcGMgPSBjZnIuQXJndW1l
bnRDb3VudC5UYWc7CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF90aHJvd19mcm9tX25hdGl2ZV9j
YWxsKQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQogZW5k
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTMz
LDQ5ICszMyw2NiBAQCBjb25zdCBWYWx1ZVVuZGVmaW5lZCAgPSBUYWdCaXRUeXBlT3RoZXIgCiBj
b25zdCBWYWx1ZU51bGwgICAgICAgPSBUYWdCaXRUeXBlT3RoZXIKIAogIyBVdGlsaXRpZXMuCisK
IG1hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCi0gICAgYWRkcCBhZHZhbmNlLCBQQwotICAgIGptcCBb
UEIsIFBDLCA4XQorICAgIGFkZHAgYWR2YW5jZSwgUEMgICAgICAgICAgICAgICAgLy8gcGMgPSBw
YyArIHNpemVvZihjdXJyZW50Qnl0ZWNvZGUpOworICAgIGptcCBbUEIsIFBDLCA4XSAgICAgICAg
ICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwogZW5kCiAKIG1hY3JvIGRpc3BhdGNoSW50
KGFkdmFuY2UpCiAgICAgYWRkaSBhZHZhbmNlLCBQQwotICAgIGptcCBbUEIsIFBDLCA4XQorICAg
IGptcCBbUEIsIFBDLCA4XSAgICAgICAgICAgICAgICAgLy8gZ290byBuZXh0IGJ5dGVjb2RlOwog
ZW5kCiAKIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgam1wIFtQQiwgUEMs
IDhdCisgICAgam1wIFtQQiwgUEMsIDhdICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQotICAgIG1v
dmUgYXJnMSwgdDUKLSAgICBtb3ZlIGFyZzIsIHQ0Ci0gICAgY2FsbCBmdW5jdGlvbgorICAgIGlm
IFg4Nl82NAorICAgICAgICBtb3ZlIGFyZzEsIHQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGFyZzEgPSAuLi47CisgICAgICAgIG1vdmUgYXJnMiwgdDQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYXJnMiA9IC4uLjsKKyAgICAgICAgY2FsbCBmdW5jdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIEMgZnVuY3Rpb247CisgICAgZWxzaWYg
Q19MT09QCisgICAgICAgIGN4eENhbGxTbG93UGF0aCBmdW5jdGlvbiwgYXJnMSwgYXJnMgorICAg
IGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKIGVuZAogCiAjIFRoaXMgYmFyZWx5IHdvcmtz
LiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgogbWFjcm8gY0Nh
bGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQotICAgIG1vdmUgYXJnMSwgdDUK
LSAgICBtb3ZlIGFyZzIsIHQ0Ci0gICAgbW92ZSBhcmczLCB0MQotICAgIG1vdmUgYXJnNCwgdDIK
LSAgICBjYWxsIGZ1bmN0aW9uCisgICAgaWYgWDg2XzY0CisgICAgICAgIG1vdmUgYXJnMSwgdDUK
KyAgICAgICAgbW92ZSBhcmcyLCB0NAorICAgICAgICBtb3ZlIGFyZzMsIHQxCisgICAgICAgIG1v
dmUgYXJnNCwgdDIKKyAgICAgICAgY2FsbCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAorICAg
ICAgICBlcnJvcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKIGVuZAogCiBtYWNy
byBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCiAgICAgbGVhcCBbUEIsIFBDLCA4XSwgUEMKKyAgICBt
bGFtRG8gLy8gcHJpbnRmKCJsZWEgW1BCLCBQQywgOF0gPT4gUEMgJXBcbiIsIHJQQy52cCk7CiAg
ICAgbW92ZSBQQiwgdDMKIGVuZAogCiBtYWNybyByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKLSAg
ICBtb3ZlIHQwLCBQQwotICAgIG1vdmUgdDEsIGNmcgorICAgIG1sYW1EbyAvLyBwcmludGYoIiBy
ZXN0b3JlIFBCICVwIFBDICVwID4+PiBcbiIsIHJCYXNlUEMudnAsIHJQQy52cCk7CisgICAgbW92
ZSB0MCwgUEMgICAgICAgICAgICAgICAgIC8vIHBjID0gcmVzdWx0Lmluc3RydWN0aW9uPHQwPgor
ICAgIG1vdmUgdDEsIGNmciAgICAgICAgICAgICAgICAvLyBwYyA9IHJlc3VsdC5leGVjU3RhdGU8
dDE+CiAgICAgbW92ZSB0MywgUEIKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgcmVzdG9yZSBQQiAl
cCBQQyAlcCA+Pj4gXG4iLCByQmFzZVBDLnZwLCByUEMudnApOwogICAgIHN1YnAgUEIsIFBDCiAg
ICAgdXJzaGlmdHAgMywgUEMKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgc3ViIFBCLCBQQyB8IHVy
c2hpZnQgMywgUEMgPT4gUEMgJXBcbiIsIHJQQy52cCk7CiBlbmQKIAogbWFjcm8gY2FsbFNsb3dQ
YXRoKHNsb3dQYXRoKQpAQCAtOTgsMTAgKzExNSwzMCBAQCBlbmQKIAogIyBDYWxsIGEgc2xvdyBw
YXRoIGZvciBjYWxsIGNhbGwgb3Bjb2Rlcy4KIG1hY3JvIGNhbGxDYWxsU2xvd1BhdGgoYWR2YW5j
ZSwgc2xvd1BhdGgsIGFjdGlvbikKKyAgICAjIG1vdmUgQXJndW1lbnRDb3VudCwgdDAKKyAgICAj
IG1sYW1EbyAvLyBwcmludGYoIiAgIFRFU1QgQXJndW1lbnRDb3VudCA9PiAlcCBcbiIsIHIwLnZw
KTsKKyAgICAjIGFkZGkgVGFnT2Zmc2V0LCBjZnIsIHQwCisgICAgIyBtbGFtRG8gLy8gcHJpbnRm
KCIgICBURVNUIFRhZ09mZnNldFtjZnIgJXBdID0+ICVwIFxuIiwgY2FsbEZyYW1lLCByMC52cCk7
CisgICAgIyBtb3ZlIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQsIHQwCisgICAgIyBtbGFtRG8g
Ly8gcHJpbnRmKCIgICBURVNUIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQgPT4gJXAgXG4iLCBy
MC52cCk7CisgICAgIyBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIHQwCisg
ICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgICBURVNUIG1vdmUgQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldFtjZnIgJXBdID0+ICVwIFxuIiwgY2FsbEZyYW1lLCByMC52cCk7CisgICAgIyBsb2FkaSBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIHQwCisgICAgIyBtbGFtRG8gLy8gcHJpbnRm
KCIgICBURVNUIGxvYWQgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnIgJXBdID0+ICVwIFxu
IiwgY2FsbEZyYW1lLCByMC52cCk7CisgICAgIyBtb3ZlIENhbGxlckZyYW1lLCB0MAorICAgICMg
bWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBDYWxsZXJGcmFtZSA9PiAlcCBcbiIsIHIwLnZwKTsK
KyAgICAjIG1vdmUgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAKKyAgICAjIG1sYW1EbyAvLyBwcmludGYo
IiAgIFRFU1QgbW92ZSBDYWxsZXJGcmFtZVtjZnIgJXBdID0+ICVwIFxuIiwgY2FsbEZyYW1lLCBy
MC52cCk7CisgICAgIyBsb2FkaSBDYWxsZXJGcmFtZVtjZnJdLCB0MAorICAgICMgbWxhbURvIC8v
IHByaW50ZigiICAgVEVTVCBsb2FkIENhbGxlckZyYW1lW2NmciAlcF0gPT4gJXAgXG4iLCBjYWxs
RnJhbWUsIHIwLnZwKTsKKwogICAgIGFkZGkgYWR2YW5jZSwgUEMsIHQwCisgICAgbWxhbURvIC8v
IHByaW50ZigiICAgVEVTVCBCRUZPUkUgY2ZyICVwIGNhbGxlckZyYW1lICVwIFxuIiwgY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwogICAgIHN0b3JlaSB0MCwgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgbWxhbURvIC8vIHByaW50ZigiICAgVEVTVCBBRlRF
UiBjZnIgJXAgY2FsbGVyRnJhbWUgJXAgXG4iLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKSk7CiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogICAgIGNDYWxsMihzbG93UGF0
aCwgY2ZyLCBQQykKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgICBBRlRFUiBjQ2FsbDIgUEIgJXAg
UEMgJXAgPj4+IFxuIiwgckJhc2VQQy52cCwgclBDLnZwKTsKICAgICBtb3ZlIHQxLCBjZnIKICAg
ICBhY3Rpb24odDApCiBlbmQKQEAgLTEyNCwyNCArMTYxLDMzIEBAIGVuZAogCiAjIEluZGV4IGFu
ZCB2YWx1ZSBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IG1heSBiZSBjbG9iYmVy
ZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB2YWx1ZSkKKyAgICAjIG1s
YW1EbyAvLyBwcmludGYoIiAqKiogbG9hZENvbnN0YW50T3JWYXJpYWJsZVxuIik7CiAgICAgYnBn
dGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgIyBt
bGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9yVmFyaWFibGUgLnZhcmlhYmxlXG4i
KTsKICAgICBsb2FkcCBbY2ZyLCBpbmRleCwgOF0sIHZhbHVlCisgICAgbWxhbUR1bXAgdmFsdWUK
ICAgICBqbXAgLmRvbmUKIC5jb25zdGFudDoKKyAgICAjIG1sYW1EbyAvLyBwcmludGYoIiAqKiog
bG9hZENvbnN0YW50T3JWYXJpYWJsZSAuY29uc3RhbnRcbiIpOwogICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB2YWx1ZQogICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZhbHVlCiAgICAgc3VicCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwgaW5kZXgKICAgICBsb2FkcCBbdmFsdWUsIGluZGV4LCA4XSwgdmFsdWUK
KyAgICBtbGFtRHVtcCB2YWx1ZQogLmRvbmU6CisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgKioq
IGxvYWRDb25zdGFudE9yVmFyaWFibGUgLmRvbmVcbiIpOwogZW5kCiAKIG1hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGVJbnQzMihpbmRleCwgdmFsdWUsIHNsb3cpCisgICAgIyBtbGFtRG8gLy8g
cHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMlxuIik7CiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShpbmRleCwgdmFsdWUpCiAgICAgYnBiIHZhbHVlLCB0YWdUeXBlTnVt
YmVyLCBzbG93CiBlbmQKIAogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoaW5kZXgs
IHZhbHVlLCBzbG93KQorICAgICMgbWxhbURvIC8vIHByaW50ZigiICoqKiBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbFxuIik7CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdmFs
dWUpCisgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsOiB2YWx1ZSAlcCB0YWdNYXNrICVwXG4iLCByNC52cCwgdGFnTWFzay52cCk7CiAgICAgYnRw
bnogdmFsdWUsIHRhZ01hc2ssIHNsb3cKIGVuZAogCkBAIC0xODAsNTcgKzIyNiw4NSBAQCBlbmQK
IAogIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKIAorLy8gYnl0ZWNvZGU6IGVudGVyCisv
LworLy8gICBJbml0aWFsaXplcyBsb2NhbCB2YXJpYWJsZXMgdG8gdW5kZWZpbmVkLiBJZiB0aGUg
Y29kZSBibG9jayByZXF1aXJlcworLy8gICBhbiBhY3RpdmF0aW9uLCBlbnRlcl93aXRoX2FjdGl2
YXRpb24gaXMgdXNlZCBpbnN0ZWFkLgorLy8gICBUaGlzIG9wY29kZSBhcHBlYXJzIG9ubHkgYXQg
dGhlIGJlZ2lubmluZyBvZiBhIGNvZGUgYmxvY2suCisKIF9sbGludF9vcF9lbnRlcjoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAg
ICAgIC8vIHQyPENvZGVCbG9jaz4gPSBjZnIuQ29kZUJsb2NrCiAgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bVZhcnNbdDJdLCB0MiAgICAgIC8vIHQyPHNpemVfdD4gPSB0MjxDb2RlQmxvY2s+Lm1f
bnVtVmFycwotICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQotICAgIG1vdmUgVmFsdWVVbmRlZmlu
ZWQsIHQwCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lICAgICAgICAgICAgICAgICAgIC8vIGlm
IChudW1WYXJzPHQyPiA9PSAwKSBnb3RvIC5kb25lOworICAgIG1vdmUgVmFsdWVVbmRlZmluZWQs
IHQwICAgICAgICAgICAgICAgICAvLyBqc1VuZGVmaW5lZDx0MD4gPSBVbmRlZmluZWQ7CiAub3BF
bnRlckxvb3A6Ci0gICAgc3ViaSAxLCB0MgotICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCi0g
ICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorICAgIHN1YmkgMSwgdDIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgIG51bVZhcnM8dDI+LS07CisgICAgc3RvcmVwIHQwLCBbY2ZyLCB0
MiwgOF0gICAgICAgICAgICAgICAgIC8vICAgY2ZyW251bVZhcnM8dDI+XSA9IGpzVW5kZWZpbmVk
PHQwPjsKKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wICAgICAgICAgICAgICAgICAgLy8gaWYg
KG51bVZhcnM8dDI+ICE9IDApIGdvdG8gLmxvb3A7CiAub3BFbnRlckRvbmU6CiAgICAgZGlzcGF0
Y2goMSkKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FjdGl2YXRpb24gZHN0KHIpCisvLworLy8g
ICBJZiB0aGUgYWN0aXZhdGlvbiBvYmplY3QgZm9yIHRoaXMgY2FsbGZyYW1lIGhhcyBub3QgeWV0
IGJlZW4gY3JlYXRlZCwKKy8vICAgdGhpcyBjcmVhdGVzIGl0IGFuZCB3cml0ZXMgaXQgYmFjayB0
byBkc3QuCisKIF9sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCi0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBicG5lcSBbY2ZyLCB0MCwgOF0s
IFZhbHVlRW1wdHksIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCi0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pCisgICAgbG9hZGlzIDhbUEIsIFBDLCA4
XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmF0aW9uUmVnPHQw
PiA9IG9wZXJhbmQ8ZHN0UmVnSWQ+OworICAgIGJwbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVFbXB0
eSwgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUgLy8gaWYgKGNmclthY3RpdmF0aW9uUmVnPHQwPl0g
IT0gRW1wdHkpIGdvdG8gLmRvbmU7CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y3JlYXRlX2FjdGl2YXRpb24pICAgICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZh
dGlvbjsKIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgogICAgIGRpc3BhdGNoKDIpCiAKIAorLy8g
Ynl0ZWNvZGU6IGluaXRfbGF6eV9yZWcgZHN0KHIpCisvLworLy8gICBJbml0aWFsaXNlcyBkc3Qo
cikgdG8gSlNWYWx1ZSgpLgorLy8gICBUaGlzIG9wY29kZSBhcHBlYXJzIG9ubHkgYXQgdGhlIGJl
Z2lubmluZyBvZiBhIGNvZGUgYmxvY2suCisKIF9sbGludF9vcF9pbml0X2xhenlfcmVnOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIHN0b3Jl
cCBWYWx1ZUVtcHR5LCBbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MCAg
ICAgICAgICAgICAvLyBkc3Q8dDA+ID0gb3BlcmFuZDxkc3RSZWdJZD47CisgICAgc3RvcmVwIFZh
bHVlRW1wdHksIFtjZnIsIHQwLCA4XSAgICAgLy8gY2ZyW2RzdDx0MD5dID0gRW1wdHk7CiAgICAg
ZGlzcGF0Y2goMikKIAogCisvLyBieXRlY29kZTogY3JlYXRlX2FyZ3VtZW50cyBkc3QocikKKy8v
CisvLyAgIENyZWF0ZXMgdGhlICdhcmd1bWVudHMnIG9iamVjdCBhbmQgcGxhY2VzIGl0IGluIGJv
dGggdGhlCisvLyAgICdhcmd1bWVudHMnIGNhbGwgZnJhbWUgc2xvdCBhbmQgdGhlIGxvY2FsICdh
cmd1bWVudHMnCisvLyAgIHJlZ2lzdGVyLCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBpbml0
aWFsaXNlZC4KKwogX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCi0gICAgYnBuZXEgW2NmciwgdDAsIDhd
LCBWYWx1ZUVtcHR5LCAub3BDcmVhdGVBcmd1bWVudHNEb25lCi0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhd
LCB0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRzdDx0MD4gPSBvcGVyYW5k
PGRzdFJlZ0lkPjsKKyAgICBicG5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0
ZUFyZ3VtZW50c0RvbmUgIC8vIGlmIChjZnJbZHN0PHQwPl0gIT0gRW1wdHkpIGdvdG8gLmRvbmU7
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykgICAg
ICAgICAvLyBjYWxsIHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzOwogLm9wQ3JlYXRlQXJndW1l
bnRzRG9uZToKICAgICBkaXNwYXRjaCgyKQogCiAKKy8vIGJ5dGVjb2RlOiBvcF9jcmVhdGVfdGhp
cyB0aGlzKHIpIHByb3RvKHIpCisvLworLy8gICBBbGxvY2F0ZSBhbiBvYmplY3QgYXMgJ3RoaXMn
LCBmb3IgdXNlIGluIGNvbnN0cnVjdGlvbi4KKy8vICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkg
YmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZSBibG9jay4KKwogX2xsaW50X29wX2Ny
ZWF0ZV90aGlzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwg
dDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAg
ICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzPHQwPiA9IGNmci5DYWxsZWU7Cisg
ICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9jYWNoZWRJbmhlcml0b3JJRFt0MF0sIHQyICAgICAgIC8v
IGluaGVyaXRvcjx0Mj4gPSB0aGlzPHQwPi5jYWNoZWRJbmhlcml0b3JJRDsKKyAgICBidHB6IHQy
LCAub3BDcmVhdGVUaGlzU2xvdyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGluaGVy
aXRvciA9PSAwKSBnb3RvIC5zbG93OworICAgIC8vIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0Zp
bmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIGpzRmluYWxPYmplY3QuY2xhc3MsIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdyk7CiAgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmlu
YWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJ
bmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCi0gICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDEKLSAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XQorICAgIGxvYWRpcyA4W1BC
LCBQQywgOF0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzSUQ8dDE+ID0g
b3BlcmFuZDx0aGlzUmVnSWQ+OworICAgIHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnJbdGhpc0lEPHQxPl0gPSB0aGlzPHQwPjsKICAgICBk
aXNwYXRjaCgyKQogCiAub3BDcmVhdGVUaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9jcmVhdGVfdGhpcykgICAgICAgICAgLy8gY2FsbCBzbG93X3BhdGhfY3JlYXRlX3RoaXM7CiAg
ICAgZGlzcGF0Y2goMikKIAogCkBAIC0yNzEsOSArMzQ1LDE2IEBAIF9sbGludF9vcF9tb3Y6CiAg
ICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MikKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQorICAgIG1sYW1EbyAvLyBwcmludGYo
IiAqKiogU1RPUkUgY2ZyW3QwICVsZCAqIDggPT0+ICVsZF0gPSB0MiAlcFxuIiwgcjAuaSwgcjAu
aSAqIDgsIHIyLnZwKTsKICAgICBkaXNwYXRjaCgzKQogCiAKKy8vIGJ5dGVjb2RlOiBub3QgZHN0
UmVnSWQgc3JjUmVnSWQKKy8vIGZ1bmN0aW9uOiBjZnJbZHN0cmVnSWRdID0gIWNmcltzcmNyZWdJ
ZF07CisvLworLy8gICBDb21wdXRlcyBsb2dpY2FsIE5PVCBvZiByZWdpc3RlciBzcmMgKGNvbnZl
cnRlZCB0bworLy8gICBib29sZWFuKSwgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiByZWdpc3RlciBk
c3QuCisKIF9sbGludF9vcF9ub3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyAx
NltQQiwgUEMsIDhdLCB0MApAQCAtMzUzLDI1ICs0MzQsNDQgQEAgX2xsaW50X29wX25lcV9udWxs
OgogbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYXRoKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDAKKyAgICBtbGFtRHVtcCB0
MAogICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MgorICAgIG1sYW1EdW1wIHQyCisgICAgbWxh
bURvIC8vIHByaW50Zigic3RyaWN0RXEgQkVGT1JFIGxvYWRpbmcgdDFcbiIpOwogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDAsIHQxKQorICAgIG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVx
IEFGVEVSIGxvYWRpbmcgdDFcbiIpOworICAgIG1sYW1EdW1wIHQxCisgICAgbWxhbURvIC8vIHBy
aW50Zigic3RyaWN0RXEgQkVGT1JFIGxvYWRpbmcgdDBcbiIpOwogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQwKQorICAgIG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVxIEFGVEVSIGxv
YWRpbmcgdDBcbiIpOworICAgIG1sYW1EdW1wIHQwCiAgICAgbW92ZSB0MCwgdDIKICAgICBvcnAg
dDEsIHQyCisgICAgbWxhbUR1bXAgdDIKICAgICBidHB6IHQyLCB0YWdNYXNrLCAuc2xvdworICAg
IG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVxIC5TMSB0MiAmIHRhZ01hc2sgIT0gMFxuIik7CiAg
ICAgYnBhZXEgdDAsIHRhZ1R5cGVOdW1iZXIsIC5sZWZ0T0sKKyAgICBtbGFtRG8gLy8gcHJpbnRm
KCJzdHJpY3RFcSAuUzIgdDAgPCB0YWdUeXBlTnVtYmVyXG4iKTsKICAgICBidHBueiB0MCwgdGFn
VHlwZU51bWJlciwgLnNsb3cKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJzdHJpY3RFcSAuUzMgdDAg
JiB0YWdUeXBlTnVtYmVyID09IDBcbiIpOwogLmxlZnRPSzoKKyAgICBtbGFtRG8gLy8gcHJpbnRm
KCJzdHJpY3RFcSAubGVmdE9LXG4iKTsKICAgICBicGFlcSB0MSwgdGFnVHlwZU51bWJlciwgLnJp
Z2h0T0sKICAgICBidHBueiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKIC5yaWdodE9LOgorICAg
IG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVxIC5yaWdodE9LXG4iKTsKKyAgICBtbGFtRHVtcCBy
MAorICAgIG1sYW1EdW1wIHIxCiAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKICAg
ICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQorICAgIG1sYW1EdW1wIHQxCiAgICAgb3JwIFZhbHVl
RmFsc2UsIHQwCisgICAgbWxhbUR1bXAgdDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XQog
ICAgIGRpc3BhdGNoKDQpCiAKIC5zbG93OgorICAgIG1sYW1EbyAvLyBwcmludGYoInN0cmljdEVx
IC5zbG93XG4iKTsKICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCiAgICAgZGlzcGF0Y2goNCkK
IGVuZApAQCAtNDg2LDU1ICs1ODYsNzUgQEAgX2xsaW50X29wX25lZ2F0ZToKIAogCiBtYWNybyBi
aW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0
aW9uLCBzbG93UGF0aCkKLSAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDAKLSAgICBsb2FkaXMg
MTZbUEIsIFBDLCA4XSwgdDIKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSkKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKLSAgICBicGIgdDAsIHRhZ1R5cGVOdW1i
ZXIsIC5vcDFOb3RJbnQKLSAgICBicGIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDJOb3RJbnQKLSAg
ICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MgotICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0
MSwgdDAsIC5zbG93LCB0MikKLSAgICBkaXNwYXRjaCg1KQorICAgIG1sYW1EbyAvLyBwcmludGYo
IiAqKiogbWxhbSBiaW5hcnlPcEN1c3RvbVN0b3JlXG4iKTsKKyAgICBsb2FkaXMgMjRbUEIsIFBD
LCA4XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjMklkPHQwPiA9IG9wZXJh
bmRzW3NyYzJSZWdJZF07CisgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHNyYzFJZDx0Mj4gPSBvcGVyYW5kc1tzcmMxUmVnSWRdOworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxKSAgICAgICAgICAgICAgICAgICAgICAvLyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNyYzJJZDx0MD4gPT0+IHNyYzI8dDE+KTsKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzcmMxSWQ8dDI+ID09PiBzcmMxPHQwPik7CisgICAgbWxhbURvIC8v
IHByaW50ZigiIG1sYW0gOjogc3JjMTx0MD4gJXAgc3JjMjx0MT4gJXBcbiIsIHIwLnZwLCByMS52
cCk7CisgICAgbWxhbURvIC8vIHByaW50ZigiIG1sYW0gOjogYmluYXJ5T3BDdXN0b21TdG9yZSAx
IHwgdGFnVHlwZU51bWJlciAlcFxuIiwgdGFnVHlwZU51bWJlci52cCk7CisgICAgYnBiIHQwLCB0
YWdUeXBlTnVtYmVyLCAub3AxTm90SW50ICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmMxPHQw
PiBpcyBOT1QgSW50KSBnb3RvIC5vcDFOb3RJbnQ7CisgICAgYnBiIHQxLCB0YWdUeXBlTnVtYmVy
LCAub3AyTm90SW50ICAgICAgICAgICAgICAgICAgIC8vIGlmIChzcmMyPHQxPiBpcyBOT1QgSW50
KSBnb3RvIC5vcDJOb3RJbnQ7CisKKyAgICAvLyBvcDEgYW5kIG9wMiBhcmUgaW50MzI6IGRvIGZh
c3QgaW50MzIgb3BlcmF0aW9uLCBhbmQgZW5kLgorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkc3RJZDx0Mj4gPSBvcGVyYW5kc1tkc3RS
ZWdJZF07CisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQxLCB0MCwgLnNsb3csIHQyKSAg
ICAgICAgIC8vIHQyID0gdDEgb3BlcmF0b3IgdDA7CisgICAgbWxhbURvIC8vIHByaW50ZigiICoq
KiBpbnQgb3AgcjEgPSAlbGQgKCVwKSArIHIwICAlbGQgKCVwKSA9PT4gcjIgJWxkICglcClcbiIs
IHIxLmksIHIxLnZwLCByMC5pLCByMC52cCwgcjIuaSwgcjIudnApOworICAgIGRpc3BhdGNoKDUp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb3RvIG5leHQgYnl0
ZWNvZGU7CiAKIC5vcDFOb3RJbnQ6CiAgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkg
bm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgotICAgIGJ0
cHogdDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgYnBhZXEgdDEsIHRhZ1R5cGVOdW1iZXIs
IC5vcDFOb3RJbnRPcDJJbnQKLSAgICBidHB6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwotICAg
IGFkZHAgdGFnVHlwZU51bWJlciwgdDEKLSAgICBmcDJkIHQxLCBmdDEKKyAgICAvLyBvcDEgaXMg
ZGVmaW5pdGVseSBub3QgYW4gaW50LCBvcDIgY291bGQgYmUgYW55dGhpbmcuCisgICAgbWxhbURv
IC8vIHByaW50ZigiICoqKiAub3AxTm90SW50OlxuIik7CisgICAgbWxhbURvIC8vIHByaW50Zigi
ICoqKiBidHB6IHIwID0gJWxkICglcCksIHRhZ1R5cGVOdW1iZXIgJWxkICglcCk6XG4iLCByMC5p
LCByMC52cCwgdGFnVHlwZU51bWJlci5pLCB0YWdUeXBlTnVtYmVyLnZwKTsKKyAgICBidHB6IHQw
LCB0YWdUeXBlTnVtYmVyLCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzE8
dDA+IGlzIGNvbXBsZXggdHlwZSkgZ290byAuc2xvdzsKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIg
KioqIGJwYWVxIHIxID0gJWxkICglcCksIHRhZ1R5cGVOdW1iZXIgJWxkICglcCk6XG4iLCByMS5p
LCByMS52cCwgdGFnVHlwZU51bWJlci5pLCB0YWdUeXBlTnVtYmVyLnZwKTsKKyAgICBicGFlcSB0
MSwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludE9wMkludCAgICAgICAgICAgLy8gaWYgKHNyYzI8
dDE+ID49IHRhZ1R5cGVOdW1iZXIpIGdvdG8gLm9wMU5vdEludE9wMkludDsKKyAgICBidHB6IHQx
LCB0YWdUeXBlTnVtYmVyLCAuc2xvdyAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNyYzI8
dDE+IGlzIGNvbXBsZXggdHlwZSkgZ290byAuc2xvdzsKKyAgICAvLyBJZiB3ZSBnZXQgaGVyZSwg
dGhlbiBzcmMxPHQwPiBpcyBhIGRvdWJsZSwgYW5kIHNyYzI8dDE+IGlzIGEgZG91YmxlOgorICAg
IGFkZHAgdGFnVHlwZU51bWJlciwgdDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
MSArPSB0YWdUeXBlTnVtYmVyOworICAgIGZwMmQgdDEsIGZ0MSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNyYzx0MT4gdG8gYSBkb3VibGU8ZnQxPjsK
ICAgICBqbXAgLm9wMU5vdEludFJlYWR5CiAub3AxTm90SW50T3AySW50OgotICAgIGNpMmQgdDEs
IGZ0MQorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLm9wMU5vdEludE9wMkludDpcbiIpOwor
ICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHNyYzE8dDA+IG11c3QgYmUgYSBkb3VibGUgKG9w
MSBub3QgaW50LCBhbmQgbm90IGNvbXBsZXggdHlwZSk6CisgICAgY2kyZCB0MSwgZnQxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgc3JjMjx0MT4gdG8g
YSBkb3VibGU8ZnQxPjsKIC5vcDFOb3RJbnRSZWFkeToKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIg
KioqIC5vcDFOb3RJbnRSZWFkeTpcbiIpOwogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQyCiAg
ICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MAotICAgIGZwMmQgdDAsIGZ0MAorICAgIG1sYW1EbyAv
LyBwcmludGYoIiAqKiogcjAgPSAlbGQgKCVwKTpcbiIsIHIwLmksIHIwLnZwKTsKKyAgICBmcDJk
IHQwLCBmdDAgIyBtbGFtIEZJWE1FCisgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiBkMCA9ICVl
LCBkMSA9ICVlXG4iLCByMC5pLCByMS52cCk7CiAgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQw
KQotICAgIGZkMnAgZnQwLCB0MAorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogZDAgPSAlZSwg
ZDEgPSAlZVxuIiwgcjAuaSwgcjEudnApOworICAgIGZkMnAgZnQwLCB0MCAjIG1sYW0gRklYTUUK
ICAgICBzdWJwIHRhZ1R5cGVOdW1iZXIsIHQwCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MiwgOF0K
ICAgICBkaXNwYXRjaCg1KQogCiAub3AyTm90SW50OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAq
KiogLm9wMk5vdEludDpcbiIpOwogICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFu
IGludCwgdGhlIHNlY29uZCBpcyBkZWZpbml0ZWx5IG5vdC4KICAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MgogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAgICAgY2kyZCB0MCwg
ZnQwCiAgICAgYWRkcCB0YWdUeXBlTnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorICAgIGZw
MmQgdDEsIGZ0MSAjIG1sYW0gRklYTUUKICAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCi0g
ICAgZmQycCBmdDAsIHQwCisgICAgZmQycCBmdDAsIHQwICMgbWxhbSBGSVhNRQogICAgIHN1YnAg
dGFnVHlwZU51bWJlciwgdDAKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3Bh
dGNoKDUpCiAKIC5zbG93OgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLnNsb3c6XG4iKTsK
ICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCiAgICAgZGlzcGF0Y2goNSkKIGVuZAogCiBtYWNy
byBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQor
ICAgIG1sYW1EbyAvLyBwcmludGYoIiBtbGFtIGJpbmFyeU9wXG4iKTsKICAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQogICAg
ICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKQEAgLTU0Niw2ICs2
NjYsNyBAQCBlbmQKIAogX2xsaW50X29wX2FkZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bWxhbURvIC8vIHByaW50ZigiIG1sYW0gb3BfYWRkXG4iKTsKICAgICBiaW5hcnlPcCgKICAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5k
LAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLApAQCAt
NTg0LDE1ICs3MDUsMzAgQEAgX2xsaW50X29wX2RpdjoKICAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93LCBpbmRleCkKICAgICAgICAgICAgICMgQXNzdW1lIHQzIGlzIHNjcmF0Y2hhYmxl
LgogICAgICAgICAgICAgYnRpeiBsZWZ0LCBzbG93CisgICAgICAgICAgICBtbGFtRG8gLy8gcHJp
bnRmKCIgKioqIGxlZnQgaXMgTk9UIDBcbiIpOwogICAgICAgICAgICAgYmluZXEgbGVmdCwgLTEs
IC5ub3ROZWcyVHdvVGhlMzFEaXZCeU5lZzEKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYo
IiAqKiogbGVmdCBpcyAtMVxuIik7CiAgICAgICAgICAgICBiaWVxIHJpZ2h0LCAtMjE0NzQ4MzY0
OCwgLnNsb3cKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogcmlnaHQgaXMgTk9U
IC0yMTQ3NDgzNjQ4IFslcF1cbiIsICh2b2lkKiktMjE0NzQ4MzY0OCk7CisgICAgICAgICAgICBt
bGFtRHVtcCByaWdodAogICAgICAgICAubm90TmVnMlR3b1RoZTMxRGl2QnlOZWcxOgorICAgICAg
ICAgICAgbWxhbURvIC8vIHByaW50ZigiICoqKiAubm90TmVnMlR3b1RoZTMxRGl2QnlOZWcxOlxu
Iik7CiAgICAgICAgICAgICBidGlueiByaWdodCwgLmludE9LCisgICAgICAgICAgICBtbGFtRG8g
Ly8gcHJpbnRmKCIgKioqIHJpZ2h0IGlzIDBcbiIpOwogICAgICAgICAgICAgYmlsdCBsZWZ0LCAw
LCBzbG93CisgICAgICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIGxlZnQgPj0gMFxuIik7
CiAgICAgICAgIC5pbnRPSzoKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLmlu
dE9LOlxuIik7CiAgICAgICAgICAgICBtb3ZlIGxlZnQsIHQzCisgICAgICAgICAgICBtbGFtRG8g
Ly8gcHJpbnRmKCIgKioqIGxlZnQgaXM6XG4iKTsKKyAgICAgICAgICAgIG1sYW1EdW1wIHQzCiAg
ICAgICAgICAgICBtb3ZlIHJpZ2h0LCB0MAorICAgICAgICAgICAgbWxhbURvIC8vIHByaW50Zigi
ICoqKiByaWdodCBpczpcbiIpOworICAgICAgICAgICAgbWxhbUR1bXAgdDAKICAgICAgICAgICAg
IGNkcWkKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiogLmNkcWk6XG4iKTsKKyAg
ICAgICAgICAgIG1sYW1EdW1wIHQwCisgICAgICAgICAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioq
IGRvaW5nIGRpdjpcbiIpOwogICAgICAgICAgICAgaWRpdmkgdDMKICAgICAgICAgICAgIGJ0aW56
IHQxLCBzbG93CiAgICAgICAgICAgICBvcnAgdGFnVHlwZU51bWJlciwgdDAKQEAgLTgwNiw2ICs5
NDIsOCBAQCBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
CiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgIyBtbGFtRG8gLy8g
bWxhbUJyZWFrKCJyZXNvbHZlR2xvYmFsIiwwLDApOworICAgICMgbWxhbURvIC8vIHByaW50Zigi
ICAgbWxhbSA6OiByZXNvbHZlR2xvYmFsKCl8IGdvLT5zdHJ1Y3R1cmU8dDE+ICVwLCBwYyBjYWNo
ZSBzdHJ1Y3R1cmUgPCVwPiAlcFxuIiwgcjEudnAsIHJCYXNlUEMuaThwICsgclBDLmkgKiA4ICsg
MjQsICoodm9pZCoqKShyQmFzZVBDLmk4cCArIHJQQy5pICogOCArIDI0KSk7CiAgICAgYnBuZXEg
dDEsIDI0W1BCLCBQQywgOF0sIHNsb3cKICAgICBsb2FkaXMgMzJbUEIsIFBDLCA4XSwgdDEKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCkBAIC05NjMsMTMgKzEx
MDEsMTggQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgIyB0byB0YWtl
IGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwg
d2hpY2ggaXMgd2hhdAogICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KICAg
ICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDAKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsb2FkaXMg
MTZbUEIsIFBDLCA4XSwgdDAgPT0+IHQwICVsZCBbJXBdXG4iLCByMC5pLCByMC52cCk7CiAgICAg
bG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCJsb2FkaXMgMzJb
UEIsIFBDLCA4XSwgdDEgPT0+IHQxICVsZCBbJXBdXG4iLCByMS5pLCByMS52cCk7CiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBtbGFt
RG8gLy8gcHJpbnRmKCJsb2FkVmFyIHQwID09PiB0MyAlbGQgWyVwXVxuIiwgcjQuaSwgcjQudnAp
OwogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MgorICAgIG1sYW1EbyAvLyBwcmludGYoIiAq
KiogYWJvdXQgdG8gY2FsbCBnZXRQcm9wZXJ0eVN0b3JhZ2U6XG4iKTsKICAgICBnZXRQcm9wZXJ0
eVN0b3JhZ2UoCiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3Bl
cnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIG1sYW1EbyAvLyBwcmludGYoIiAqKiog
Y29udGludWF0aW9uOiB0MyAlcCB0MSAlcFxuIiwgcjQudnAsIHIxLnZwKTsKICAgICAgICAgICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICAg
ICAgICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgICAgICAgICBsb2FkcCBbcHJvcGVy
dHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKQEAgLTk4NSw2ICsxMTI4LDcgQEAgbWFjcm8gZ2V0QnlJ
ZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiBlbmQKIAogX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBt
bGFtRG8gLy8gcHJpbnRmKCIgKioqIGxsaW50X29wX2dldF9ieV9pZFxuIik7CiAgICAgZ2V0QnlJ
ZCh3aXRoSW5saW5lU3RvcmFnZSkKIAogCkBAIC0xMjkzLDEwICsxNDM3LDEwIEBAIG1hY3JvIGNv
bXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXAKIC5vcDFOb3RJbnRPcDJOb3RJbnQ6CiAg
ICAgYnRweiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKICAgICBhZGRwIHRhZ1R5cGVOdW1iZXIs
IHQxCi0gICAgZnAyZCB0MSwgZnQxCisgICAgZnAyZCB0MSwgZnQxICMgbWxhbSBGSVhNRQogLm9w
MU5vdEludFJlYWR5OgogICAgIGFkZHAgdGFnVHlwZU51bWJlciwgdDAKLSAgICBmcDJkIHQwLCBm
dDAKKyAgICBmcDJkIHQwLCBmdDAgIyBtbGFtIEZJWE1FCiAgICAgZG91YmxlQ29tcGFyZShmdDAs
IGZ0MSwgLmp1bXBUYXJnZXQpCiAgICAgZGlzcGF0Y2goNCkKIApAQCAtMTMwNCw3ICsxNDQ4LDcg
QEAgbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcAogICAgIGNpMmQgdDAs
IGZ0MAogICAgIGJ0cHogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CiAgICAgYWRkcCB0YWdUeXBl
TnVtYmVyLCB0MQotICAgIGZwMmQgdDEsIGZ0MQorICAgIGZwMmQgdDEsIGZ0MSAjIG1sYW0gRklY
TUUKICAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKICAgICBkaXNwYXRj
aCg0KQogCkBAIC0xMzIyLDEzICsxNDY2LDE2IEBAIF9sbGludF9vcF9zd2l0Y2hfaW1tOgogICAg
IGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCisgICAgbWxhbUR1bXAgdDEKICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFb
dDJdLCB0MgogICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAgIyBGSVhNRTog
d291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQogICAgIGxvYWRwIENvZGVCbG9jazo6UmFy
ZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0
Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBicGIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3
aXRjaEltbU5vdEludAorICAgICMgbWxhbSBtbGFtQnJlYWsKICAgICBzdWJpIFNpbXBsZUp1bXBU
YWJsZTo6bWluW3QyXSwgdDEKKyAgICBtbGFtRHVtcCB0MQogICAgIGJpYWVxIHQxLCBTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2gKICAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MwogICAgIGxvYWRpcyBbdDMsIHQxLCA0XSwgdDEK
QEAgLTEzOTQsMjYgKzE1NDEsNDUgQEAgX2xsaW50X29wX25ld19mdW5jOgogICAgIGRpc3BhdGNo
KDQpCiAKIAorbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKGNhbGxMaW5rSW5mbykKKyAgICBpZiBD
X0xPT1AKKyAgICAgICAgY3h4Q2FsbEpTRnVuY3Rpb24gTExJbnRDYWxsTGlua0luZm86Om1hY2hp
bmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10gICAgIC8vIGNhbGwgY2FsbExpbmtJbmZvLm1hY2hp
bmVDb2RlVGFyZ2V0OworICAgIGVsc2UKKyAgICAgICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6
bWFjaGluZUNvZGVUYXJnZXRbY2FsbExpbmtJbmZvXSAgICAgLy8gY2FsbCBjYWxsTGlua0luZm8u
bWFjaGluZUNvZGVUYXJnZXQ7CisgICAgICAgIC8vIFJlbG9hZCB0aGUgcmV0dXJuIFBDIGZyb20g
d2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJlOgorICAgICAgICAvLyBwYyA9IGNmci5B
cmd1bWVudENvdW50LlRhZzsgIGdvdG8gKnBjOworICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNwYXRjaEFmdGVy
Q2FsbCgpOworICAgIGVuZAorZW5kCisKKwogbWFjcm8gZG9DYWxsKHNsb3dQYXRoKQotICAgIGxv
YWRpcyA4W1BCLCBQQywgOF0sIHQwCi0gICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKLSAgICBs
b2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKLSAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQwLCB0MykKLSAgICBicG5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZnVuY0lkPHQwPiA9IHBjWzFdOworICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxMaW5rSW5mbzx0MT4gPSBwY1s0
XTsKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIgICAgICAgICAg
ICAgICAgICAgICAvLyBjYWxsZWU8dDI+ID0gY2FsbExpbmtJbmZvPHQxPi5jYWxsZWU7CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbG9hZChmdW5jSWQ8dDA+ID09PiBmdW5jPHQzPiwgLi4uKTsKKyAgICBicG5lcSB0Mywg
dDIsIC5vcENhbGxTbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAo
ZnVuYzx0Mz4gIT0gY2FsbGVlPHQyPiBpLmUuIGlzQnl0ZWNvZGUoKT8pIGdvdG8gLnNsb3c7CiAg
ICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQzCi0gICAgYWRkaSA2LCBQQwotICAgIGxzaGlmdGkg
MywgdDMKLSAgICBhZGRwIGNmciwgdDMKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hh
aW5bdDJdLCB0MAotICAgIHN0b3JlcCB0MiwgQ2FsbGVlW3QzXQotICAgIHN0b3JlcCB0MCwgU2Nv
cGVDaGFpblt0M10KLSAgICBsb2FkaXMgMTYgLSA0OFtQQiwgUEMsIDhdLCB0MgotICAgIHN0b3Jl
aSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCi0gICAgc3RvcmVwIGNmciwgQ2Fs
bGVyRnJhbWVbdDNdCi0gICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNl
dFt0M10KLSAgICBtb3ZlIHQzLCBjZnIKLSAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNo
aW5lQ29kZVRhcmdldFt0MV0KLSAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgYWRkaSA2LCBQ
QyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9p
bnQgUEMgdG8gdGhlIHJldHVybiBhZGRyZXNzLgorCisgICAgLy8gbmV3RnJhbWU8dDM+ID0gY2Zy
ICsgb2Zmc2V0PHQzPiA8PCAzOyAgLy8gb2Zmc2V0ID0gc2l6ZW9mIGN1cnJlbnQgZnJhbWU7Cisg
ICAgbHNoaWZ0aSAzLCB0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gb2Zmc2V0PHQzPiA9IG9mZnNldDx0Mz4gPDwgMzsKKyAgICBhZGRwIGNmciwgdDMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXdGcmFt
ZTx0Mz4gPSBvZmZzZXRNdDM+ICsgY2ZyOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV3RnJh
bWU6CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc2NvcGU8dDA+ID0gY2FsbGVlPHQyPi5zY29wZUNoYWluOworICAgIHN0
b3JlcCB0MiwgQ2FsbGVlW3QzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG5ld0ZyYW1lPHQzPi5DYWxsZWUgPSBjYWxsZWU8dDI+OworICAgIHN0b3JlcCB0MCwgU2Nv
cGVDaGFpblt0M10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1l
PHQwPi5TY29wZUNoYWluID0gc2NvcGU8dDA+OworICAgIGxvYWRpcyAxNiAtIDQ4W1BCLCBQQywg
OF0sIHQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bUFyZ3M8dDI+ID0gLi4u
OworICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdICAgICAgICAg
ICAgICAgICAgIC8vIGNmci5Bcmd1bWVudENvdW50LlRhZyA9IHBjOyAvLyBTdGFzaCB0aGUgcmV0
dXJuIFBDLgorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIG5ld0ZyYW1lPHQzPi5DYWxsZXJGcmFtZSA9IGNmcjsKKyAgICBz
dG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXSAgICAgICAgICAgICAg
ICAvLyBuZXdGcmFtZTx0Mz4uQXJndW1lbnRDb3VudC5QYXlsb2FkID0gbnVtQXJnczx0Mj47Cisg
ICAgbW92ZSB0MywgY2ZyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2ZyID0gbmV3RnJhbWU8dDM+OworCisgICAgLy8gQ2FsbCB0aGUgdGFyZ2V0IGFz
IGlmIGl0J3MgYSBjb21waWxlZCBtZXRob2Q6CisgICAgIyBtbGFtIGNhbGwgTExJbnRDYWxsTGlu
a0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSAgICAgICAgLy8gY2FsbCBjYWxsTGlua0luZm88
dDE+Lm1hY2hpbmVDb2RlVGFyZ2V0OworICAgICMgbWxhbSBkaXNwYXRjaEFmdGVyQ2FsbCgpCisg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKHQxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjYWxsVGFyZ2V0RnVuY3Rpb24oY2FsbExpbmtJbmZvPHQxPik7CiAKIC5vcENhbGxTbG93Ogog
ICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBzbG93UGF0aCkKQEAgLTE0NTQsNiArMTYyMCw3IEBAIF9s
bGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKICAg
ICBsb2FkcCAxNltQQiwgUEMsIDhdLCB0MwogICAgIHN0b3JlcCB0MCwgW2NmciwgdDIsIDhdCisg
ICAgbWxhbUR1bXAgdDAKICAgICB2YWx1ZVByb2ZpbGUodDAsIHQzKQogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBkaXNwYXRjaCgzKQpAQCAtMTU4NCwyMyArMTc1MSw1OSBAQCBfbGxpbnRfdGhy
b3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKIAogbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUo
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgc3RvcmVwIDAsIENvZGVCbG9ja1tjZnJd
Ci0gICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YSArIDhbc3BdLCB0MAotICAgIHN0
b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3QwXQotICAgIGxvYWRwIENhbGxl
ckZyYW1lW2Nmcl0sIHQwCi0gICAgbG9hZHAgU2NvcGVDaGFpblt0MF0sIHQxCi0gICAgc3RvcmVw
IHQxLCBTY29wZUNoYWluW2Nmcl0KLSAgICBwZWVrIDAsIHQxCi0gICAgc3RvcmVwIHQxLCBSZXR1
cm5QQ1tjZnJdCi0gICAgbW92ZSBjZnIsIHQ1ICAjIHQ1ID0gcmRpCi0gICAgc3VicCAxNiAtIDgs
IHNwCi0gICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQ0ICMgdDQgPSByc2kKLSAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2V4ZWN1dGFibGVbdDRdLCB0MQotICAgIG1vdmUgdDAsIGNmciAjIFJlc3RvcmUg
Y2ZyIHRvIGF2b2lkIGxvYWRpbmcgZnJvbSBzdGFjawotICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNl
dFRvRnVuY3Rpb25bdDFdCi0gICAgYWRkcCAxNiAtIDgsIHNwCi0gICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YSArIDhbc3BdLCB0MworCisgICAgaWYgWDg2XzY0ICMgbWxhbQorICAg
ICAgICAvLyBTZXQgZ2xvYmFsRGF0YS50b3BDYWxsRnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAg
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGEgKyA4W3NwXSwgdDAgICAgIC8vIGds
b2JhbERhdGE8dDA+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICAgICAgc3Rv
cmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVbdDBdICAgICAgLy8gZ2xvYmFsRGF0
YTx0MD4udG9wQ2FsbEZyYW1lID0gY2ZyOworCisgICAgICAgIGxvYWRwIENhbGxlckZyYW1lW2Nm
cl0sIHQwICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlckZyYW1lPHQwPiA9IGNmci5DYWxs
ZXJGcmFtZTsKKyAgICAgICAgbG9hZHAgU2NvcGVDaGFpblt0MF0sIHQxICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2NvcGU8dDE+ID0gY2FsbGVyRnJhbWU8dDA+LlNjb3BlQ2hhaW47CisgICAg
ICAgIHN0b3JlcCB0MSwgU2NvcGVDaGFpbltjZnJdICAgICAgICAgICAgICAgICAgICAgIC8vIGNm
ci5TY29wZUNoYWluID0gc2NvcGU8dDE+OworCisgICAgICAgIHBlZWsgMCwgdDEKKyAgICAgICAg
c3RvcmVwIHQxLCBSZXR1cm5QQ1tjZnJdICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2ZyLlJl
dHVyblBDID0gPHQxPjsKKyAgICAgICAgbW92ZSBjZnIsIHQ1ICAjIHQ1ID0gcmRpCisgICAgICAg
IHN1YnAgMTYgLSA4LCBzcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2Vy
dmUgc3RhY2sgc3BhY2UuCisgICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0NCAjIHQ0ID0gcnNp
ICAgICAgICAgICAgICAgIC8vIGNhbGxlZTx0ND4gPSBjZnIuQ2FsbGVlOworICAgICAgICBsb2Fk
cCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDRdLCB0MSAgICAgICAgICAvLyBleGVjdXRhYmxl
PHQxPiA9IGNhbGVlPHQ0Pi5leGVjdXRhYmxlOworICAgICAgICBtb3ZlIHQwLCBjZnIgIyBSZXN0
b3JlIGNmciB0byBhdm9pZCBsb2FkaW5nIGZyb20gc3RhY2sgIC8vIGNmciA9IGNhbGxlckZyYW1l
PHQwPjsKKyAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgICAg
ICAgICAgLy8gQ2FsbCB0aGUgZXhlY3V0YWJsZTsKKyAgICAgICAgYWRkcCAxNiAtIDgsIHNwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSBzdGFjayBzcGFjZS4KKyAg
ICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YSArIDhbc3BdLCB0MyAgICAgLy8g
Z2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxEYXRhOworCisgICAgZWxz
aWYgQVJNdjcKKyAgICAgICAgZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KKworICAgIGVsc2lmIENfTE9PUAorICAg
ICAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MCAgICAgICAgICAgICAgICAgICAgICAvLyBj
YWxsZXJGcmFtZTx0MD4gPSBjZnIuQ2FsbGVyRnJhbWU7CisgICAgICAgIGxvYWRwIFNjb3BlQ2hh
aW5bdDBdLCB0MSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlPHQxPiA9IGNhbGxlckZy
YW1lPHQwPi5TY29wZUNoYWluOworICAgICAgICBzdG9yZXAgdDEsIFNjb3BlQ2hhaW5bY2ZyXSAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnIuU2NvcGVDaGFpbiA9IHNjb3BlPHQxPjsKKworICAg
ICAgICAvLyBTZXQgZ2xvYmFsRGF0YS50b3BDYWxsRnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAg
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MyAgICAgICAgIC8vIGds
b2JhbERhdGE8dDM+ID0gaml0U3RhY2tGcmFtZTxzcD4uZ2xvYmFsRGF0YTsKKyAgICAgICAgc3Rv
cmVwIGNmciwgSlNHbG9iYWxEYXRhOjp0b3BDYWxsRnJhbWVbdDNdICAgICAgLy8gZ2xvYmFsRGF0
YTx0Mz4udG9wQ2FsbEZyYW1lID0gY2ZyOworCisgICAgICAgIG1vdmUgdDAsIHQyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmVkQ2FsbGVyRnJhbWU8dDI+ID0gY2Fs
bGVyRnJhbWU8dDA+OworICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDMp
ICAgICAgICAgICAgICAvLyBzYXZlZFJldHVyblBDPHQzPiA9IHJldHVyblBDOworICAgICAgICBz
dG9yZXAgdDMsIFJldHVyblBDW2Nmcl0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0
dXJuUEMgPSA8dDM+OworICAgICAgICAvLyBQYXNzIGN1cnJlbnRGcmFtZSBhcyBhbiBhcmcgdG8g
dGhlIHRhcmdldDoKKyAgICAgICAgbW92ZSBjZnIsIHQwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYXJnMDogYXJnMDx0MD4gPSBjZnI7CisgICAgICAgIC8vIENhbGwgdGhl
IGZ1bmN0aW9uIHdpdGggcjAgPSBjdXJyZW50RnJhbWUsIGNmciA9IG9sZEZyYW1lOiBXaHk/Pz8K
KyAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQxICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8ganNmdW5jPHQxPiA9IGNmci5DYWxsZWU7CisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
ZXhlY3V0YWJsZVt0MV0sIHQxICAgICAgICAgIC8vIGFyZzE6IGV4ZWN1dGFibGU8dDE+ID0ganNm
dW5jPHQxPi5leGVjdXRhYmxlOworICAgICAgICBtb3ZlIHQyLCBjZnIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZnIgPSBzYXZlZENhbGxlckZyYW1lPHQyPjsKKyAgICAg
ICAgY3h4Q2FsbE5hdGl2ZSBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0gICAgLy8gY2Fs
bCBleGVjdXRhYmxlPHQxPi5DYWxsT3JDb25zdHJ1Y3Q7CisKKyAgICAgICAgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4odDMpICAgICAgICAgICAgLy8gcmV0dXJuUEMgPSBzYXZlZFJl
dHVyblBDPHQzPjsKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQzICAgICAgICAgLy8gZ2xvYmFsRGF0YTx0Mz4gPSBqaXRTdGFja0ZyYW1lPHNwPi5nbG9iYWxE
YXRhOworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKwogICAgIGJ0cG56IEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uW3QzXSwgLmV4Y2VwdGlvbgogICAgIHJldAorICAgIAogLmV4Y2Vw
dGlvbjoKICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDEpCiAgICAgbG9hZGkg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24g
MTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMjEgKzExMCwzNiBAQCBlbmQKIAogIyBTb21l
IGNvbW1vbiB1dGlsaXRpZXMuCiBtYWNybyBjcmFzaCgpCi0gICAgc3RvcmVpIHQwLCAweGJiYWRi
ZWVmW10KLSAgICBtb3ZlIDAsIHQwCi0gICAgY2FsbCB0MAorICAgIC8vIG1hY3JvIGNyYXNoKCkg
eworICAgIGlmIENfTE9PUAorICAgICAgICBjeHhDcmFzaAorICAgIGVsc2UKKyAgICAgICAgc3Rv
cmVpIHQwLCAweGJiYWRiZWVmW10KKyAgICAgICAgbW92ZSAwLCB0MAorICAgICAgICBjYWxsIHQw
CisgICAgZW5kCisgICAgLy8gfSBFTkQgY3Jhc2guCiBlbmQKIAogbWFjcm8gYXNzZXJ0KGFzc2Vy
dGlvbikKICAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgIC8vIG1hY3JvIGFzc2VydChhc3NlcnRp
b24pIHsKICAgICAgICAgYXNzZXJ0aW9uKC5vaykKICAgICAgICAgY3Jhc2goKQogICAgIC5vazoK
KyAgICAvLyB9IEVORCBhc3NlcnQuCiAgICAgZW5kCiBlbmQKIAorCiBtYWNybyBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKLSAgICBpZiBBUk12Nwor
ICAgICMgbWxhbSBCRUdJTgorICAgIGlmIENfTE9PUAorICAgICAgICAjIEluIG91ciBjYXNlLCB3
ZSdyZSBvbmx5IHByZXNlcnZpbmcgdGhlIGJ5dGVjb2RlIHZQQy4gCisgICAgICAgIG1vdmUgbHIs
IGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICAgICAgIyBtbGFtRG8gLy8gcHJpbnRmKCIgICAqKiog
bWxhbSA6OiBHZXR0aW5nIFJldHVyblBDICVwICoqKlxuIiwgclJldFZQQy52cCk7CisgICAgICAg
ICMgbWxhbURvIC8vIEFTU0VSVChyUmV0VlBDLnZwICE9IDApOworICAgIGVsc2lmIEFSTXY3CiAg
ICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKICAgICBlbHNpZiBYODYgb3IgWDg2
XzY0CiAgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCkBAIC0xMzQsNyArMTQ5LDEzIEBA
IG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXMKIGVuZAogCiBtYWNybyBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKLSAgICBpZiBB
Uk12NworICAgICMgbWxhbSBCRUdJTiAgICAKKyAgICBpZiBDX0xPT1AKKyAgICAgICAgIyBJbiBv
dXIgY2FzZSwgd2UncmUgb25seSByZXN0b3JpbmcgdGhlIGJ5dGVjb2RlIHZQQy4gCisgICAgICAg
IG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgICAgICMgbWxhbURvIC8vIHByaW50ZigiICAg
KioqIG1sYW0gOjogU2V0dGluZyBSZXR1cm5QQyAlcCAqKipcbiIsIHJSZXRWUEMudnApOworICAg
ICAgICAjIG1sYW1EbyAvLyBBU1NFUlQoclJldFZQQy52cCAhPSAwKTsKKyAgICBlbHNpZiBBUk12
NwogICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgogICAgIGVsc2lmIFg4NiBvciBYODZf
NjQKICAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgpAQCAtMTU0LDcgKzE3NSwxMyBAQCBtYWNy
byBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgc2xvd1BhdGgpCiAgICAgICAgIGFkdmFuY2UsCiAg
ICAgICAgIHNsb3dQYXRoLAogICAgICAgICBtYWNybyAoY2FsbGVlKQotICAgICAgICAgICAgY2Fs
bCBjYWxsZWUKKyAgICAgICAgICAgIGlmIENfTE9PUAorICAgICAgICAgICAgICAgIGN4eENhbGxK
U0Z1bmN0aW9uIGNhbGxlZQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGwg
Y2FsbGVlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgcmV0dXJu
IFBDIGZyb20gd2hlcmUgd2Ugc3Rhc2hlZCBpdCwgYW5kIGdvIHRoZXJlOgorICAgICAgICAgICAg
Ly8gcGMgPSBjZnIuQXJndW1lbnRDb3VudC5UYWc7ICBnb3RvICpwYzsKICAgICAgICAgICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKCkKICAgICAgICAgZW5kKQogZW5kCkBAIC0xNzcsMTMgKzIwNCwxNCBA
QCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQogZW5kCiAKIG1hY3JvIGFzc2Vy
dE5vdENvbnN0YW50KGluZGV4KQotICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCisgICAgYXNzZXJ0KG1hY3JvIChvaykg
YmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkgLy8gYXNzZXJ0
KGluZGV4PGEwPiA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKIGVuZAogCiBtYWNybyBm
dW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVj
dXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBsb2FkcCBGdW5jdGlv
bkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJl
Z2lzdGVyCisgICAgIyBtbGFtQnJlYWsKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVn
aXN0ZXIgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlZTxyZWc+ID0gY2ZyLkNhbGxlZTsK
KyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlciAvL2V4ZWN1dGFibGU8cmVnPiA9IEpTRnVuY3Rpb248cmVnPi5leGVjdXRhYmxl
OworICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3Rhcmdl
dFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIgLy8gY29kZUJsb2NrPHJlZz4gPSBGdW5jdGlvbkV4
ZWN1dGFibGU8cmVnPi5jb2RlQmxvY2tGb3JDYWxsOyAKIGVuZAogCiBtYWNybyBmdW5jdGlvbkZv
ckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKQEAgLTIwNCwzMiArMjMy
LDQ5IEBAIG1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVIKICAgICAjIE5v
dGhpbmcgdG8gZG8hCiBlbmQKIAorCiAjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8g
ZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKICMgaW4g
dDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgogbWFjcm8gcHJvbG9ndWUo
Y29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQ
YXRoKQotICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBtbGFtRG8g
Ly8gcHJpbnRmKCJcblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gXG4gICAqKiogbWxh
bSA6OiBJbiBwcm9sb2d1ZSAqKipcbiIpOworICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCh0MikgICAgICAgICAgICAgICAgICAvLyBnZXQgcmV0dXJuUEM8dDI+OwogICAgIAogICAg
ICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgotICAg
IHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjZnIuUmV0dXJuUEMgPSA8dDI+OwogICAgIGlm
IEVYRUNVVElPTl9UUkFDSU5HCiAgICAgICAgIGNhbGxTbG93UGF0aCh0cmFjZVNsb3dQYXRoKQog
ICAgIGVuZAotICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGNvZGVCbG9jazx0MT47CiAg
ICAgaWYgSklUX0VOQUJMRUQKICAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4
ZWN1dGVDb3VudGVyICsgRXhlY3V0aW9uQ291bnRlcjo6bV9jb3VudGVyW3QxXSwgLmNvbnRpbnVl
CiAgICAgICAgIGNDYWxsMihvc3JTbG93UGF0aCwgY2ZyLCBQQykKKworICAgICAgICBtbGFtRG8g
Ly8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICIgKioqIHByb2xvZ3VlICh1cGRh
dGUgZnJhbWUpIik7CisgICAgICAgICMgVXBkYXRlIHRoZSBjdXJyZW50RnJhbWVQb2ludGVyOgog
ICAgICAgICBtb3ZlIHQxLCBjZnIKKworICAgICAgICAjIHQwIG11c3QgZWl0aGVyIGJlIDAgb3Ig
cG9pbnRzIHRvIGV4ZWN1dGFibGUgY29kZSBlLmcuIEpJVHRlZCBjb2RlLgorICAgICAgICAjIElm
IGl0IGlzIDAsIHRoZW4gd2UgZG9uJ3QgaGF2ZSBhIG5hdGl2ZSBjb2RlIHRhcmdldCB0byBleGVj
dXRlLgorICAgICAgICAjIEdvIHJlY292ZXIgb3VyIHN0YXRlIGFuZCBzdGFydCBpbnRlcnByZXRp
bmcgdGhpcyBmdW5jdGlvbi4KICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKworICAgICAgICAj
IElmIGl0IGlzIG5vdCAwLCB0aGVuLCB3ZSBoYXZlIGEgbmF0aXZlIGZ1bmN0aW9uIHRvIGNhbGwg
KEpJVHRlZCBvcgorICAgICAgICAjIG90aGVyd2lzZSkuIERvIGEgdGFpbGNhbGwgdG8gdGhlIHRh
cmdldCBjb2RlLgogICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgogICAgICAgICByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKICAgICAgICAgam1wIHQwCisKKyAgICAg
ICAgIyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgb3NyIGxvZ2ljIGhhcyBkZXRlcm1pbmVkIHRo
YXQgdGhlcmUgaXNuJ3QgYW55CisgICAgICAgICMgSklUdGVkIGNvZGUgdG8gaW52b2tlIGF0IHRo
aXMgdGltZS4gIFJlZmV0Y2ggdGhlIGN1cnJlbnQgY29kZWJsb2NrIChhcworICAgICAgICAjIGl0
IG1heSBoYXZlIGNoYW5nZWQpLCBhbmQgZmFsbCB0aHJ1IHRvIC5jb250aW51ZSB0byBnbyBpbnRl
cnByZXQgdGhlCisgICAgICAgICMgZnVuY3Rpb24uCiAgICAgLnJlY292ZXI6CiAgICAgICAgIGNv
ZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CiAgICAgZW5kCiAgICAgY29kZUJsb2Nr
U2V0dGVyKHQxKQogICAgIAotICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICAjIFNldCB1cCB0aGUg
UEMuICBUaGUgY2FsbGVyIHdpbGwgZGlzcGF0Y2gvanVtcCB0byB0aGlzIGJ5dGVjb2RlIFBDIGFk
ZHIuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNbdDFdLCBQQgogICAgICAgICBtb3ZlIDAsIFBDCkBAIC0yODAsNiArMzI1LDcgQEAgbWFj
cm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnUwogICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lz
dGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCiAgICAgbHNoaWZ0aSAzLCB0MAogICAgIGFk
ZHAgdDAsIGNmciwgdDAKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShjYWxs
RnJhbWUsICIgKioqIHN0YWNrIGNoZWNrIik7CiAgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVn
aXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSwog
CiAgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgc2xvd19w
YXRoLgpAQCAtMjg5LDcgKzMzNSw3IEBAIGVuZAogCiBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmpl
Y3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNj
cmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCiAgICAgaWYgQUxXQVlTX0FMTE9DQVRFX1NMT1cK
LSAgICAgICAgam1wIHNsb3dDYXNlCisgICAgICAgIGptcCBzbG93Q2FzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGdvdG8gLnNsb3dDYXNlOwogICAgIGVsc2UK
ICAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9CiAgICAgICAgICAgICBKU0dsb2Jh
bERhdGE6OmhlYXAgKwpAQCAtMzAzLDMwICszNDksMzcgQEAgbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZAogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkZyZWVMaXN0Ojpo
ZWFkCiAKICAgICAgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25l
IGxvYWQgZnJvbSB0aGUgc3RhY2suCi0gICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3Jh
dGNoMQotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNj
cmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMSAgICAgICAgICAg
ICAgICAgICAgICAvLyAgIGNvZGVCbG9jazxhND4gPSBjZnIuQ29kZUJsb2NrOworICAgICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxICAgLy8gICBn
bG9iYWxEYXRhPGE0PiA9IGNvZGVCbG9jazxhND4uZ2xvYmFsRGF0YTsKICAgICAgICAgCi0gICAg
ICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgIAotICAgICAgICBsb2Fk
cCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwg
cmVzdWx0Ci0gICAgICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAgICAgICAvLyBHZXQgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCisgICAgICAgIGxvYWRwIG9mZnNldE9mTXlT
aXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQgLy8gICBy
ZXN1bHQ8YTM+ID0gZ2xvYmFsRGF0YTxhND4uTXlTaXplQ2xhc3MuRmlyc3RGcmVlQ2VsbDsKKyAg
ICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICAgaWYgKCFyZXN1bHQ8YTM+IGkuZS4gbm8gZnJlZSBjZWxsKSBnb3RvIC5zbG93Q2FzZTsK
ICAgICAgICAgCi0gICAgICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0
LgotICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKLSAgICAgICAgc3RvcmVwIHNjcmF0
Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gx
XQorICAgICAgICAvLyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAg
ICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgIG5leHQ8YTU+ID0gcmVzdWx0PGEzPi5wdHI7CisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwg
b2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0gLy8g
ICBnbG9iYWxEYXRhPGE0Pi5NeVNpemVDbGFzcy5GaXJzdEZyZWVDZWxsID0gbmV4dDxhNT47CiAg
ICAgCi0gICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAgICAgICBsb2FkcCBjbGFz
c0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgotICAgICAgICBzdG9yZXAgc2NyYXRjaDIs
IFtyZXN1bHRdCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cmVzdWx0XQotICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVty
ZXN1bHRdCisgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICAgICAgbG9hZHAg
Y2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIgICAgICAgICAgIC8vICAgY2xhc3NJ
bmZvPGE1PiA9IGdsb2JhbERhdGE8YTQ+LmNsYXNzSW5mb09mZnNldDsKKyAgICAgICAgc3RvcmVw
IHNjcmF0Y2gyLCBbcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgcmVzdWx0
PGEzPi5wdHIgPSBjbGFzc0luZm88YTU+OworICAgICAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0gICAgICAgLy8gICByZXN1bHQ8YTM+LnN0cnVjdHVyZSA9
IHN0cnVjdHVyZTxhMj47CisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9vdXRPZkxpbmVT
dG9yYWdlW3Jlc3VsdF0gICAgICAvLyAgIHJlc3VsdDxhMz4ub3V0T2ZMaW5lU3RvcmFnZSA9IDA7
CiAgICAgZW5kCiBlbmQKIAogbWFjcm8gZG9SZXR1cm4oKQotICAgIGxvYWRwIFJldHVyblBDW2Nm
cl0sIHQyCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgbWxhbURvICAvLyBp
ZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gbWxhbSA6OiBQUklOVCBkb1JldHVybigpIHwgcmV0
dXJuUEM8dDI+ID0gY2ZyLlJldHVyblBDO1xuXG4iKTsKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0
b3I6OmR1bXBGcmFtZShjYWxsRnJhbWUsICJtbGFtIEYuQS5ELjEiKTsKKyAgICBsb2FkcCBSZXR1
cm5QQ1tjZnJdLCB0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVyblBD
PHQyPiA9IGNmci5SZXR1cm5QQzsKKyAgICBtbGFtRG8gLy8gVk1JbnNwZWN0b3I6OmR1bXBGcmFt
ZShjYWxsRnJhbWUsICJtbGFtIEYuQS5ELjIiKTsKKyAgICBtbGFtRG8gLy8gcjQudnAgPSBmcC52
cDsgCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjZnIgPSBjZnIuQ2FsbGVyRnJhbWU7CisgICAgbWxhbURvIC8vIFZNSW5zcGVj
dG9yOjpkdW1wRnJhbWUocjQuZXhlY1N0YXRlLCAibWxhbSBGLkEuRC4zIik7CiAgICAgcmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCi0gICAgcmV0CisgICAgbWxhbURvIC8vIFZN
SW5zcGVjdG9yOjpkdW1wRnJhbWUocjQuZXhlY1N0YXRlLCAibWxhbSBGLkEuRC40Iik7CisgICAg
bWxhbURvIC8vIHByaW50ZigibWxhbSBMTElOVCBkb1JldHVyblxuIik7CisgICAgcmV0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyByZXR1
cm47CiBlbmQKIAogCkBAIC0zMzYsMTYgKzM4OSwyMCBAQCBfbGxpbnRfYmVnaW46CiAKIAogX2xs
aW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJp
bnRmKCJcbiAqKioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9wcm9ncmFtX3Byb2xv
Z3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RG
dW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiAKIAogX2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAg
bWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAqKioqKioqKioqKioqKioqKioq
KioqKiBtbGFtIF9sbGludF9ldmFsX3Byb2xvZ3VlXG5cbiIpOwogICAgIHByb2xvZ3VlKG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiAKIAog
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIG1sYW1EbyAvLyBwcmludGYo
IlxuXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG4g
ICAqKiogbWxhbSA6OiBJbiBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSAqKipcbiIp
OworICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioq
KioqKioqKioqKiogbWxhbSBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWVcblxuIik7
CiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQogLmZ1bmN0aW9uRm9yQ2FsbEJlZ2lu
OgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKQEAgLTM1Myw2ICs0MTAsNyBAQCBfbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CiAgICAgCiAKIF9sbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIG1sYW1EbyAvLyBpZiAobWxhbV9QUklOVEYpIHBy
aW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZVxuXG4iKTsKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCiAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKICAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDEpCkBAIC0zNjAsMTEgKzQxOCwxNCBAQCBfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKICAgICAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrOgorICAgIG1sYW1EbyAvLyBwcmludGYoIlxuXG4gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG4gICAqKiogbWxhbSA6OiBJbiBs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayAqKipcbiIpOworICAgIG1sYW1EbyAv
LyBpZiAobWxhbV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxh
bSBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tcblxuIik7CiAgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRf
dHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKICAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0
aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIAogCiBf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBtbGFtRG8gLy8g
aWYgKG1sYW1fUFJJTlRGKSBwcmludGYoIlxuICoqKioqKioqKioqKioqKioqKioqKioqIG1sYW0g
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tcblxuIik7CiAgICAgcHJv
bG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlv
bkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9zbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCiAKQEAgLTQ4Nyw2ICs1NDgsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV93aXRoX3RoaXM6CiAKIAogbWFjcm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBtbGFtRG8gLy8gcHJpbnRmKCIgKioqIHdp
dGhJbmxpbmVTdG9yYWdlXG4iKTsKICAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVjdCBpcyB0
aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCiAgICAgIyBwcm9wZXJ0eSBzdG9yYWdl
IHJlZ2lzdGVyIGlzIHVudXNlZC4KICAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9wZXJ0eVN0
b3JhZ2UpCkBAIC01MzUsNiArNTk3LDcgQEAgX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKICAgICBu
b3AKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8v
IGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG5cbiIpOwogICAgIGp1bXBUcnVlT3JGYWxzZSgK
ICAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAog
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2p0cnVlKQpAQCAtNTQ0LDYgKzYwNyw3IEBAIF9sbGlu
dF9vcF9sb29wX2lmX2ZhbHNlOgogICAgIG5vcAogX2xsaW50X29wX2pmYWxzZToKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gXG5c
biIpOwogICAgIGp1bXBUcnVlT3JGYWxzZSgKICAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCiAgICAgICAgIF9sbGludF9zbG93X3BhdGhfamZhbHNl
KQpAQCAtNTU5LDYgKzYyMywxMyBAQCBfbGxpbnRfb3Bfamxlc3M6CiAgICAgICAgIF9sbGludF9z
bG93X3BhdGhfamxlc3MpCiAKIAorLy8gYnl0ZWNvZGU6IGpubGVzcyBzcmMxKHIpIHNyYzIocikg
dGFyZ2V0KG9mZnNldCkKKy8vCisvLyAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMg
bGVzcyB0aGFuIHJlZ2lzdGVyIHNyYzIsIGFzCisvLyAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJzwn
IG9wZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0byBvZmZzZXQKKy8vICAgdGFyZ2V0IGZyb20gdGhl
IGN1cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlmIHRoZSAKKy8vICAgcmVzdWx0IG9m
IHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLgorCiBfbGxpbnRfb3Bfam5sZXNzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBjb21wYXJlKApAQCAtNjM5LDYgKzcxMCwxNSBAQCBfbGxpbnRfb3Bf
bmV3X2Z1bmNfZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorLy8gYnl0ZWNvZGU6IGNhbGwgZnVu
YyhyKSBhcmdDb3VudChuKSByZWdpc3Rlck9mZnNldChuKQorLy8KKy8vICAgUGVyZm9ybSBhIGZ1
bmN0aW9uIGNhbGwuCisvLyAgICAgICAgICAgCisvLyAgIHJlZ2lzdGVyT2Zmc2V0IGlzIHRoZSBk
aXN0YW5jZSB0aGUgY2FsbEZyYW1lIHBvaW50ZXIgc2hvdWxkIG1vdmUKKy8vICAgYmVmb3JlIHRo
ZSBWTSBpbml0aWFsaXplcyB0aGUgbmV3IGNhbGwgZnJhbWUncyBoZWFkZXIuCisvLyAgICAgICAg
ICAgCisvLyAgIGRzdCBpcyB3aGVyZSBvcF9yZXQgc2hvdWxkIHN0b3JlIGl0cyByZXN1bHQuCisK
IF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBkb0NhbGwoX2xsaW50
X3Nsb3dfcGF0aF9jYWxsKQpAQCAtNzY0LDEwICs4NDQsMTIgQEAgX2xsaW50X29wX2RlYnVnOgog
CiAKIF9sbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lOgorICAgIG1sYW1EbyAvLyBpZiAobWxh
bV9QUklOVEYpIHByaW50ZigiXG4gKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBfbGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZVxuXG4iKTsKICAgICBuYXRpdmVDYWxsVHJhbXBvbGluZShO
YXRpdmVFeGVjdXRhYmxlOjptX2Z1bmN0aW9uKQogCiAKIF9sbGludF9uYXRpdmVfY29uc3RydWN0
X3RyYW1wb2xpbmU6CisgICAgbWxhbURvIC8vIGlmIChtbGFtX1BSSU5URikgcHJpbnRmKCJcbiAq
KioqKioqKioqKioqKioqKioqKioqKiBtbGFtIF9sbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1w
b2xpbmVcblxuIik7CiAgICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZlRXhlY3V0YWJsZTo6
bV9jb25zdHJ1Y3RvcikKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDggKzMxLDUwNCBAQAogI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAorLy8gbWxhbSBCRUdJTiBkZWJ1Zwor
I2RlZmluZSBtbGFtX1BSSU5URjAgbWxhbV9QUklOVEYKKyNkZWZpbmUgbWxhbV9QUklOVEYwX0RG
IDAgLy8gbWxhbV9QUklOVEYKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgbWxhbVRyYXAoKSB7
CisgICAgcHJpbnRmKCJtbGFtVHJhcFxuIik7Cit9CisKK3ZvaWQgbWxhbUJyZWFrKGNvbnN0IGNo
YXIqIGNvbW1lbnQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CisgICAgaWYgKGxpbmUg
PCAwKSB7CisgICAgICAgIG1sYW1UcmFwKCk7CisgICAgfQorICAgIGlmIChtbGFtX1BSSU5URjAp
IHByaW50ZigiQXQgbWxhbSBicmVha3BvaW50OiAlcyBAICVzOiVkXG4iLCBjb21tZW50LCBmaWxl
LCBsaW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisvLyBtbGFtIEVORCBkZWJ1ZworCisj
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxMaW50U2xvd1BhdGhzLmgiCisjaW5jbHVkZSAi
Vk1JbnNwZWN0b3IuaCIgLy8gbWxhbQorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M6OkxMSW50OworCisvLyBUaGUgc2hhcGUgb2Ygb3Bjb2RlcworLy8g
PT09PT09PT09PT09PT09PT09PT0KKy8vIEluIHRoZSBMTEludCBzeXN0ZW0sIG9wY29kZXMgbWFu
aWZlc3QgaW4gdmFyaW91cyBmb3JtcyB0aGF0IHdvcmsgdG9nZXRoZXIuCisvLyBUaGVzZSBmb3Jt
cyBhcmU6CisvLyAgIDEuIFRoZSBlbnVtZXJhdGlvbgorLy8gICAgICA9PT09PT09PT09PT09PT0K
Ky8vICAgICAgQnl0ZWNvZGUgb3Bjb2RlcyBhcmUgZW51bWVyYXRlZCBhcyBPcGNvZGVJRCdzIGlu
IGJ5dGVjb2RlL09wY29kZS5oCisvLworLy8gICAgICBUaGUgTExpbnQgdXNlcyBzb21lIGhlbHBl
ciBnbHVlIGNvZGUuICBXaXRoIHRoZSBDIGxvb3AgaW50ZXJwcmV0ZXIsCisvLyAgICAgIHdlIG5l
ZWQgdG8gcmVwcmVzZW50IHRoZXNlIGhlbHBlciBnbHVlIGNvZGUgYXMgcHNldWRvIG9wY29kZSBo
YW5kbGVycworLy8gICAgICBhcyB3ZWxsIHRvIGFsbG93IHVzIHRvIGVtcGxveSBhIHVuaWZpZWQg
ZGlzcGF0Y2ggbWVjaGFuaXNtIHRvIGludm9rZQorLy8gICAgICB0aGVzZSBoZWxwZXJzIGFzIHdl
IGRvIHdpdGggb3Bjb2RlIGhhbmRsZXJzLiAgSGVuY2UsIHdpdGggdGhlIEMgbG9vcCwKKy8vICAg
ICAgd2UgYWNjZXNzIG5lZWQgdG8gcHJlc2VudCB0aGUgZ2x1ZSBjb2RlIGFzIHBzZXVkbyBvcGNv
ZGVzIGFzIHdlbGwuCisvLyAgICAgIFRoZXNlIGFyZSBlbnVtZXJhdGVkIGFzIExMaW50T3Bjb2Rl
SUQncyBpbiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmguCisvLworLy8gICAgICBOT1RFOiBU
aGUgT3Bjb2RlSURzIGFyZSB1c2VkIGluIENvZGVCbG9ja3MgZ2VuZXJhdGVkIGJ5IHRoZQorLy8g
ICAgICBCeXRlY29kZUNvbXBpbGVyLCBidXQgdGhlIExMSW50T3Bjb2RlSURzIG5ldmVyIHdpbGwu
ICBMTEludE9wY29kZUlEcworLy8gICAgICBhcmUgb25seSB1c2VkIGluIHRoZSBpbnRlcm5hbCBw
bHVtYmluZyBvZiB0aGUgaW50ZXJwcmV0ZXIuCisvLworLy8gICAyLiBUaGUgaGFuZGxlcgorLy8g
ICAgICA9PT09PT09PT09PQorLy8gICAgICBVbHRpbWF0ZWx5LCB0aGUgaW50ZXJwcmV0ZXIgbmVl
ZHMgdG8gZGlzcGF0Y2ggdG8gc29tZSBoYW5kbGVyIGNvZGUgdG8KKy8vICAgICAgZXhlY3V0ZSB0
aGUgYWN0aW9ucyBvZiB0aGUgb3Bjb2RlIChvciBwc2V1ZG8gb3Bjb2RlKS4gIFRoZSBoYW5kbGVy
cworLy8gICAgICBhcmUgcHJlc2VudGVkIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOgor
Ly8KKy8vICAgICAgYS4gZ2xvYmFsIGxhYmVscyB3aGVuIHdlIGNhbiB1c2UgY29tcHV0ZWQgZ290
b3MuCisvLyAgICAgIGIuIGNhc2Ugc3RhdGVtZW50cyBpbiBhIEMgc3dpdGNoIHdoZW4gd2UgY2Fu
bm90IHVzZSBjb21wdXRlZCBnb3Rvcy4KKy8vCisvLyAgICAgIFdoZW4gdXNpbmcgdGhlIEFTTSBs
b29wLCB3ZSB3aWxsIHVzZSBjb21wdXRlZCBnb3Rvcy4gIFRoZXJlIGlzIG5vCisvLyAgICAgIHJl
YXNvbiB0byB1c2UgYSBDIHN3aXRjaCBzdGF0ZW1lbnQgaW4gdGhhdCBjYXNlLgorLy8KKy8vICAg
ICAgV2hlbiB1c2luZyB0aGUgQyBsb29wLCB3ZSB3aWxsIHVzZSBvbmUgb2YgdGhlIGFib3ZlIDIg
Zm9ybXMuICBJbgorLy8gICAgICBhZGRpdGlvbiwgTExJbnQgaGVscGVyIGdsdWUgY29kZSBhcmUg
YWxzbyByZXByZXNlbnRlZCBhcyBieXRlY29kZQorLy8gICAgICBoYW5kbGVycyAoY29ycmVzcG9u
ZGluZyB0byB0aGVpciByZXNwZWN0aXZlIExMSW50T3Bjb2RlSURzKSwgYW5kCisvLyAgICAgIGhl
bmNlLCB3aWxsIGJlIHByZXNlbnRlZCBpbiBvbmUgb2YgdGhlIGFib3ZlIDIgZm9ybXMgYXMgd2Vs
bC4KKy8vCisvLyBIb3cgYXJlIHRoZSBvcGNvZGUgZm9ybXMgbmFtZWQ/CisvLyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKy8vIEhlcmUgaXMgYSB0YWJsZSB0byBzaG93IGV4YW1wbGVz
IG9mIGhvdyBlYWNoIG9mIHRoZSBtYW5pZmVzdGF0aW9uIG9mIHRoZQorLy8gb3Bjb2RlcyBhcmUg
bmFtZWQ6CisvLworLy8gICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgIE9wY29kZSAgICAg
ICAgICAgIEhlbHBlcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PSAg
ICAgICAgICAgID09PT09PQorLy8gICBMTGludCBsYWJlbHM6ICAgICAgICAgICAgICAgIGxsaW50
X29wX2VudGVyICAgIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUKKy8vICAgT3Bjb2RlIGVudW1lcmF0
aW9uOiAgICAgICAgICBvcF9lbnRlciAgICAgICAgICBvcF9sbGludF9wcm9ncmFtIChmb3IgQyBs
b29wIG9ubHkpCisvLworLy8gICBVc2luZyBhIHN3aXRjaCBzdGF0ZW1lbnQgZGlzcGF0Y2g6Cisv
LyAgICAgT3Bjb2RlIGRpc3BhdGNoIGhhbmRsZXJzOiAgY2FzZSBvcF9lbnRlcjogICAgY2FzZSBv
cF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOiAoZm9yIEMgbG9vcCBvbmx5KQorLy8gICBVc2luZyBj
b21wdXRlZCBnb3RvJ3M6CisvLyAgICAgT3Bjb2RlIGRpc3BhdGNoIGhhbmRsZXJzOiAgaGFuZGxl
X29wX2VudGVyOiAgaGFuZGxlX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6IChmb3IgQyBsb29wIG9u
bHkpCisvLworLy8gICBMTEludCBnbHVlIGhlbHBlciBlbnRyeXBvaW50czoKKy8vICAgICBBU00g
bG9vcCBnbHVlIGVudHJ5OiAgICAgICBOL0EgICAgICAgICAgICAgICB2b2lkIGxsaW50X3Byb2dy
YW1fcHJvbG9ndWUoKTsKKy8vICAgICBDIGxvb3AgZ2x1ZSBlbnRyeTogICAgICAgICBOL0EgICAg
ICAgICAgICAgICBPcGNvZGUgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZVsxXTsKKy8vCisKKy8vPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorLy8gRGVmaW5lIHRoZSBvcGNvZGUgZGlzcGF0Y2ggbWVjaGFuaXNt
IHdoZW4gdXNpbmcgdGhlIEMgbG9vcDoKKy8vCisKKy8vIFRoZXNlIGFyZSBmb3IgYnVpbGRpbmcg
YSBDIExvb3AgaW50ZXJwcmV0ZXI6CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JFR0lOCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0VORAorCisKKyNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9w
Y29kZSkgREVGSU5FX09QQ09ERShvcGNvZGUpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BD
T0RFUykKKyAgICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBsYWJlbDoK
KyNlbHNlCisgICAgI2RlZmluZSBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxhYmVsKSAgY2FzZSBs
YWJlbDogbGFiZWw6CisjZW5kaWYKKworI2RlZmluZSBPRkZMSU5FX0FTTV9MT0NBTF9MQUJFTChs
YWJlbCkgICBsYWJlbDoKKworCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBMTEludCB7CisK
KyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorc3RhdGljIGRvdWJsZSBJbnRzMkRvdWJsZSh1aW50MzJf
dCBsbywgdWludDMyX3QgaGkpCit7CisgICAgdW5pb24geworICAgICAgICBkb3VibGUgZHZhbDsK
KyAgICAgICAgdWludDY0X3QgaXZhbDY0OworICAgIH0gdTsKKyAgICB1Lml2YWw2NCA9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oaGkpIDw8IDMyKSB8IGxvOworICAgIHJldHVybiB1LmR2YWw7Cit9
CisjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKKworfSAvLyBuYW1lc3BhY2UgTExpbnQKKwor
Ly8gbWxhbSBCRUdJTiBERUJVRyB1dGlsaXRpZXMuICBEbyB3ZSB3YW50IHRvIGtlZXAgdGhlc2Ug
YXJvdW5kIGluIHNvbWUgZm9ybT8KK2V4dGVybiBjb25zdCBjaGFyKiBnZXRHbHVlTGFiZWxOYW1l
KExMSW50T3Bjb2RlSUQgb3Bjb2RlKTsKKworLy8gZ2V0R2x1ZUxhYmVsTmFtZSgpIGlzIFVOVVNF
RC4gIFdlIG9ubHkga2VwdCBpdCBtb21lbnRhcmlseSBzbyB0aGF0IEkgY2FuIGNhbGwgaXQgZnJv
bSBnZGIuCitjb25zdCBjaGFyKiBnZXRHbHVlTGFiZWxOYW1lKExMSW50T3Bjb2RlSUQgb3Bjb2Rl
KQoreworI2RlZmluZSBDSEVDS19MTElOVF9OQVRJVkVfSEVMUEVSKF9fbmFtZSkgICAgIFwKKyAg
ICBpZiAob3Bjb2RlID09IF9fbmFtZSkgcmV0dXJuICNfX25hbWU7CisgICAgRk9SX0VBQ0hfTExJ
TlRfTkFUSVZFX0hFTFBFUihDSEVDS19MTElOVF9OQVRJVkVfSEVMUEVSKQorI3VuZGVmIENIRUNL
X0xMSU5UX05BVElWRV9IRUxQRVIKKworICAgIC8vIG1sYW0gQkVHSU4gREVCVUcgb25seQorI2Rl
ZmluZSBPUENPREVfSURfRU5VTShfX29wY29kZSwgbGVuZ3RoKSBcCisgICAgaWYgKG9wY29kZSA9
PSBfX29wY29kZSkgcmV0dXJuICNfX29wY29kZTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0lEX0VOVU0pCisjdW5kZWYgT1BDT0RFX0lEX0VOVU0KKyAgICAvLyBtbGFtIEVORCBERUJV
RyBvbmx5CisKKyNpZiAwCisgICAgOworI2VuZGlmCisgICAgcmV0dXJuICI8bm90IGEgZ2x1ZSBm
dW5jdGlvbj4iOworCit9CisvLyBtbGFtIEVORCBERUJVRworCitleHRlcm4gIkMiIE5PX1JFVFVS
Tl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludEJhZE5hdGl2ZVJldHVybigpOwordm9pZCBsbGludEJh
ZE5hdGl2ZVJldHVybigpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBvcHVs
YXRlIHRoZSByZXR1cm4gUEMgb2YgdGhlIHNpbXVsYXRlZCBuYXRpdmUKKyAgICAvLyBjYWxsIGZy
YW1lLiAgV2Ugc2hvdWxkIG5ldmVyIHJldHVybiB0byBoZXJlIHdoZW4gdXNpbmcgdGhlIEMgTG9v
cC4KKyAgICAvLyBIZW5jZSwgd2UnbGwgbWFrZSBzb21lIG5vaXNlIHdpdGggYSBjcmFzaCBpZiBz
b21lb25lIG1ha2VzIHRoYXQgbWlzdGFrZS4KKyAgICBDUkFTSCgpOworfQorCit2b2lkIEludGVy
cHJldGVyOjppbml0aWFsaXplTExJbnRDTG9vcCgpCit7CisgICAgZXhlY3V0ZUxMSW50Q0xvb3Ao
SW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCwgbGxpbnRfdW51c2VkKTsKK30KKworSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUxMSW50Q0xvb3AoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3Rl
ckZpbGUqIHJlZ0ZpbGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTExJbnRPcGNvZGVJRCBib290c3RyYXBPcGNvZGVJZCkgewor
ICAgICNkZWZpbmUgQ0FTVCByZWludGVycHJldF9jYXN0CisgICAgI2RlZmluZSBTSUdOX0JJVDMy
KHgpICh4ICYgMHg4MDAwMDAwMCkKKworICAgIC8vIE9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9m
IG91ciBhZGRyZXNzIHRhYmxlcy4gV2UgaGF2ZSB0byBwdXQgdGhpcyBjb2RlCisgICAgLy8gaGVy
ZSBiZWNhdXNlIG91ciBsYWJlbHMgYXJlIG9ubHkgaW4gc2NvcGUgaW5zaWRlIHRoaXMgZnVuY3Rp
b24uCisgICAgaWYgKFVOTElLRUxZKGZsYWcgPT0gSW5pdGlhbGl6ZUFuZFJldHVybikpIHsKKyAg
ICAgICAgQVNTRVJUKCFMTEludDo6RGF0YTo6aXNJbml0aWFsaXplZCgpKTsKKyAgICAgICAgewor
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgICAgICAgICBPcGNvZGUqIG9w
Y29kZU1hcCA9IExMSW50OjpEYXRhOjpvcGNvZGVNYXAoKTsKKyAgICAgICAgICAgICNkZWZpbmUg
T1BDT0RFX0VOVFJZKF9fb3Bjb2RlLCBsZW5ndGgpIFwKKyAgICAgICAgICAgICAgICBvcGNvZGVN
YXBbX19vcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmJl9fb3Bjb2RlKTsKKyAgICAgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpCisgICAgICAgICAgICAjdW5kZWYg
T1BDT0RFX0VOVFJZCisKKyAgICAgICAgICAgICNkZWZpbmUgTExJTlRfT1BDT0RFX0VOVFJZKF9f
b3Bjb2RlKSBcCisgICAgICAgICAgICAgICAgb3Bjb2RlTWFwW19fb3Bjb2RlXSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJiZfX29wY29kZSk7CisKKyAgICAgICAgICAgIEZPUl9FQUNIX0xMSU5UX05B
VElWRV9IRUxQRVIoTExJTlRfT1BDT0RFX0VOVFJZKQorICAgICAgICAgICAgI3VuZGVmIExMSU5U
X09QQ09ERV9FTlRSWQorI2VuZGlmCisKKyAgICAgICAgICAgIC8vIE5vdGU6IHdlIGNhbiBvbmx5
IHNldCB0aGUgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zIGFmdGVyIHdlIGhhdmUKKyAgICAgICAgICAg
IC8vIGluaXRpYWxpemVkIHRoZSBvcGNvZGVNYXAgYWJvdmUuICBUaGlzIGlzIGJlY2F1c2UgZ2V0
Q29kZVB0cigpCisgICAgICAgICAgICAvLyBjYW4gZGVwZW5kIG9uIHRoZSBvcGNvZGVNYXAuCisg
ICAgICAgICAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gTExJbnQ6OkRh
dGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgICAgICAgICAgZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9CisgICAgICAgICAgICAgICAgICAgIExMSW50OjpE
YXRhOjpnZXRDb2RlUHRyKGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwor
CisgICAgICAgICAgICBMTEludDo6RGF0YTo6c2V0SXNJbml0aWFsaXplZCgpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfQorCisgICAgQVNTRVJUKGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLnRvcENhbGxGcmFtZSA9PSBjYWxsRnJhbWUpOworCisgICAgLy8gRGVm
aW5lIHRoZSBwc2V1ZG8gcmVnaXN0ZXJzIHVzZWQgYnkgdGhlIExMSU5UIEMgTG9vcCBiYWNrZW5k
OgorICAgIHVuaW9uIENMb29wUmVnaXN0ZXIgeworICAgICAgICBpbnRwdHJfdCBpOworICAgICAg
ICB1aW50cHRyX3QgdTsKKyAgICAgICAgaW50MzJfdCBpMzI7CisgICAgICAgIHVpbnQzMl90IHUz
MjsKKyAgICAgICAgaW50OF90IGk4OworICAgICAgICB1aW50OF90IHU4OworICAgICAgICBpbnQ4
X3QqIGk4cDsKKyAgICAgICAgdm9pZCogdnA7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY1N0YXRl
OworICAgICAgICB2b2lkKiBpbnN0cnVjdGlvbjsKKyAgICAgICAgTmF0aXZlRnVuY3Rpb24gbmF0
aXZlRnVuYzsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpbnQ2NF90IGk2NDsKKyAgICAg
ICAgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFsdWU7CisgICAgICAgIGRvdWJsZSBjYXN0VG9E
b3VibGU7CisjZW5kaWYKKyAgICB9OworICAgIHVuaW9uIENMb29wRG91YmxlUmVnaXN0ZXIgewor
ICAgICAgICBkb3VibGUgZDsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB2b2lkKiBjYXN0
VG9Wb2lkUHRyOworI2VuZGlmCisgICAgfTsKKworICAgIENMb29wUmVnaXN0ZXIgcjAsIHIxLCBy
MiwgcjQ7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBDTG9vcFJlZ2lzdGVyIHJCYXNlUEMsIHRh
Z1R5cGVOdW1iZXIsIHRhZ01hc2s7CisjZW5kaWYKKyAgICBDTG9vcFJlZ2lzdGVyIHJSZXRWUEM7
CisgICAgQ0xvb3BEb3VibGVSZWdpc3RlciBkMCwgZDE7CisKKyAgICAvLyBJbnN0YW50aWF0ZSB0
aGUgcHNldWRvIEpJVCBzdGFjayBmcmFtZSB1c2VkIGJ5IHRoZSBMTElOVCBDIExvb3AgYmFja2Vu
ZDoKKyAgICBKSVRTdGFja0ZyYW1lIGppdFN0YWNrRnJhbWU7CisKKyAgICBKSVRTdGFja0ZyYW1l
KiBjb25zdCBzcCA9ICZqaXRTdGFja0ZyYW1lOworICAgIHNwLT5nbG9iYWxEYXRhID0gJmNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpOworCisgICAgLy8gQWxpYXMgZm9yIGdsb2JhbERhdGEgcHRyIGlu
IHRoZSBKSVRTdGFja0ZyYW1lOgorICAgIEpTR2xvYmFsRGF0YSogJmdsb2JhbERhdGEgPSBzcC0+
Z2xvYmFsRGF0YTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICBJbnN0cnVjdGlvbiogdlBDOworCisgICAgLy8gclBDIGlzIGFuIGFsaWFz
IGZvciB2UEMuICBTZXQgdXAgdGhlIGFsaWFzOgorICAgIENMb29wUmVnaXN0ZXImIHJQQyA9ICpD
QVNUPENMb29wUmVnaXN0ZXIqPigmdlBDKTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
dlBDID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworI2Vsc2UgLy8gVVNFKEpT
VkFMVUU2NCkKKyAgICB2UEMgPSAwOworICAgIHJCYXNlUEMudnAgPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CisKKyAgICAvLyBGb3IgdGhlIEFTTSBsbGludCwgSklUU3R1YnMg
dGFrZXMgY2FyZSBvZiB0aGlzIGluaXRpYWxpemF0aW9uLiAgV2UgZG8KKyAgICAvLyBpdCBoZXJl
IGZvciB0aGUgQyBsb29wOgorICAgIHRhZ1R5cGVOdW1iZXIuaSA9IDB4RkZGRjAwMDAwMDAwMDAw
MDsKKyAgICB0YWdNYXNrLmkgPSAweEZGRkYwMDAwMDAwMDAwMDI7CisjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKKworICAgIC8vIHJGUCBpcyBhbiBhbGlhcyBmb3IgY2FsbEZyYW1lLiAgU2V0IHVw
IHRoaXMgYWxpYXM6CisgICAgQ0xvb3BSZWdpc3RlciYgZnAgPSAqQ0FTVDxDTG9vcFJlZ2lzdGVy
Kj4oJmNhbGxGcmFtZSk7CisKKyAgICAvLyBTaW11bGF0ZSBhIG5hdGl2ZSByZXR1cm4gUEMgd2hp
Y2ggc2hvdWxkIG5ldmVyIGJlIHVzZWQ6CisgICAgclJldFZQQy52cCA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50QmFkTmF0aXZlUmV0dXJuKTsKKworICAgIC8vIEludGVycHJldGVyIHZhcmlh
YmxlcyBmb3IgdmFsdWUgcGFzc2luZyBiZXR3ZWVuIG9wY29kZXMgYW5kL29yIGhlbHBlcnM6Cisg
ICAgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuYyA9IDA7CisgICAgSlNWYWx1ZSBmdW5jdGlvblJl
dHVyblZhbHVlOworICAgIExMSW50T3Bjb2RlIG9wY29kZTsKKworICAgIGJvb2wgbWxhbVByaW50
ID0gZmFsc2U7IC8vIEZvciBERUJVRyBvbmx5LiAgQ2xlYW4gdXAgcGxlYXNlLgorICAgIFVOVVNF
RF9QQVJBTShtbGFtUHJpbnQpOworCisgICAgVU5VU0VEX1BBUkFNKHJlZ0ZpbGUpOyAvLyBtbGFt
IEZJWE1FIFJFTU9WRSB0aGlzIGxhdGVyLgorCisgICAgaWYgKGJvb3RzdHJhcE9wY29kZUlkICE9
IGxsaW50X3VudXNlZCkgeworICAgICAgICBvcGNvZGUgPSBMTEludDo6RGF0YTo6Z2V0T3Bjb2Rl
KGJvb3RzdHJhcE9wY29kZUlkKTsKKyAgICB9CisKKyAgICAjZGVmaW5lIFVQREFURV9CWVRFQ09E
RV9PRkZTRVQoKQorCisgICAgI2lmIEVOQUJMRShPUENPREVfU1RBVFMpCisgICAgICAgICNkZWZp
bmUgUkVDT1JEX09QQ09ERV9TVEFUUyhfX29wY29kZSkgXAorICAgICAgICAgICAgT3Bjb2RlU3Rh
dHM6OnJlY29yZEluc3RydWN0aW9uKF9fb3Bjb2RlKQorICAgICNlbHNlCisgICAgICAgICNkZWZp
bmUgUkVDT1JEX09QQ09ERV9TVEFUUyhfX29wY29kZSkKKyAgICAjZW5kaWYKKworICAgICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAjZGVmaW5lIEZFVENIX09QQ09ERSgpIGJpdHdpc2Vf
Y2FzdDxMTEludE9wY29kZT4odlBDLT51Lm9wY29kZSkKKyAgICAjZWxzZSAvLyBVU0UoSlNWQUxV
RTY0KQorICAgICAgICAjZGVmaW5lIEZFVENIX09QQ09ERSgpICpiaXR3aXNlX2Nhc3Q8TExJbnRP
cGNvZGUqPihyQmFzZVBDLmk4cCArIHJQQy5pICogOCkKKyAgICAjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKKworICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFwKKyAgICAgICAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBvcGNvZGUgPSBGRVRDSF9PUENP
REUoKTsgXAorICAgICAgICAgICAgRElTUEFUQ0hfT1BDT0RFKCk7ICAgICAgIFwKKyAgICAgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyAgICAvLyBtbGFtIEJFR0lOIFRFU1QgY29kZSB1c2VkIGluIERF
RklORV9PUENPREUKKyAgICAjaWYgbWxhbV9QUklOVEYwCisgICAgI2RlZmluZSBtbGFtRHVtcE9w
Y29kZShfX29wY29kZSkgXAorICAgICAgICAgICAgLyogbWxhbSAqLyBwcmludGYoIiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOyAgIFwKKyAgICAgICAgICAgIC8qIG1sYW0gKi8g
cHJpbnRmKCIgPT09ICVzXG4iLCAjX19vcGNvZGUpOyAgIFwKKyAgICAgICAgICAgIC8qIG1sYW0g
Ki8gcHJpbnRmKCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAjZWxz
ZQorICAgICNkZWZpbmUgbWxhbUR1bXBPcGNvZGUoX19vcGNvZGUpCisgICAgI2VuZGlmCisgICAg
Ly8gbWxhbSBFTkQgVEVTVAorCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKwor
ICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTG9vcCBkaXNwYXRjaCBtZWNoYW5pc20gdXNp
bmcgY29tcHV0ZWQgZ290byBzdGF0ZW1lbnRzOgorCisgICAgI2RlZmluZSBESVNQQVRDSF9PUENP
REUoKSBnb3RvICpvcGNvZGUKKworICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShfX29wY29kZSkg
XAorICAgICAgICBfX29wY29kZTogXAorICAgICAgICAgICAgbWxhbUR1bXBPcGNvZGUoX19vcGNv
ZGUpIFwKKyAgICAgICAgICAgIFJFQ09SRF9PUENPREVfU1RBVFMoX19vcGNvZGUpOyBcCisgICAg
ICAgICAgICBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CisKKyAgICAvLyBEaXNwYXRjaCB0byB0
aGUgY3VycmVudCBQQydzIGJ5dGVjb2RlOgorICAgIC8vIG1sYW0gQkFEIE5FWFRfSU5TVFJVQ1RJ
T04oKTsKKyAgICBESVNQQVRDSF9PUENPREUoKTsKKworI2Vsc2UgLy8gIUVOQUJMRShDT01QVVRF
RF9HT1RPX09QQ09ERVMpCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBMb29wIGRpc3Bh
dGNoIG1lY2hhbmlzbSB1c2luZyBhIEMgc3dpdGNoIHN0YXRlbWVudDoKKworICAgICNkZWZpbmUg
RElTUEFUQ0hfT1BDT0RFKCkgZ290byBkaXNwYXRjaE9wY29kZQorCisgICAgI2RlZmluZSBERUZJ
TkVfT1BDT0RFKF9fb3Bjb2RlKSBcCisgICAgICAgIGNhc2UgX19vcGNvZGU6IFwKKyAgICAgICAg
ICAgIG1sYW1EdW1wT3Bjb2RlKF9fb3Bjb2RlKSBcCisgICAgICAgICAgICBSRUNPUkRfT1BDT0RF
X1NUQVRTKF9fb3Bjb2RlKTsgXAorICAgICAgICAgICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgp
OworCisgICAgLy8gRGlzcGF0Y2ggdG8gdGhlIGN1cnJlbnQgUEMncyBieXRlY29kZToKKyAgICBk
aXNwYXRjaE9wY29kZTo7CisgICAgc3dpdGNoIChvcGNvZGUpCisKKyNlbmRpZiAvLyAhRU5BQkxF
KENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8g
Qnl0ZWNvZGUgaGFuZGxlcnM6CisgICAgeworICAgICAgICAvLyBUaGlzIGlzIGEgZmlsZSBnZW5l
cmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZQorICAgICAgICAv
LyBieXRlY29kZSBoYW5kbGVycyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9t
CisgICAgICAgIC8vIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtLgorICAgICAgICAjaW5jbHVkZSAi
TExJbnRBc3NlbWJseS5oIgorCisKKyAgICAgICAgLy8gSW4gdGhlIEFTTSBsbGludCwgZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSgpIGlzIGEgcGllY2Ugb2YgZ2x1ZQorICAgICAgICAvLyBmdW5jdGlv
biBwcm92aWRlZCBieSB0aGUgSklUIChzZWUgZGZnL0RGR09wZXJhdGlvbnMuY3BwKS4KKyAgICAg
ICAgLy8gV2Ugc2ltdWxhdGUgaXQgaGVyZSB3aXRoIGEgcHNlZHVvLW9wY29kZSBoYW5kbGVyLgor
ICAgICAgICBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBBU00gcGFydCBwb3BzIHRoZSBmcmFtZToKKyAg
ICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKKworICAgICAg
ICAgICAgLy8gVGhlIHBhcnQgaW4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
KToKKyAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1
cm5WYWx1ZTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgcjEuaSA9IHJlc3Vs
dC50YWcoKTsKKyAgICAgICAgICAgIHIwLmkgPSByZXN1bHQucGF5bG9hZCgpOworI2Vsc2UKKyAg
ICAgICAgICAgIHIwLmVuY29kZWRKU1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIGdvdG8gZG9SZXR1cm5IZWxwZXI7CisgICAgICAgIH0KKworICAg
ICAgICBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGN0aU9wVGhyb3dOb3RDYXVnaHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5leGNlcHRpb247CisgICAgICAgIH0K
KworI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIHByaW50ZigiIG1sYW0gOjogSWxsZWdhbCBvcGNvZGUgJXBcbiIsICh2b2lkKilvcGNvZGUp
OworICAgICAgICBtbGFtQnJlYWsoIklsbGVnYWwgb3Bjb2RlIiwgX19GSUxFX18sIF9fTElORV9f
KTsKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyNlbmRpZgorCisgICAgfSAvLyBFTkQgYnl0ZWNv
ZGUgaGFuZGxlciBjYXNlcy4KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQnl0ZWNv
ZGUgaGVscGVyczoKKworICAgIGRvQ2FsbEhlbHBlcjogeyAgICAgICAgCisgICAgICAgIEFTU0VS
VCghIXJSZXRWUEMudnApOyAvLyBtbGFtIFRFU1QgcmV0dXJuUEMKKyAgICAgICAgRElTUEFUQ0hf
T1BDT0RFKCk7CisKKyAgICB9IC8vIEVORCBkb0NhbGxIZWxwZXIuCisKKyAgICBkb1JldHVybkhl
bHBlcjogeworICAgICAgICBpZiAobWxhbV9QUklOVEYwX0RGKSBWTUluc3BlY3Rvcjo6ZHVtcEZy
YW1lKGNhbGxGcmFtZSwgIiAgPDw8IFBPUFBFRCB0byByZXN0b3JlZCAiKTsgLy8gbWxhbQorCisg
ICAgICAgIEFTU0VSVCghIWNhbGxGcmFtZSk7CisgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhc0hv
c3RDYWxsRnJhbWVGbGFnKCkpIHsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUocjEuaSwgcjAuaSk7ICAvLyByZXR1cm5pbmcgSlNWYWx1ZSh0YWcsIHBh
eWxvYWQpOworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUocjAuZW5j
b2RlZEpTVmFsdWUpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgbm9ybWFs
IEFTTSBsbGludCBjYWxsIGltcGxlbWVudGF0aW9uIHJldHVybnMgdG8gdGhlIGNhbGxlciBhcwor
ICAgICAgICAvLyByZWNvcmRlZCBpbiBsciwgYW5kIGNhbGxlciAgd291bGQgZmV0Y2ggdGhlIHJl
dHVybiBhZGRyZXNzIGZyb20KKyAgICAgICAgLy8gQXJndW1lbnRDb3VudC50YWcoKSAoc2VlIHRo
ZSBkaXNwYXRjaEFmdGVyQ2FsbCgpIG1hY3JvIHVzZWQgaW4KKyAgICAgICAgLy8gdGhlIGNhbGxU
YXJnZXRGdW5jdGlvbigpIG1hY3JvKS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRm9yIHRoZSBD
IGxvb3AsIHdlIGRvbid0IGhhdmUgdGhlIEpJVCBzdHViIHRvIHRoaXMgd29yayBmb3IgdXMuICBT
bywKKyAgICAgICAgLy8gd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGVxdWl2YWxlbnQgb2YgZGlz
cGF0Y2hBZnRlckNhbGwoKSBoZXJlCisgICAgICAgIC8vIGJlZm9yZSBkaXNwYXRjaGluZyB0byB0
aGUgUEMuCisKKyAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5jdXJyZW50VlBDKCk7CisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBCYXNlZCBvbiBMb3dMZXZlbEludGVycHJldGVyNjQu
YXNtJ3MgZGlzcGF0Y2hBZnRlckNhbGwoKToKKworICAgICAgICAvLyBXaGVuIHJldHVybmluZyBm
cm9tIGEgbmF0aXZlIHRyYW1wb2xpbmUgY2FsbCwgdW5saWtlIHRoZSBhc3NlbWJseQorICAgICAg
ICAvLyBMTEludCwgd2UgY2FuJ3Qgc2ltcGx5IHJldHVybiB0byB0aGUgY2FsbGVyLiAgSW4gb3Vy
IGNhc2UsIHdlIGdyYWIKKyAgICAgICAgLy8gdGhlIGNhbGxlcidzIFZQQyBhbmQgcmVzdW1lIGV4
ZWN1dGlvbiB0aGVyZS4gIEhvd2V2ZXIsIHRoZSBjYWxsZXIncworICAgICAgICAvLyBWUEMgcmV0
dXJuZWQgYnkgY2FsbEZyYW1lLT5jdXJyZW50VlBDKCkgaXMgaW4gdGhlIGZvcm0gb2YgdGhlIHJl
YWwKKyAgICAgICAgLy8gYWRkcmVzcyBvZiB0aGUgdGFyZ2V0IGJ5dGVjb2RlLCBidXQgdGhlIDY0
LWJpdCBMTEludCBpbnRlcnByZXRlcgorICAgICAgICAvLyBleHBlY3RzIHRoZSBWUEMgdG8gYmUg
YSBieXRlY29kZSBvZmZzZXQuICBIZW5jZSwgd2UgbmVlZCB0byBtYXAKKyAgICAgICAgLy8gaXQg
YmFjayB0byBhIGJ5dGVjb2RlIG9mZnNldCBiZWZvcmUgd2UgZGlzcGF0Y2ggdmlhIHRoZSB1c3Vh
bAorICAgICAgICAvLyBkaXNwYXRjaCBtZWNoYW5pc20gKE5FWFRfSU5TVFJVQ1RJT04oKSk6CisK
KyAgICAgICAgY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgQVNT
RVJUKGNvZGVCbG9jayk7CisgICAgICAgIHJQQy52cCA9IGNhbGxGcmFtZS0+Y3VycmVudFZQQygp
OworICAgICAgICByUEMuaSA9IHJQQy5pOHAgLSByZWludGVycHJldF9jYXN0PGludDhfdCo+KGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgICAgIHJQQy5pID4+PSAzOwor
CisgICAgICAgIHJCYXNlUEMudnAgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7
CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7
CisKKyAgICB9IC8vIEVORCBkb1JldHVybkhlbHBlci4KKworCisgICAgLy8gS2VlcCB0aGUgY29t
cGlsZXIgaGFwcHkgc28gdGhhdCBpdCBkb2Vzbid0IGNvbXBsYWluIGFib3V0IHVudXNlZAorICAg
IC8vIGxhYmVscyBmb3IgdGhlIExMSW50IGhlbHBlcnM6CisgICAgI2RlZmluZSBMTElOVF9PUENP
REVfRU5UUlkoX19vcGNvZGUpIFwKKyAgICAgICAgVU5VU0VEX1BBUkFNKCYmX19vcGNvZGUpOwor
ICAgICAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVSKExMSU5UX09QQ09ERV9FTlRSWSkK
KyAgICAjdW5kZWYgTExJTlRfT1BDT0RFX0VOVFJZCisKKworICAgICN1bmRlZiBORVhUX0lOU1RS
VUNUSU9OCisgICAgI3VuZGVmIERFRklORV9PUENPREUKKyAgICAjdW5kZWYgQ0hFQ0tfRk9SX1RJ
TUVPVVQKKyAgICAjdW5kZWYgQ0FTVAorICAgICN1bmRlZiBTSUdOX0JJVDMyCisKK30gLy8gSW50
ZXJwcmV0ZXI6OmxsaW50Q0xvb3BFeGVjdXRlKCkKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bHNlIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCisvLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8v
IERlZmluZSB0aGUgb3Bjb2RlIGRpc3BhdGNoIG1lY2hhbmlzbSB3aGVuIHVzaW5nIGFuIEFTTSBs
b29wOgorLy8KKworLy8gVGhlc2UgYXJlIGZvciBidWlsZGluZyBhbiBpbnRlcnByZXRlciBmcm9t
IGdlbmVyYXRlZCBhc3NlbWJseSBjb2RlOgorI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJTiAgIGFz
bSAoCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VORCAgICAgKTsKKworI2RlZmluZSBPRkZMSU5FX0FT
TV9PUENPREVfTEFCRUwoX19vcGNvZGUpIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsbGludF8j
I19fb3Bjb2RlKQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKF9fb3Bjb2RlKSAgIE9G
RkxJTkVfQVNNX0dMT0JBTF9MQUJFTChfX29wY29kZSkKKworI2lmIENQVShBUk1fVEhVTUIyKQor
I2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgIFwKKyAgICAi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgICBcCisgICAgSElERV9T
WU1CT0wobGFiZWwpICJcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIudGh1bWJcbiIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBU
SFVNQl9GVU5DX1BBUkFNKGxhYmVsKSAiXG4iICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkg
IjpcbiIKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAg
ICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICBc
CisgICAgSElERV9TWU1CT0wobGFiZWwpICJcbiIgICAgICAgICAgICAgICAgICAgICBcCisgICAg
U1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNlbmRpZgorCisjZGVmaW5lIE9GRkxJTkVfQVNN
X0xPQ0FMX0xBQkVMKGxhYmVsKSAgIExPQ0FMX0xBQkVMX1NUUklORyhsYWJlbCkgIjpcbiIKKwog
Ly8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5z
IGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQogLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29t
cGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4KICNpbmNsdWRlICJMTEludEFzc2Vt
Ymx5LmgiCiAKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MjcgKzMwLDI4IEBACiAKICNpZiBFTkFCTEUoTExJTlQpCiAKLSNpbmNsdWRlICJPcGNvZGUuaCIK
KyNpbmNsdWRlICJMTEludE9wY29kZS5oIgorCisKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkK
IAogI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4g
IkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKICAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRf
SU5TVFJVQ1RJT05fREVDTCk7CiAjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAogCi1leHRl
cm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKLWV4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsK
LWV4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7Ci1leHRlcm4gIkMiIHZv
aWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKCk7Ci1leHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKCk7Ci1leHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KCk7Ci1leHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9zbG93X3Bh
dGhfdHJhbXBvbGluZSgpOwotZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUoKTsKLQotLy8gTmF0aXZlIGNhbGwgdHJhbXBvbGluZXMKLWV4dGVybiAiQyIg
dm9pZCBsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKCk7Ci1leHRlcm4gIkMiIHZvaWQgbGxp
bnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lKCk7CisjZGVmaW5lIERFQ0xBUkVfTExJTlRf
TkFUSVZFX0hFTFBFUihuYW1lKSBleHRlcm4gIkMiIHZvaWQgbmFtZSgpOworICAgIEZPUl9FQUNI
X0xMSU5UX05BVElWRV9IRUxQRVIoREVDTEFSRV9MTElOVF9OQVRJVkVfSEVMUEVSKQorI3VuZGVm
IERFQ0xBUkVfTExJTlRfTkFUSVZFX0hFTFBFUgorCisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9D
X0xPT1ApCisKKworLy8gbWxhbSBCRUdJTiBkZWJ1ZworbmFtZXNwYWNlIEpTQyB7CitKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG1sYW1UcmFwKCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIG1sYW1C
cmVhayhjb25zdCBjaGFyKiBjb21tZW50LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7Cit9
IC8vIG5hbWVzcGFjZSBKU0MKKy8vIG1sYW0gRU5EIGRlYnVnCiAKICNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
CShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm12Ny5yYgkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3OSw4IEBAIGRlZiBhcm1WN0xvd2Vy
UmVnaXN0ZXJSZXVzZShsaXN0KQogICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQogICAgICAg
ICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVx
IiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKICAgICAgICAgICAgICAgICAi
Y3BlcSIsICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAi
Y3BndGVxIiwgImNwbHQiLCAiY3BsdGVxIiwKLSAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIs
ICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56IiwgInRwbyIsICJ0cHMi
LCAidHB6IiwgInRwbnoiLAorICAgICAgICAgICAgICAgICMgbWxhbSBVTlVTRUQgInRpbyIsICJ0
aXMiLCAidGl6IiwgInRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cG8iLCAi
dHBzIiwgInRweiIsICJ0cG56IiwKKyAgICAgICAgICAgICAgICAidGlzIiwgInRpeiIsICJ0aW56
IiwgInRicyIsICJ0YnoiLCAidGJueiIsICJ0cHMiLCAidHB6IiwgInRwbnoiLAogICAgICAgICAg
ICAgICAgICJjYmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIiLCAiY2JiZXEiLCAi
Y2JndCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCiAgICAgICAgICAgICAgICAgaWYgbm9k
ZS5vcGVyYW5kcy5zaXplID09IDIKICAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5k
c1swXSA9PSBub2RlLm9wZXJhbmRzWzFdCkBAIC05NDAsOSArOTQxLDkgQEAgY2xhc3MgSW5zdHJ1
Y3Rpb24KICAgICAgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiLCAiYnRibnoiCiAgICAgICAgICAg
ICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQogICAgICAgICAgICAgJGFzbS5wdXRzICJibmUgI3tv
cGVyYW5kc1stMV0uYXNtTGFiZWx9IgotICAgICAgICB3aGVuICJidGlvIiwgImJ0cG8iLCAiYnRi
byIKLSAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCi0gICAgICAgICAgICAkYXNt
LnB1dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgICMgbWxhbSBVTlVT
RUQgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAg
ZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAkYXNtLnB1
dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCiAgICAgICAgIHdoZW4gImJ0aXMiLCAi
YnRwcyIsICJidGJzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKICAgICAg
ICAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKQEAgLTk4Miw4
ICs5ODMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFy
ZShvcGVyYW5kcywgImx0IikKICAgICAgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIsICJjYmx0
ZXEiCiAgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibGUiKQotICAgICAg
ICB3aGVuICJ0aW8iLCAidGJvIiwgInRwbyIKLSAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQo
b3BlcmFuZHMsICJ2cyIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGlvIiwgInRibyIs
ICJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5k
cywgInZzIikKICAgICAgICAgd2hlbiAidGlzIiwgInRicyIsICJ0cHMiCiAgICAgICAgICAgICBl
bWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQogICAgICAgICB3aGVuICJ0aXoiLCAidGJ6
IiwgInRweiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJl
dmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
Ygkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsMTYgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAg
ICAgIEBhbm5vdGF0aW9uID0gbmlsCiAgICAgICAgIEBjb2RlT3JpZ2luID0gbmlsCiAgICAgICAg
IEBpbnRlcm5hbENvbW1lbnQgPSBuaWwKKyAgICAgICAgQHNvdXJjZUluc3RydWN0aW9uID0gbmls
CiAgICAgICAgIHJlc3VsdAogICAgIGVuZAogICAgIAorICAgICMgUHV0cyBhIEMgU3RhdGVtZW50
IGluIHRoZSBvdXRwdXQgc3RyZWFtLgorICAgIGRlZiBwdXRjKCpsaW5lKQorICAgICAgICByYWlz
ZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCIg
ICAgIiArIGxpbmUuam9pbignJyksIGxhc3RDb21tZW50KSkKKyAgICBlbmQKKyAgICAKICAgICBk
ZWYgZm9ybWF0RHVtcChkdW1wU3RyLCBjb21tZW50LCBjb21tZW50Q29sdW1ucz0kcHJlZmVycmVk
Q29tbWVudFN0YXJ0Q29sdW1uKQogICAgICAgICBpZiBjb21tZW50Lmxlbmd0aCA+IDAKICAgICAg
ICAgICAgICIlLSN7Y29tbWVudENvbHVtbnN9cyAlcyIgJSBbZHVtcFN0ciwgY29tbWVudF0KQEAg
LTE1MSw3ICsxNTgsMTEgQEAgY2xhc3MgQXNzZW1ibGVyCiAgICAgICAgIEBudW1HbG9iYWxMYWJl
bHMgKz0gMQogICAgICAgICBwdXRzTmV3bGluZVNwYWNlcklmQXBwcm9wcmlhdGUoOmdsb2JhbCkK
ICAgICAgICAgQGludGVybmFsQ29tbWVudCA9ICRlbmFibGVMYWJlbENvdW50Q29tbWVudHMgPyAi
R2xvYmFsIExhYmVsICN7QG51bUdsb2JhbExhYmVsc30iIDogbmlsCi0gICAgICAgIEBvdXRwLnB1
dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSkiLCBs
YXN0Q29tbWVudCkpCisgICAgICAgIGlmIC9cQWxsaW50X29wXy8ubWF0Y2gobGFiZWxOYW1lKQor
ICAgICAgICAgICAgQG91dHAucHV0cyhmb3JtYXREdW1wKCJPRkZMSU5FX0FTTV9PUENPREVfTEFC
RUwob3BfI3skfi5wb3N0X21hdGNofSkiLCBsYXN0Q29tbWVudCkpCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiT0ZGTElORV9BU01fR0xVRV9MQUJFTCgj
e2xhYmVsTmFtZX0pIiwgbGFzdENvbW1lbnQpKQorICAgICAgICBlbmQKICAgICAgICAgQG5ld2xp
bmVTcGFjZXJTdGF0ZSA9IDpub25lICMgQWZ0ZXIgYSBnbG9iYWwgbGFiZWwsIHdlIGNhbiB1c2Ug
YW5vdGhlciBzcGFjZXIuCiAgICAgZW5kCiAgICAgCkBAIC0xNzEsNiArMTgyLDE0IEBAIGNsYXNz
IEFzc2VtYmxlcgogICAgICAgICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkg
XCIiCiAgICAgZW5kCiAgICAgCisgICAgZGVmIHNlbGYuY0xhYmVsUmVmZXJlbmNlKGxhYmVsTmFt
ZSkKKyAgICAgICAgIiN7bGFiZWxOYW1lfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5j
TG9jYWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICIje2xhYmVsTmFtZX0iCisg
ICAgZW5kCisgICAgCiAgICAgZGVmIGNvZGVPcmlnaW4odGV4dCkKICAgICAgICAgY2FzZSBAY29t
bWVudFN0YXRlCiAgICAgICAgIHdoZW4gOm5vbmUKQEAgLTE5Niw2ICsyMTUsOSBAQCBjbGFzcyBB
c3NlbWJsZXIKICAgICBkZWYgYW5ub3RhdGlvbih0ZXh0KQogICAgICAgICBAYW5ub3RhdGlvbiA9
IHRleHQKICAgICBlbmQKKyAgICBkZWYgc291cmNlSW5zdHJ1Y3Rpb24odGV4dCkKKyAgICAgICAg
QHNvdXJjZUluc3RydWN0aW9uID0gdGV4dAorICAgIGVuZAogZW5kCiAKIGFzbUZpbGUgPSBBUkdW
LnNoaWZ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5k
cy5yYgkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYmFja2VuZHMucmIJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxNCBAQCByZXF1aXJl
ICJjb25maWciCiByZXF1aXJlICJhcm12NyIKIHJlcXVpcmUgImFzdCIKIHJlcXVpcmUgIng4NiIK
K3JlcXVpcmUgImNsb29wIgogCiBCQUNLRU5EUyA9CiAgICAgWwogICAgICAiWDg2IiwKICAgICAg
Ilg4Nl82NCIsCi0gICAgICJBUk12NyIKKyAgICAgIkFSTXY3IiwKKyAgICAgIkNfTE9PUCIKICAg
ICBdCiAKICMgS2VlcCB0aGUgc2V0IG9mIHdvcmtpbmcgYmFja2VuZHMgc2VwYXJhdGUgZnJvbSB0
aGUgc2V0IG9mIGJhY2tlbmRzIHRoYXQgbWlnaHQgYmUKQEAgLTQyLDcgKzQ0LDggQEAgV09SS0lO
R19CQUNLRU5EUyA9CiAgICAgWwogICAgICAiWDg2IiwKICAgICAgIlg4Nl82NCIsCi0gICAgICJB
Uk12NyIKKyAgICAgIkFSTXY3IiwKKyAgICAgIkNfTE9PUCIKICAgICBdCiAKIEJBQ0tFTkRfUEFU
VEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicp
CkBAIC03NiwxMiArNzksMTggQEAgY2xhc3MgTGFiZWxSZWZlcmVuY2UKICAgICBkZWYgYXNtTGFi
ZWwKICAgICAgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQogICAgIGVu
ZAorICAgIGRlZiBjTGFiZWwKKyAgICAgICAgQXNzZW1ibGVyLmNMYWJlbFJlZmVyZW5jZShuYW1l
WzEuLi0xXSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCiAgICAg
ZGVmIGFzbUxhYmVsCiAgICAgICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2Zm
bGluZWFzbV8iK25hbWVbMS4uLTFdKQogICAgIGVuZAorICAgIGRlZiBjTGFiZWwKKyAgICAgICAg
QXNzZW1ibGVyLmNMb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFd
KQorICAgIGVuZAogZW5kCiAKIGNsYXNzIFNraXAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2Nsb29wLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2Nsb29wLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4MCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiY29uZmlnIgor
cmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitkZWYgY2xvb3BNYXBUeXBlKHR5cGUpCisg
ICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50OyAgICAgICAgICAgICIuaSIKKyAgICB3aGVuIDp1
aW50OyAgICAgICAgICAgIi51IgorICAgIHdoZW4gOmludDMyOyAgICAgICAgICAiLmkzMiIKKyAg
ICB3aGVuIDp1aW50MzI7ICAgICAgICAgIi51MzIiCisgICAgd2hlbiA6aW50ODsgICAgICAgICAg
ICIuaTgiCisgICAgd2hlbiA6dWludDg7ICAgICAgICAgICIudTgiCisgICAgd2hlbiA6aW50OFB0
cjsgICAgICAgICIuaThwIgorICAgIHdoZW4gOnZvaWRQdHI7ICAgICAgICAiLnZwIgorICAgIHdo
ZW4gOm5hdGl2ZUZ1bmM7ICAgICAiLm5hdGl2ZUZ1bmMiCisgICAgd2hlbiA6ZG91YmxlOyAgICAg
ICAgICIuZCIKKyAgICB3aGVuIDpjYXN0VG9Eb3VibGU7ICAgIi5jYXN0VG9Eb3VibGUiCisgICAg
d2hlbiA6Y2FzdFRvVm9pZFB0cjsgICIuY2FzdFRvVm9pZFB0ciIKKyAgICBlbHNlOworICAgICAg
ICByYWlzZSAiVW5zdXBwb3J0ZWQgdHlwZSIKKyAgICBlbmQKK2VuZAorCisKK2NsYXNzIFNwZWNp
YWxSZWdpc3RlciA8IE5vQ2hpbGRyZW4KKyAgICBkZWYgZHVtcAorICAgICAgICBAbmFtZQorICAg
IGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAgICAgICAgQG5hbWUgKyBjbG9vcE1h
cFR5cGUodHlwZSkKKyAgICBlbmQKK2VuZAorCitDX0xPT1BfU0NSQVRDSF9GUFIgPSBTcGVjaWFs
UmVnaXN0ZXIubmV3KCJkOCIpCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgICBkZWYgZHVtcAorICAg
ICAgICBjYXNlIG5hbWUKKyAgICAgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAgICAg
ICAicjAiCisgICAgICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgICAgICAgInIxIgor
ICAgICAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICAgICAgICJyMiIKKyAgICAgICAgd2hlbiAi
dDMiCisgICAgICAgICAgICAicjQiCisgICAgICAgIHdoZW4gInQ0IgorICAgICAgICAgICAgInJQ
QyIKKyAgICAgICAgd2hlbiAidDYiCisgICAgICAgICAgICAickJhc2VQQyIKKyAgICAgICAgd2hl
biAiY3NyMSIKKyAgICAgICAgICAgICJ0YWdUeXBlTnVtYmVyIgorICAgICAgICB3aGVuICJjc3Iy
IgorICAgICAgICAgICAgInRhZ01hc2siCisgICAgICAgIHdoZW4gImNmciIKKyAgICAgICAgICAg
ICJmcCIKKyAgICAgICAgd2hlbiAibHIiCisgICAgICAgICAgICAiclJldFZQQyIKKyAgICAgICAg
d2hlbiAic3AiCisgICAgICAgICAgICAic3AiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJh
aXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQ19MT09QIGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAg
ICAgICAgZHVtcCArIGNsb29wTWFwVHlwZSh0eXBlKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRAorICAgIGRlZiBkdW1wCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVu
ICJmdDAiLCAiZnIiCisgICAgICAgICAgICAiZDAiCisgICAgICAgIHdoZW4gImZ0MSIKKyAgICAg
ICAgICAgICJkMSIKKyAgICAgICAgd2hlbiAiZnQyIgorICAgICAgICAgICAgImQyIgorICAgICAg
ICB3aGVuICJmdDMiCisgICAgICAgICAgICAiZDMiCisgICAgICAgIHdoZW4gImZ0NCIKKyAgICAg
ICAgICAgICJkNCIKKyAgICAgICAgd2hlbiAiZnQ1IgorICAgICAgICAgICAgImQ1IgorICAgICAg
ICBlbHNlCisgICAgICAgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIENfTE9P
UCBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYg
Y2xWYWx1ZSh0eXBlPTppbnQpCisgICAgICAgIGR1bXAgKyBjbG9vcE1hcFR5cGUodHlwZSkKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3t2
YWx1ZX0iCisgICAgZW5kCisgICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICAjIFRo
ZXJlIGlzIGEgY2FzZSBvZiBhIHZlcnkgbGFyZ2UgdW5zaWduZWQgbnVtYmVyICgweDgwMDAwMDAw
MDAwMDAwMDApCisgICAgICAgICMgd2hpY2ggd2Ugd2lzaCB0byBlbmNvZGUuICBVbmZvcnR1bmF0
ZWx5LCB0aGUgQy9DKysgY29tcGlsZXIKKyAgICAgICAgIyBjb21wbGFpbnRzIGlmIHdlIGV4cHJl
c3MgdGhhdCBudW1iZXIgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIGludGVnZXIuCisgICAgICAgICMg
SGVuY2UsIGZvciBwb3NpdGl2ZSB2YWx1ZXMsIHdlIGp1c3QgY29udmVydCB0aGUgbnVtYmVyIGlu
dG8gaGV4IGZvcm0KKyAgICAgICAgIyB0byBrZWVwIHRoZSBjb21waWxlciBoYXBweS4KKyAgICAg
ICAgIworICAgICAgICAjIEhvd2V2ZXIsIGZvciBuZWdhdGl2ZSB2YWx1ZXMsIHRoZSB0b19zKDE2
KSBoZXggY29udmVyc2lvbiBtZXRob2QgZG9lcworICAgICAgICAjIG5vdCBzdHJpcCB0aGUgIi0i
IHNpZ24gcmVzdWx0aW5nIGluIGEgbWVhbmluZ2xlc3MgIjB4LS4uLiIgdmFsdWVTdHIuCisgICAg
ICAgICMgVG8gd29ya2Fyb3VuZCB0aGlzLCB3ZSBzaW1wbHkgZG9uJ3QgZW5jb2RlIG5lZ2F0aXZl
IG51bWJlcnMgYXMgaGV4LgorCisgICAgICAgIHZhbHVlU3RyID0gKHZhbHVlIDwgMCkgPyAiI3t2
YWx1ZX0iIDogIjB4I3t2YWx1ZS50b19zKDE2KX0iCisKKyAgICAgICAgY2FzZSB0eXBlCisgICAg
ICAgIHdoZW4gOmludDg7ICAgICJpbnQ4X3QoI3t2YWx1ZVN0cn0pIgorICAgICAgICB3aGVuIDpp
bnQzMjsgICAiaW50MzJfdCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOmludDsgICAgICJp
bnRwdHJfdCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOnVpbnQ4OyAgICJ1aW50OF90KCN7
dmFsdWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6dWludDMyOyAgInVpbnQzMl90KCN7dmFsdWVTdHJ9
KSIKKyAgICAgICAgd2hlbiA6dWludDsgICAgInVpbnRwdHJfdCgje3ZhbHVlU3RyfSkiCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJOb3QgaW1wbGVtZW50ZWQgaW1tZWRpYXRlIG9m
IHR5cGU6ICN7dHlwZX0iIAorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRy
ZXNzCisgICAgZGVmIGR1bXAKKyAgICAgICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LnZhbHVl
fV0iCisgICAgZW5kCisgICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBjYXNlIHR5
cGUKKyAgICAgICAgd2hlbiA6aW50ODsgICAgICAgICBpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4g
OmludDMyOyAgICAgICAgaW50MzJNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50OyAgICAgICAgICBp
bnRNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDg7ICAgICAgICB1aW50OE1lbVJlZgorICAgICAg
ICB3aGVuIDp1aW50MzI7ICAgICAgIHVpbnQzMk1lbVJlZgorICAgICAgICB3aGVuIDp1aW50OyAg
ICAgICAgIHVpbnRNZW1SZWYKKyAgICAgICAgd2hlbiA6b3Bjb2RlOyAgICAgICBvcGNvZGVNZW1S
ZWYKKyAgICAgICAgd2hlbiA6bmF0aXZlRnVuYzsgICBuYXRpdmVGdW5jTWVtUmVmCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIEFkZHJlc3MgdHlwZTogI3t0eXBl
fSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIHBvaW50ZXJFeHByCisgICAgICAgIGlm
IGJhc2UuaXNfYT8gUmVnaXN0ZXJJRCBhbmQgYmFzZS5uYW1lID09ICJzcCIgCisgICAgICAgICAg
ICBvZmZzZXRWYWx1ZSA9ICIje29mZnNldC52YWx1ZX0iCisgICAgICAgICAgICAiKGFzc2VydCgj
e29mZnNldFZhbHVlfSA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRhKSksICZz
cC0+Z2xvYmFsRGF0YSkiCisgICAgICAgIGVsc2lmIG9mZnNldC52YWx1ZSA9PSAwCisgICAgICAg
ICAgICAiI3tiYXNlLmNsVmFsdWUoOmludDhQdHIpfSIKKyAgICAgICAgZWxzaWYgb2Zmc2V0LnZh
bHVlID4gMAorICAgICAgICAgICAgIiN7YmFzZS5jbFZhbHVlKDppbnQ4UHRyKX0gKyAje29mZnNl
dC52YWx1ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICIje2Jhc2UuY2xWYWx1ZSg6aW50
OFB0cil9IC0gI3stb2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVm
IGludDhNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDhfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAg
ICBlbmQKKyAgICBkZWYgaW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDE2X3QqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGludDMyTWVtUmVmCisgICAgICAgICIqQ0FT
VDxpbnQzMl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiBpbnRNZW1SZWYK
KyAgICAgICAgIipDQVNUPGludHB0cl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAg
IGRlZiB1aW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDhfdCo+KCN7cG9pbnRlckV4cHJ9
KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50MTZf
dCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDMyTWVtUmVmCisgICAg
ICAgICIqQ0FTVDx1aW50MzJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYg
dWludE1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludHB0cl90Kj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorICAgIGRlZiBuYXRpdmVGdW5jTWVtUmVmCisgICAgICAgICIqQ0FTVDxOYXRpdmVG
dW5jdGlvbio+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgb3Bjb2RlTWVtUmVm
CisgICAgICAgICIqQ0FTVDxMTEludE9wY29kZSo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQK
KyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUqPigje3BvaW50ZXJFeHBy
fSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LmR1bXB9LCAje2luZGV4LmR1bXB9IDw8ICN7c2Nh
bGVTaGlmdH1dIgorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAgICAgICAg
Y2FzZSB0eXBlCisgICAgICAgIHdoZW4gOmludDg7ICAgICAgIGludDhNZW1SZWYKKyAgICAgICAg
d2hlbiA6aW50MzI7ICAgICAgaW50MzJNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50OyAgICAgICAg
aW50TWVtUmVmCisgICAgICAgIHdoZW4gOnVpbnQ4OyAgICAgIHVpbnQ4TWVtUmVmCisgICAgICAg
IHdoZW4gOnVpbnQzMjsgICAgIHVpbnQzMk1lbVJlZgorICAgICAgICB3aGVuIDp1aW50OyAgICAg
ICB1aW50TWVtUmVmCisgICAgICAgIHdoZW4gOm9wY29kZTsgICAgIG9wY29kZU1lbVJlZgorICAg
ICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBCYXNlSW5kZXggdHlwZTog
I3t0eXBlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIHBvaW50ZXJFeHByCisgICAg
ICAgIGlmIGJhc2UuaXNfYT8gUmVnaXN0ZXJJRCBhbmQgYmFzZS5uYW1lID09ICJzcCIKKyAgICAg
ICAgICAgIG9mZnNldFZhbHVlID0gIigje2luZGV4LmNsVmFsdWUoOmludDMyKX0gPDwgI3tzY2Fs
ZVNoaWZ0fSkgKyAje29mZnNldC5jbFZhbHVlfSkiCisgICAgICAgICAgICAiKGFzc2VydCgje29m
ZnNldFZhbHVlfSA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRhKSksICZzcC0+
Z2xvYmFsRGF0YSkiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICIje2Jhc2UuY2xWYWx1ZSg6
aW50OFB0cil9ICsgKCN7aW5kZXguY2xWYWx1ZSg6aW50MzIpfSA8PCAje3NjYWxlU2hpZnR9KSAr
ICN7b2Zmc2V0LmNsVmFsdWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgaW50OE1l
bVJlZgorICAgICAgICAiKkNBU1Q8aW50OF90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAor
ICAgIGRlZiBpbnQxNk1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50MTZfdCo+KCN7cG9pbnRlckV4
cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgaW50MzJNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDMy
X3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGludE1lbVJlZgorICAgICAg
ICAiKkNBU1Q8aW50cHRyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIHVp
bnQ4TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50OF90Kj4oI3twb2ludGVyRXhwcn0pIgorICAg
IGVuZAorICAgIGRlZiB1aW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPHVpbnQxNl90Kj4oI3tw
b2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50MzJNZW1SZWYKKyAgICAgICAgIipD
QVNUPHVpbnQzMl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50TWVt
UmVmCisgICAgICAgICIqQ0FTVDx1aW50cHRyX3QqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5k
CisgICAgZGVmIG9wY29kZU1lbVJlZgorICAgICAgICAiKkNBU1Q8TExJbnRPcGNvZGUqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGRibE1lbVJlZgorICAgICAgICAiKkNBU1Q8
ZG91YmxlKj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRl
QWRkcmVzcworICAgIGRlZiBkdW1wCisgICAgICAgICIje2NvZGVPcmlnaW5TdHJpbmd9IgorICAg
IGVuZAorICAgIGRlZiBjbFZhbHVlCisgICAgICAgIGR1bXAKKyAgICBlbmQKK2VuZAorCisKKyMK
KyMgTGVhIHN1cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgY2xvb3BFbWl0TGVh
KGRlc3RpbmF0aW9uLCB0eXBlKQorICAgICAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIiN7ZGVzdGluYXRpb24uY2xWYWx1ZSg6aW50OFB0cil9ICs9ICN7
b2Zmc2V0LmNsVmFsdWUodHlwZSl9OyIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGFzbS5w
dXRjICIje2Rlc3RpbmF0aW9uLmNsVmFsdWUoOmludDhQdHIpfSA9ICN7YmFzZS5jbFZhbHVlKDpp
bnQ4UHRyKX0gKyAje29mZnNldC5jbFZhbHVlKHR5cGUpfTsiCisgICAgICAgIGVuZAorICAgIGVu
ZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBjbG9vcEVtaXRMZWEoZGVzdGluYXRp
b24sIHR5cGUpCisgICAgICAgIHJhaXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hv
dWxkIGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9
PSAwCisgICAgICAgICRhc20ucHV0YyAiI3tkZXN0aW5hdGlvbi5jbFZhbHVlKDppbnQ4UHRyKX0g
PSAje2Jhc2UuY2xWYWx1ZSg6aW50OFB0cil9ICsgKCN7aW5kZXguY2xWYWx1ZX0gPDwgI3tzY2Fs
ZVNoaWZ0fSk7IgorICAgIGVuZAorZW5kCisKKyMKKyMgQWN0dWFsIGxvd2VyaW5nIGNvZGUgZm9s
bG93cy4KKyMKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgZ2V0TW9kaWZpZWRMaXN0Q19MT09Q
CisgICAgICAgIG15TGlzdCA9IEBsaXN0CisgICAgICAgIAorICAgICAgICAjIFZlcmlmeSB0aGF0
IHdlIHdpbGwgb25seSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCisgICAgICAgIG15TGlz
dC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICB1bmxlc3Mgbm9kZS5p
c19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExhYmVs
IG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBvcgorICAgICAg
ICAgICAgICAgICAgICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgICAgICAgICByYWlzZSAiVW5l
eHBlY3RlZCAje25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbXlMaXN0CisgICAg
ZW5kCitlbmQKKworZGVmIGNsT3BlcmFuZHMob3BlcmFuZHMpCisgICAgb3BlcmFuZHMubWFwe3x2
fCB2LmR1bXB9LmpvaW4oIiwgIikKK2VuZAorCisjIG1sYW0gQkVHSU4KK2RlZiBtbGFtRHVtcE9w
ZXJhdGlvbkFyZ3Mob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQorICAgIGNhc2UgdHlwZQorICAg
IHdoZW4gOmludDMyOyAgdmYgPSAiJWQiCisgICAgd2hlbiA6aW50OyAgICB2ZiA9ICIlbGQiCisg
ICAgd2hlbiA6dWludDMyOyB2ZiA9ICIldSIKKyAgICB3aGVuIDp1aW50OyAgIHZmID0gIiVsdSIK
KyAgICB3aGVuIDpkb3VibGU7IHZmID0gIiVlIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIk9v
cHM/IHR5cGU6ICN7dHlwZX0iCisgICAgZW5kICAgIAorCisgICAgJGFzbS5wdXRjICIgICAgICAg
ICNpZiBtbGFtX1BSSU5URjAiCisgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIlxcblxc
biA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cIik7IgorICAg
IGlmIHR5cGUgPT0gOmRvdWJsZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICAje29wZXJhdG9yfSB0eXBl
ICN7dHlwZX0gfCAje3ZmfSAje29wZXJhdG9yfSAje3ZmfSA9PiAje3ZmfSBcXG5cIiwgI3tvcGVy
YW5kc1sxXS5jbFZhbHVlKHR5cGUpfSwgI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKCN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gI3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZh
bHVlKHR5cGUpfSkpOyIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9w
ZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAgIHByaW50Zihc
IiAgICAgICN7b3BlcmF0b3J9IHR5cGUgI3t0eXBlfSB8ICgje3ZmfSAje29wZXJhdG9yfT0gI3t2
Zn0pID0+ICN7dmZ9IFxcblwiLCAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAje29wZXJh
bmRzWzBdLmNsVmFsdWUodHlwZSl9LCAoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29w
ZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICBlbmQKKyAg
ICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAgICAgJGFzbS5w
dXRjICIgICAgICAgIHByaW50ZihcIiAgICAgICN7b3BlcmF0b3J9IHR5cGUgI3t0eXBlfSB8IDwj
e29wZXJhbmRzWzFdLmR1bXB9PiAje3ZmfSBbJXBdICN7b3BlcmF0b3J9IDwje29wZXJhbmRzWzBd
LmR1bXB9PiAje3ZmfSBbJXBdID0+IDwje29wZXJhbmRzWzJdLmR1bXB9PiAje3ZmfSBbJXBdXFxu
XCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikje29wZXJhbmRzWzFdLmNs
VmFsdWUodHlwZSl9LCAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAodm9pZCopI3tvcGVy
YW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKCN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gI3tv
cGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSksICh2b2lkKikoI3tvcGVyYW5k
c1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlw
ZSl9KSk7IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAg
I3tvcGVyYXRvcn0gdHlwZSAje3R5cGV9IHwgPCN7b3BlcmFuZHNbMV0uZHVtcH0+ICN7dmZ9IFsl
cF0gI3tvcGVyYXRvcn0gPCN7b3BlcmFuZHNbMF0uZHVtcH0+ICN7dmZ9IFslcF0pID0+IDwje29w
ZXJhbmRzWzFdLmR1bXB9PiAje3ZmfSBbJXBdXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0
eXBlKX0sICh2b2lkKikje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAje29wZXJhbmRzWzBd
LmNsVmFsdWUodHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKCN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gI3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZh
bHVlKHR5cGUpfSksICh2b2lkKikoI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAje29wZXJh
dG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICBlbmQKKyAgICBl
bmQKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgJGFzbS5wdXRjICIgICAgICAg
ICNlbmRpZiAvLyBtbGFtX1BSSU5URiIKK2VuZAorIyBtbGFtIEVORAorCitkZWYgY2xvb3BFbWl0
T3BlcmF0aW9uKG9wZXJhbmRzLCB0eXBlLCBvcGVyYXRvcikKKyAgICAjIG1sYW1EdW1wT3BlcmF0
aW9uQXJncyhvcGVyYW5kcywgdHlwZSwgb3BlcmF0b3IpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzCisgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1syXS5jbFZhbHVlKHR5cGUpfSA9ICN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gI3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZh
bHVlKHR5cGUpfTsiCisgICAgZWxzZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6
ZSA9PSAyCisgICAgICAgIHJhaXNlIHVubGVzcyBub3Qgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSA9ICN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gI3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZh
bHVlKHR5cGUpfTsiCisgICAgZW5kCitlbmQKKworZGVmIGNsb29wRW1pdENvbXBhcmVEb3VibGVX
aXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsIGNvbmRpdGlvbikKKyAgICAkYXNtLnB1dGMg
ImlmIChpc25hbigje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9KSB8fCBpc25hbigje29w
ZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9KSIKKyAgICAkYXNtLnB1dGMgIiAgICB8fCAoI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfSAje2NvbmRpdGlvbn0gI3tvcGVyYW5kc1sxXS5j
bFZhbHVlKDpkb3VibGUpfSkpIgorICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3tvcGVyYW5kc1sy
XS5jTGFiZWx9OyIKK2VuZAorCisKK2RlZiBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRz
LCB0eXBlLCBjb21wYXJhdG9yKQorICAgICMgVGhlIHJlc3VsdCBpcyBhIGJvb2xlYW4uICBIZW5j
ZSwgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGJhc2VkIG9uIHRoZSB0eXBlCisgICAgIyBvZiB0aGUg
YXJndW1lbnRzIGJlaW5nIGNvbXBhcmVkLgorICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1syXS5j
bFZhbHVlfSA9ICgje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tv
cDIgPSBvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSk7IgorZW5kCisKKyMgbWxhbSBCRUdJTiBE
RUJVRyBvbmx5CitkZWYgbWxhbUR1bXBDb21wYXJlQW5kQnJhbmNoQXJncyhvcGVyYW5kcywgdHlw
ZSwgY29tcGFyYXRvcikKKyAgICBjYXNlIHR5cGUKKyAgICB3aGVuIDppbnQsIDppbnQzMiwgOmlu
dDgKKyAgICAgICAgJGFzbS5wdXRjICIjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICRhc20ucHV0
YyAicHJpbnRmKFwiXFxuIG1sYW0gQ09NUEFSRSBsaHMgJWxkICVwICN7Y29tcGFyYXRvcn0gcmhz
ICVsZCAlcCA9PT4gcmVzdWx0ICVkXFxuXFxuXCIsIChpbnRwdHJfdCkje29wZXJhbmRzWzBdLmNs
VmFsdWUodHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKGludHB0
cl90KSN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICh2b2lkKikje29wZXJhbmRzWzFdLmNs
VmFsdWUodHlwZSl9LCAoI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9
ICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgICRhc20ucHV0YyAiI2Vu
ZGlmIC8vIG1sYW1fUFJJTlRGIgorICAgIHdoZW4gOnVpbnQsIDp1aW50MzIsIDp1aW50OAorICAg
ICAgICAkYXNtLnB1dGMgIiNpZiBtbGFtX1BSSU5URiIKKyAgICAgICAgJGFzbS5wdXRjICJwcmlu
dGYoXCJcXG4gbWxhbSBDT01QQVJFIGxocyAlbHUgJXAgI3tjb21wYXJhdG9yfSByaHMgJWx1ICVw
ID09PiByZXN1bHQgJWRcXG5cXG5cIiwgKHVpbnRwdHJfdCkje29wZXJhbmRzWzBdLmNsVmFsdWUo
dHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgKHVpbnRwdHJfdCkj
e29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAodm9pZCopI3tvcGVyYW5kc1sxXS5jbFZhbHVl
KHR5cGUpfSwgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29w
ZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KSk7IgorICAgICAgICAkYXNtLnB1dGMgIiNlbmRpZiAv
LyBtbGFtX1BSSU5URiIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICAgJGFzbS5wdXRjICIjaWYg
bWxhbV9QUklOVEYiCisgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwiXFxuIG1sYW0gQ09NUEFS
RSBsaHMgJWUgI3tjb21wYXJhdG9yfSByaHMgJWUgPT0+IHJlc3VsdCAlZFxcblxcblwiLCAje29w
ZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9LCAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9LCAo
I3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSAje2NvbXBhcmF0b3J9ICN7b3BlcmFuZHNbMV0u
Y2xWYWx1ZSh0eXBlKX0pKTsiCisgICAgICAgICRhc20ucHV0YyAiI2VuZGlmIC8vIG1sYW1fUFJJ
TlRGIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIk9vcHM6IHR5cGUgPSAje3R5cGV9IgorICAg
IGVuZAorZW5kCisjIG1sYW0gRU5EIERFQlVHIG9ubHkKKworZGVmIGNsb29wRW1pdENvbXBhcmVB
bmRCcmFuY2gob3BlcmFuZHMsIHR5cGUsIGNvbXBhcmF0b3IpCisgICAgIyBtbGFtRHVtcENvbXBh
cmVBbmRCcmFuY2hBcmdzKG9wZXJhbmRzLCB0eXBlLCBjb21wYXJhdG9yKQorICAgICRhc20ucHV0
YyAiaWYgKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29wZXJh
bmRzWzFdLmNsVmFsdWUodHlwZSl9KSIKKyAgICAkYXNtLnB1dGMgIiAgICBnb3RvICN7b3BlcmFu
ZHNbMl0uY0xhYmVsfTsiCitlbmQKKworCisjIGNvbmRpdGlvblRlc3Qgc2hvdWxkIGNvbnRhaW4g
YSBzdHJpbmcgdGhhdCBwcm92aWRlcyBhIGNvbXBhcmF0b3IgYW5kIGEgUkhTCisjIHZhbHVlIGUu
Zy4gIjwgMCIuCitkZWYgY2xvb3BHZW5lcmF0ZUNvbmRpdGlvbkV4cHJlc3Npb24ob3BlcmFuZHMs
IHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgb3AxID0gb3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBl
KQorCisgICAgIyBUaGUgb3BlcmFuZHMgbXVzdCBjb25zaXN0IG9mIDIgb3IgMyB2YWx1ZXMuCisg
ICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyICMgSnVzdCB0ZXN0IG9wMSBhZ2FpbnN0
IHRoZSBjb25kaXRpb25UZXN0LgorICAgICAgICBsaHMgPSBvcDEKKyAgICB3aGVuIDMgIyBNYXNr
IG9wMSB3aXRoIG9wMiBiZWZvcmUgdGVzdGluZyBhZ2FpbnN0IHRoZSBjb25kaXRpb25UZXN0Lgor
ICAgICAgICBsaHMgPSAiKCN7b3AxfSAmICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0pIgor
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290
ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAK
KyAgICAiI3tsaHN9ICN7Y29uZGl0aW9uVGVzdH0iCitlbmQKKworIyBjb25kaXRpb25UZXN0IHNo
b3VsZCBjb250YWluIGEgc3RyaW5nIHRoYXQgcHJvdmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJI
UworIyB2YWx1ZSBlLmcuICI8IDAiLgorZGVmIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVy
YW5kcywgdHlwZSwgY29uZGl0aW9uVGVzdCwgYnJhbmNoVGFyZ2V0KQorICAgIGNvbmRpdGlvbkV4
cHIgPSBjbG9vcEdlbmVyYXRlQ29uZGl0aW9uRXhwcmVzc2lvbihvcGVyYW5kcywgdHlwZSwgY29u
ZGl0aW9uVGVzdCkKKyAgICAkYXNtLnB1dGMgImlmICgje2NvbmRpdGlvbkV4cHJ9KSIKKyAgICAk
YXNtLnB1dGMgIiAgICBnb3RvICN7YnJhbmNoVGFyZ2V0fTsiCitlbmQKKworZGVmIGNsb29wRW1p
dFRlc3RTZXQob3BlcmFuZHMsIHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgIyBUaGUgcmVzdWx0
IGlzIGEgYm9vbGVhbiBjb25kaXRpb24uICBIZW5jZSwgdGhlIHJlc3VsdCB0eXBlIGlzIGFsd2F5
cyBhbgorICAgICMgaW50LiAgVGhlIHBhc3NlZCBpbiB0eXBlIGlzIG9ubHkgdXNlZCBmb3IgdGhl
IHZhbHVlcyBiZWluZyB0ZXN0ZWQgaW4KKyAgICAjIHRoZSBjb25kaXRpb24gdGVzdC4KKyAgICBj
b25kaXRpb25FeHByID0gY2xvb3BHZW5lcmF0ZUNvbmRpdGlvbkV4cHJlc3Npb24ob3BlcmFuZHMs
IHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWy0xXS5jbFZh
bHVlfSA9ICgje2NvbmRpdGlvbkV4cHJ9KTsiCitlbmQKKworZGVmIGNsb29wRW1pdE9wQW5kQnJh
bmNoKG9wZXJhbmRzLCBvcGVyYXRvciwgdHlwZSwgY29uZGl0aW9uVGVzdCkKKyAgICBjYXNlIHR5
cGUKKyAgICB3aGVuIDppbnQ7ICAgdGVtcFR5cGUgPSAiaW50cHRyX3QiCisgICAgd2hlbiA6aW50
MzI7IHRlbXBUeXBlID0gImludDMyX3QiCisgICAgZWxzZQorICAgICAgICByYWlzZSAiVW5pbXBs
ZW1lbnRlZCB0eXBlIgorICAgIGVuZAorCisgICAgb3AxID0gb3BlcmFuZHNbMF0uY2xWYWx1ZSh0
eXBlKQorICAgIG9wMiA9IG9wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSkKKworICAgICRhc20ucHV0
YyAieyIKKyAgICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSB0ZW1wID0gI3tvcDJ9ICN7b3Bl
cmF0b3J9ICN7b3AxfTsiCisgICAgJGFzbS5wdXRjICIgICAgaWYgKHRlbXAgI3tjb25kaXRpb25U
ZXN0fSkiCisgICAgJGFzbS5wdXRjICIgICAgICAgIGdvdG8gICN7b3BlcmFuZHNbMl0uY0xhYmVs
fTsiCisgICAgJGFzbS5wdXRjICIgICAgI3tvcDJ9ID0gdGVtcDsiCisgICAgJGFzbS5wdXRjICJ9
IgorZW5kCisKK2RlZiBjbG9vcEFkZE92ZXJmbG93VGVzdChvcGVyYW5kcywgdHlwZSkKKyAgICBj
YXNlIHR5cGUKKyAgICB3aGVuIDppbnQzMgorICAgICAgICB0ZW1wVHlwZSA9ICJpbnQzMl90Igor
ICAgICAgICBzaWduQml0ID0gIlNJR05fQklUMzIiCisgICAgZWxzZQorICAgICAgICByYWlzZSAi
VW5pbXBsZW1lbnRlZCB0eXBlIgorICAgIGVuZAorCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1w
VHlwZX0gYSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX07IgorICAgICRhc20ucHV0YyAi
ICAgICN7dGVtcFR5cGV9IGIgPSAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAk
YXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkgfCBPdmVyZmxvd3MgaWY6IgorICAgICRh
c20ucHV0YyAiICAgIC8vIDAgICAgICAgMCAgICAgICB8IHNpZ24oYithKSA9IDEgKHBvcyArIHBv
cyAhPSBuZWcpIgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAgMSAgICAgICB8IG5ldmVy
IgorICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAgMCAgICAgICB8IG5ldmVyIgorICAgICRh
c20ucHV0YyAiICAgIC8vIDEgICAgICAgMSAgICAgICB8IHNpZ24oYithKSA9IDAgKG5lZyArIG5l
ZyAhPSBwb3MpIgorICAgICIoKCN7c2lnbkJpdH0oYikgPT0gI3tzaWduQml0fShhKSkgJiYgKCN7
c2lnbkJpdH0oYithKSAhPSAje3NpZ25CaXR9KGEpKSkiCitlbmQKKworZGVmIGNsb29wU3ViT3Zl
cmZsb3dUZXN0KG9wZXJhbmRzLCB0eXBlKQorICAgIGNhc2UgdHlwZQorICAgIHdoZW4gOmludDMy
CisgICAgICAgIHRlbXBUeXBlID0gImludDMyX3QiCisgICAgICAgIHNpZ25CaXQgPSAiU0lHTl9C
SVQzMiIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJVbmltcGxlbWVudGVkIHR5cGUiCisgICAg
ZW5kCisKKyAgICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSBhID0gI3tvcGVyYW5kc1swXS5j
bFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYiA9ICN7b3Bl
cmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX07IgorICAgICRhc20ucHV0YyAiICAgIC8vIHNpZ24oYikg
c2lnbihhKSB8IE92ZXJmbG93cyBpZjoiCisgICAgJGFzbS5wdXRjICIgICAgLy8gMCAgICAgICAw
ICAgICAgIHwgbmV2ZXIiCisgICAgJGFzbS5wdXRjICIgICAgLy8gMCAgICAgICAxICAgICAgIHwg
c2lnbihiLWEpID0gMSAocG9zIC0gbmVnICE9IHBvcykiCisgICAgJGFzbS5wdXRjICIgICAgLy8g
MSAgICAgICAwICAgICAgIHwgc2lnbihiLWEpID0gMCAobmVnIC0gcG9zICE9IHBvcykiCisgICAg
JGFzbS5wdXRjICIgICAgLy8gMSAgICAgICAxICAgICAgIHwgbmV2ZXIiCisgICAgIigoI3tzaWdu
Qml0fShiKSAhPSAje3NpZ25CaXR9KGEpKSAmJiAoI3tzaWduQml0fShiLWEpID09ICN7c2lnbkJp
dH0oYSkpKSIKK2VuZAorCitkZWYgY2xvb3BNdWxPdmVyZmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUp
CisgICAgY2FzZSB0eXBlCisgICAgd2hlbiA6aW50MzIKKyAgICAgICAgdGVtcFR5cGUgPSAidWlu
dDMyX3QiCisgICAgZWxzZQorICAgICAgICByYWlzZSAiVW5pbXBsZW1lbnRlZCB0eXBlIgorICAg
IGVuZAorICAgICRhc20ucHV0YyAiICAgICN7dGVtcFR5cGV9IGEgPSAje29wZXJhbmRzWzBdLmNs
VmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSBiID0gI3tvcGVy
YW5kc1sxXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgIigoYiB8IGEpID4+IDE1KSIKK2VuZAorCitk
ZWYgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCBvcGVyYXRvciwgdHlw
ZSkKKyAgICAkYXNtLnB1dGMgInsiCisKKyAgICAjIEVtaXQgdGhlIG92ZXJmbG93IHRlc3QgYmFz
ZWQgb24gdGhlIG9wZXJhbmRzIGFuZCB0aGUgdHlwZToKKyAgICBjYXNlIG9wZXJhdG9yCisgICAg
d2hlbiAiKyI7IG92ZXJmbG93VGVzdCA9IGNsb29wQWRkT3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0
eXBlKQorICAgIHdoZW4gIi0iOyBvdmVyZmxvd1Rlc3QgPSBjbG9vcFN1Yk92ZXJmbG93VGVzdChv
cGVyYW5kcywgdHlwZSkKKyAgICB3aGVuICIqIjsgb3ZlcmZsb3dUZXN0ID0gY2xvb3BNdWxPdmVy
Zmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUpCisgICAgZWxzZQorICAgICAgICByYWlzZSAiVW5pbXBs
ZW1lbnRlZCBvcGVhcnRvciIKKyAgICBlbmQKKworICAgICRhc20ucHV0YyAiICAgIGlmICN7b3Zl
cmZsb3dUZXN0fSB7IgorICAgICMgJGFzbS5wdXRjICIgICAgICAgICNpZiBtbGFtX1BSSU5URiIK
KyAgICAjICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAjICRhc20ucHV0YyAiICAg
ICAgICBwcmludGYoXCIgICAgICBQb3RlbnRpYWwgI3tvcGVyYXRvcn0gb3ZlcmZsb3chISEhISBc
XG5cIik7IgorICAgICMgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cXG5cIik7IgorICAgICMgJGFzbS5wdXRj
ICIgICAgICAgICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAiICAgICAgICBn
b3RvICN7b3BlcmFuZHNbMl0uY0xhYmVsfTsiCisgICAgJGFzbS5wdXRjICIgICAgfSIKKyAgICAk
YXNtLnB1dGMgIiAgICAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKHR5cGUpfSAje29wZXJhdG9yfSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9
OyIKKyAgICAjICRhc20ucHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgIyAkYXNt
LnB1dGMgIiAgICAgICAgcHJpbnRmKFwiXFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PVxcblwiKTsiCisgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRm
KFwiICAgICAgI3tvcGVyYXRvcn0gcmVzdWx0ID0gJWQgXFxuXCIsICN7b3BlcmFuZHNbMV0uY2xW
YWx1ZSh0eXBlKX0pOyIKKyAgICAjICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXFxuXCIpOyIKKyAgICAjICRh
c20ucHV0YyAiICAgICAgICAjZW5kaWYgLy9tbGFtX1BSSU5URiIKKyAgICAkYXNtLnB1dGMgIn0i
CitlbmQKKworIyBvcGVyYW5kczogY2FsbFRhcmdldCwgY3VycmVudEZyYW1lLCBjdXJyZW50UEMK
K2RlZiBjbG9vcEVtaXRDYWxsU2xvd1BhdGgob3BlcmFuZHMpCisgICAgJGFzbS5wdXRjICJ7Igor
ICAgICRhc20ucHV0YyAiICAgIEV4ZWNTdGF0ZSogZXhlYyA9IENBU1Q8RXhlY1N0YXRlKj4oI3tv
cGVyYW5kc1sxXS5jbFZhbHVlKDp2b2lkUHRyKX0pOyIKKyAgICAkYXNtLnB1dGMgIiAgICBJbnN0
cnVjdGlvbiogcGMgPSBDQVNUPEluc3RydWN0aW9uKj4oI3tvcGVyYW5kc1syXS5jbFZhbHVlKDp2
b2lkUHRyKX0pOyIKKyAgICAkYXNtLnB1dGMgIiAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
ID0gI3tvcGVyYW5kc1swXS5jTGFiZWx9KGV4ZWMsIHBjKTsiCisgICAgJGFzbS5wdXRjICIgICAg
TExJbnQ6OmRlY29kZVJlc3VsdChyZXN1bHQsIHIwLmluc3RydWN0aW9uLCByMS5leGVjU3RhdGUp
OyIKKyAgICAjICRhc20ucHV0YyAiICAgIEFTU0VSVChjYWxsRnJhbWUgIT0gMCk7IC8vIG1sYW0g
REVCVUcgVEVTVCBvbmx5IgorICAgICMgJGFzbS5wdXRjICIgICAgI2lmIG1sYW1fUFJJTlRGIgor
ICAgICMgJGFzbS5wdXRjICIgICAgcHJpbnRmKFwibWxhbSBBRlRFUiBleGVjICVwIHBjICVwXFxu
XCIsIHIxLmV4ZWNTdGF0ZSwgcjAuaW5zdHJ1Y3Rpb24pOyIKKyAgICAjICRhc20ucHV0YyAiICAg
ICNlbmRpZiAvL21sYW1fUFJJTlRGIgorICAgICRhc20ucHV0YyAifSIKK2VuZAorCitjbGFzcyBJ
bnN0cnVjdGlvbgorICAgIGRlZiBsb3dlckNfTE9PUAorICAgICAgICBAbWxhbV9QUklOVEYgPSBm
YWxzZQorICAgICAgICAkYXNtLmNvZGVPcmlnaW4gY29kZU9yaWdpblN0cmluZyBpZiAkZW5hYmxl
Q29kZU9yaWdpbkNvbW1lbnRzCisgICAgICAgICRhc20uc291cmNlSW5zdHJ1Y3Rpb24gIiN7b3Bj
b2RlfSAje2NsT3BlcmFuZHMob3BlcmFuZHMpfTsiIGlmICRlbmFibGVTb3VyY2VJbnN0cnVjdGlv
bkR1bXAKKyAgICAgICAgJGFzbS5hbm5vdGF0aW9uIGFubm90YXRpb24gaWYgJGVuYWJsZUluc3Ry
QW5ub3RhdGlvbnMKKworICAgICAgICAjIG1sYW0gQkVHSU4KKyAgICAgICAgaWYgQG1sYW1fUFJJ
TlRGIGFuZCAob3Bjb2RlICE9ICJtbGFtRG8iKSBhbmQgKG9wY29kZSAhPSAibWxhbUR1bXAiKSBh
bmQgKG9wY29kZSAhPSAibG9jYWxBbm5vdGF0aW9uIikKKyAgICAgICAgICAgIG1sYW1Db21tZW50
ID0gYW5ub3RhdGlvbiA/ICJcXHRcXHQvLyAje2Fubm90YXRpb24uZ3N1YigiXCIiLCAiXFxcIiIp
fSIgOiAiIgorICAgICAgICAgICAgJGFzbS5wdXRjICIjaWYgVVNFKEpTVkFMVUUzMl82NCkiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBwcmludGYoXCIgICAgW3BjICVwIGZwICVwIGxyICVw
XSBBU00gI3tvcGNvZGV9ICN7Y2xPcGVyYW5kcyhvcGVyYW5kcyl9JXNcXG5cIiwgdlBDLCBjYWxs
RnJhbWUsIHJSZXRWUEMudnAsIFwiI3ttbGFtQ29tbWVudH1cIik7IgorICAgICAgICAgICAgJGFz
bS5wdXRjICIjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgIHByaW50ZihcIiAgICBbcGMgJXAgcGIgJXAgZnAgJXAgY2xyZnAgJXAgbHIgJXBdIEFTTSAj
e29wY29kZX0gI3tjbE9wZXJhbmRzKG9wZXJhbmRzKX0lc1xcblwiLCB2UEMsIHJCYXNlUEMudnAs
IGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpPzA6Y2FsbEZyYW1l
LT5jYWxsZXJGcmFtZSgpLCByUmV0VlBDLnZwLCBcIiN7bWxhbUNvbW1lbnR9XCIpOyIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpIgorICAgICAgICAgICAg
IyAkYXNtLnB1dGMgIiAgICBwcmludGYoXCIgICAgW3BjICVwIHBiICVwIGNzICVwIGZwICVwIGNs
cmZwICVwIGxyICVwXSBBU00gI3tvcGNvZGV9ICN7Y2xPcGVyYW5kcyhvcGVyYW5kcyl9XFxuXCIs
IHZQQywgckJhc2VQQy52cCwgKCFjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkgJiYg
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKSk/Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTowLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZs
YWcoKT8wOmNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSwgclJldFZQQy52cCk7IgorICAgICAgICBl
bmQKKyAgICAgICAgIyBtbGFtIEVORAorCisgICAgICAgIGNhc2Ugb3Bjb2RlCisgICAgICAgIHdo
ZW4gImFkZGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQz
MiwgIisiKQorICAgICAgICB3aGVuICJhZGRwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0
aW9uKG9wZXJhbmRzLCA6aW50LCAiKyIpCisKKyAgICAgICAgd2hlbiAiYW5kaSIKKyAgICAgICAg
ICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiJiIpCisgICAgICAgIHdo
ZW4gImFuZHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQs
ICImIikKKworICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRp
b24ob3BlcmFuZHMsIDppbnQzMiwgInwiKQorICAgICAgICB3aGVuICJvcnAiCisgICAgICAgICAg
ICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICJ8IikKKworICAgICAgICB3aGVu
ICJ4b3JpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIs
ICJeIikKKyAgICAgICAgd2hlbiAieG9ycCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlv
bihvcGVyYW5kcywgOmludCwgIl4iKQorCisgICAgICAgIHdoZW4gImxzaGlmdGkiCisgICAgICAg
ICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIjw8IikKKyAgICAgICAg
d2hlbiAibHNoaWZ0cCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywg
OmludCwgIjw8IikKKworICAgICAgICB3aGVuICJyc2hpZnRpIgorICAgICAgICAgICAgY2xvb3BF
bWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInJzaGlm
dHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQsICI+PiIp
CisKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRp
b24ob3BlcmFuZHMsIDp1aW50MzIsICI+PiIpCisgICAgICAgIHdoZW4gInVyc2hpZnRwIgorICAg
ICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6dWludCwgIj4+IikKKworICAg
ICAgICB3aGVuICJtdWxpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50MzIsICIqIikKKyAgICAgICAgd2hlbiAibXVscCIKKyAgICAgICAgICAgIGNsb29wRW1p
dE9wZXJhdGlvbihvcGVyYW5kcywgOmludCwgIioiKQorCisgICAgICAgIHdoZW4gInN1YmkiCisg
ICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIi0iKQorICAg
ICAgICB3aGVuICJzdWJwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50LCAiLSIpCisKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9ID0gLSN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSg6aW50MzIpfTsiCisgICAgICAgIHdoZW4gIm5lZ3AiCisgICAgICAgICAgICAkYXNtLnB1dGMg
IiN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50KX0gPSAtI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpp
bnQpfTsiCisKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9ID0gISN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
MzIpfTsiCisKKyAgICAgICAgd2hlbiAibG9hZGkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQzMk1lbVJlZn07
IgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50MzIp
fSA9ICN7b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIKKyAgICAgICAgICAgIGlmIEBtbGFtX1BS
SU5URgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAicHJpbnRmKFwibWxhbSA6OiBsb2FkaSAj
e29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gJXAgZnJvbSBhZGRyICN7b3BlcmFuZHNbMF0u
dWludDMyTWVtUmVmfSAlcFxcblwiLCAodm9pZCopI3tvcGVyYW5kc1sxXS5jbFZhbHVlfSwgJiN7
b3BlcmFuZHNbMF0udWludDMyTWVtUmVmfSk7IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdo
ZW4gImxvYWRpcyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVl
KDppbnQpfSA9ICN7b3BlcmFuZHNbMF0uaW50MzJNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9h
ZHAiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0g
PSAje29wZXJhbmRzWzBdLmludE1lbVJlZn07IgorICAgICAgICB3aGVuICJzdG9yZWkiCisgICAg
ICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmludDMyTWVtUmVmfSA9ICN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50KX07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29w
ZXJhbmRzWzFdLmludDMyTWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsi
CisgICAgICAgIHdoZW4gInN0b3JlcCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5k
c1sxXS5pbnRNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAg
IHdoZW4gImxvYWRiIgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQ4TWVtUmVmfTsiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRz
WzBdLnVpbnQ4TWVtUmVmfTsiCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQpfSA9ICN7b3BlcmFuZHNbMF0uaW50
OE1lbVJlZn07IgorICAgICAgICB3aGVuICJzdG9yZWIiCisgICAgICAgICAgICAjIG1sYW0gJGFz
bS5wdXRjICIje29wZXJhbmRzWzFdLnVpbnQ4TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0udWludDhNZW1S
ZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQ4KX0iCisgICAgICAgIHdoZW4gImxvYWRo
IgorICAgICAgICAgICAgIyBtbGFtICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1
aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQxNk1lbVJlZn07IgorICAgICAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS51aW50MTZN
ZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRjICIj
e29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5pbnQxNk1lbVJlZn07
IgorICAgICAgICB3aGVuICJzdG9yZWgiCisgICAgICAgICAgICAjIG1sYW0gJGFzbS5wdXRjICIq
I3tvcGVyYW5kc1sxXS51aW50MTZNZW1SZWZ9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQp
fTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIioje29wZXJhbmRzWzFdLnVpbnQxNk1lbVJlZn0g
PSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDE2KX07IgorICAgICAgICB3aGVuICJsb2FkZCIK
KyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSA9
ICN7b3BlcmFuZHNbMF0uZGJsTWVtUmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlZCIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5kYmxNZW1SZWZ9ID0gI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDpkb3VibGUpfTsiCisKKyAgICAgICAgd2hlbiAiYWRkZCIKKyAgICAgICAgICAg
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRvdWJsZSwgIisiKQorICAgICAgICB3aGVu
ICJkaXZkIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6ZG91Ymxl
LCAiLyIpCisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRp
b24ob3BlcmFuZHMsIDpkb3VibGUsICItIikKKyAgICAgICAgd2hlbiAibXVsZCIKKyAgICAgICAg
ICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmRvdWJsZSwgIioiKQorCisgICAgICAg
IHdoZW4gInNxcnRkIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFs
dWUoOmRvdWJsZSl9ID0gc3FydCgje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9KTsiCisg
ICAgICAgIHdoZW4gImNpMmQiICAjIENvbnZlcnQgYW4gaW50IHZhbHVlIHRvIGl0cyBkb3VibGUg
ZXF1aXZhbGVudC4KKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVl
KDpkb3VibGUpfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50MzIpfTsiCisgICAgICAgICAg
ICAjICRhc20ucHV0YyAiICAgICAgICAjaWYgbWxhbV9QUklOVEYiCisgICAgICAgICAgICAjICRh
c20ucHV0YyAiICAgICAgICBwcmludGYoXCJcXG5cXG4gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XFxuXCIpOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAg
ICAgIHByaW50ZihcIiAgICAgICN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJs
ZSl9ICVlID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlfSAlZCAoMHgleClcXG5cIiwgI3tvcGVyYW5k
c1sxXS5jbFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQzMil9LCAj
e29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX0pOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRj
ICIgICAgICAgIHByaW50ZihcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT1cXG5cXG5cIik7IgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgI2VuZGlm
IC8vIG1sYW1fUFJJTlRGIgorICAgICAgICAgICAgCisgICAgICAgIHdoZW4gImJkZXEiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPT0i
KQorICAgICAgICB3aGVuICJiZG5lcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRC
cmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICIhPSIpCisgICAgICAgIHdoZW4gImJkZ3QiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPiIp
OworICAgICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
QnJhbmNoKG9wZXJhbmRzLCA6ZG91YmxlLCAiPj0iKTsKKyAgICAgICAgd2hlbiAiYmRsdCIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI8
Iik7CisgICAgICAgIHdoZW4gImJkbHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI8PSIpOworCisgICAgICAgIHdoZW4gImJkZXF1
biIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFu
Y2gob3BlcmFuZHMsICI9PSIpCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAgICAgICAgICBj
bG9vcEVtaXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiIT0i
KQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlRG91
YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiPiIpCisgICAgICAgIHdoZW4gImJk
Z3RlcXVuIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0Fu
ZEJyYW5jaChvcGVyYW5kcywgIj49IikKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAgICAgICAg
ICAgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5jaChvcGVyYW5kcywg
IjwiKQorICAgICAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBh
cmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsICI8PSIpCisKKyAgICAgICAg
d2hlbiAiYnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8g
anVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgor
ICAgICAgICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAgICAgcmFp
c2UgIkNfTE9PUCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lu
fSIKKworICAgICAgICB3aGVuICJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJh
bmRzWzFdLmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfTsi
CisKKyAgICAgICAgd2hlbiAiYmNkMmkiICAjIG9wZXJhbmRzOiBzcmNEYmwgZHN0SW50IHNsb3dQ
YXRoCisgICAgICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICBkb3VibGUgZCA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6ZG91YmxlKX07IgorICAgICAgICAg
ICAgJGFzbS5wdXRjICIgICAgY29uc3QgaW50MzJfdCBhc0ludDMyID0gaW50MzJfdChkKTsiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAm
JiBzaWduYml0KGQpKSkgLy8gdHJ1ZSBmb3IgLTAuMCIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICAgICAgICAgJGFzbS5w
dXRjICIgICAgI3tvcGVyYW5kc1sxXS5jbFZhbHVlfSA9IGFzSW50MzI7IiAgICAgICAgICAgIAor
ICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorCisgICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRz
WzBdLmNsVmFsdWUoOmludCl9OyIKKyAgICAgICAgd2hlbiAic3hpMnAiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNs
VmFsdWUoOmludDMyKX07IgorICAgICAgICB3aGVuICJ6eGkycCIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOnVpbnQzMil9OyIKKyAgICAgICAgd2hlbiAibm9wIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIvLyBub3AiCisgICAgICAgIHdoZW4gImJiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIj09IikKKyAgICAgICAgd2hlbiAiYmllcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwg
Ij09IikKKyAgICAgICAgd2hlbiAiYnBlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRCcmFuY2gob3BlcmFuZHMsIDppbnQsICI9PSIpCisKKyAgICAgICAgd2hlbiAiYmJuZXEiCisg
ICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIiE9
IikKKyAgICAgICAgd2hlbiAiYmluZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5k
QnJhbmNoKG9wZXJhbmRzLCA6aW50MzIsICIhPSIpCisgICAgICAgIHdoZW4gImJwbmVxIgorICAg
ICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIiE9IikK
KworICAgICAgICB3aGVuICJiYmEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJh
bmNoKG9wZXJhbmRzLCA6dWludDgsICI+IikKKyAgICAgICAgd2hlbiAiYmlhIgorICAgICAgICAg
ICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQzMiwgIj4iKQorICAg
ICAgICB3aGVuICJicGEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9w
ZXJhbmRzLCA6dWludCwgIj4iKQorCisgICAgICAgIHdoZW4gImJiYWVxIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQ4LCAiPj0iKQorICAgICAg
ICB3aGVuICJiaWFlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3Bl
cmFuZHMsIDp1aW50MzIsICI+PSIpCisgICAgICAgIHdoZW4gImJwYWVxIgorICAgICAgICAgICAg
Y2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQsICI+PSIpCisKKyAgICAg
ICAgd2hlbiAiYmJiIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVy
YW5kcywgOnVpbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImJpYiIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50MzIsICI8IikKKyAgICAgICAgd2hl
biAiYnBiIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywg
OnVpbnQsICI8IikKKworICAgICAgICB3aGVuICJiYmJlcSIKKyAgICAgICAgICAgIGNsb29wRW1p
dENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAi
YmliZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6
dWludDMyLCAiPD0iKQorICAgICAgICB3aGVuICJicGJlcSIKKyAgICAgICAgICAgIGNsb29wRW1p
dENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50LCAiPD0iKQorCisgICAgICAgIHdoZW4g
ImJiZ3QiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6
aW50OCwgIj4iKQorICAgICAgICB3aGVuICJiaWd0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29t
cGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDMyLCAiPiIpCisgICAgICAgIHdoZW4gImJwZ3Qi
CisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50LCAi
PiIpCisKKyAgICAgICAgd2hlbiAiYmJndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI+PSIpCisgICAgICAgIHdoZW4gImJpZ3RlcSIK
KyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwg
Ij49IikKKyAgICAgICAgd2hlbiAiYnBndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIj49IikKKworICAgICAgICB3aGVuICJiYmx0Igor
ICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI8
IikKKyAgICAgICAgd2hlbiAiYmlsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRC
cmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIjwiKQorICAgICAgICB3aGVuICJicGx0IgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIjwiKQorCisg
ICAgICAgIHdoZW4gImJibHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDppbnQ4LCAiPD0iKQorICAgICAgICB3aGVuICJiaWx0ZXEiCisgICAgICAg
ICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50MzIsICI8PSIpCisg
ICAgICAgIHdoZW4gImJwbHRlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDppbnQsICI8PSIpCisKKyAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAg
ICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDgsICI9PSAwIiwgb3Bl
cmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpeiIKKyAgICAgICAgICAgIGNsb29w
RW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPT0gMCIsIG9wZXJhbmRzWy0x
XS5jTGFiZWwpCisgICAgICAgIHdoZW4gImJ0cHoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0
QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQsICI9PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkK
KworICAgICAgICB3aGVuICJidGJueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFu
Y2hJZihvcGVyYW5kcywgOmludDgsICIhPSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAg
ICAgd2hlbiAiYnRpbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3Bl
cmFuZHMsIDppbnQzMiwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorICAgICAgICB3aGVu
ICJidHBueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywg
OmludCwgIiE9IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorCisgICAgICAgICMgbWxhbSBVTlVT
RUQgd2hlbiAiYnRpbyIsICJidHBvIiwgImJ0Ym8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAg
ICMgbWxhbSBlbWl0Q1hYVGVzdChvcGVyYW5kcykKKyAgICAgICAgIyBtbGFtIFVOVVNFRCAgICAg
IyBtbGFtICRhc20ucHV0YyAiYnZzICN7b3BlcmFuZHNbLTFdLmNMYWJlbH0iCisgICAgICAgICMg
bWxhbSBVTlVTRUQgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgInZzIikg
IyBCcmFuY2ggaWYgb3ZlcmZsb3cuCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBj
bG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQ4LCAiPCAwIiwgb3BlcmFuZHNb
LTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRl
c3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJl
bCkKKyAgICAgICAgd2hlbiAiYnRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFu
Y2hJZihvcGVyYW5kcywgOmludCwgIjwgMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisKKyAgICAg
ICAgd2hlbiAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gTG9jYWxMYWJl
bFJlZmVyZW5jZSBvciBvcGVyYW5kc1swXS5pc19hPyBMYWJlbFJlZmVyZW5jZQorICAgICAgICAg
ICAgICAgICMgSGFuZGxlcyBqdW1wcyBsb2NhbCBvciBnbG9iYWwgbGFiZWxzLgorICAgICAgICAg
ICAgICAgICRhc20ucHV0YyAiZ290byAje29wZXJhbmRzWzBdLmNMYWJlbH07IgorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICMgSGFuZGxlcyBqdW1wcyB0byBzb21lIGEgY29tcHV0
ZWQgdGFyZ2V0LgorICAgICAgICAgICAgICAgICMgTk9URTogbXVzdCBiZSBhbiBvcGNvZGUgaGFu
ZGxlciBvciBhIGxsaW50IGdsdWUgaGVscGVyLgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAi
b3Bjb2RlID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpvcGNvZGUpfTsiCisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRjICJESVNQQVRDSF9PUENPREUoKTsiCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgd2hlbiAiY2FsbCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQ1JBU0goKTsgLy8gZ2VuZXJp
YyBjYWxsIG5vdCBzdXBwb3J0ZWQhIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/
CisgICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgICAgICRhc20ucHV0
YyAiICAgIHZvaWQgKCpmKSgpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KCN7b3BlcmFu
ZHNbMF0uY0xhYmVsfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICRhc20ucHV0YyAieyIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB2b2lk
ICgqZikoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPigje29wZXJhbmRzWzBdLmNsVmFs
dWUoOnZvaWRQdHIpfSk7IgorICAgICAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGYoKTsiCisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdo
ZW4gImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRjICJwcmludGYoXCJcXG4gQlJFQUsgaW5z
dHJ1Y3Rpb246IE5lZWQgdG8gaW1wbGVtZW50LiAgXFxuXCIpOyIKKyAgICAgICAgICAgICRhc20u
cHV0YyAiQ1JBU0goKTsgLy8gTm90IGhhbmRsZWQgeWV0LiIKKyAgICAgICAgd2hlbiAicmV0Igor
ICAgICAgICAgICAgJGFzbS5wdXRjICJnb3RvIGRvUmV0dXJuSGVscGVyOyIKKworICAgICAgICB3
aGVuICJjYmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywg
OnVpbnQ4LCAiPT0iKQorICAgICAgICB3aGVuICJjaWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0
Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwgIj09IikKKyAgICAgICAgd2hlbiAiY3Bl
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAi
PT0iKQorCisgICAgICAgIHdoZW4gImNibmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiIT0iKQorICAgICAgICB3aGVuICJjaW5lcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50MzIsICIhPSIp
CisgICAgICAgIHdoZW4gImNwbmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNl
dChvcGVyYW5kcywgOnVpbnQsICIhPSIpCisKKyAgICAgICAgd2hlbiAiY2JhIgorICAgICAgICAg
ICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiPiIpCisgICAgICAg
IHdoZW4gImNpYSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMs
IDp1aW50MzIsICI+IikKKyAgICAgICAgd2hlbiAiY3BhIgorICAgICAgICAgICAgY2xvb3BFbWl0
Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQsICI+IikKKworICAgICAgICB3aGVuICJjYmFl
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50OCwg
Ij49IikKKyAgICAgICAgd2hlbiAiY2lhZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJl
QW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPj0iKQorICAgICAgICB3aGVuICJjcGFlcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAiPj0iKQor
CisgICAgICAgIHdoZW4gImNiYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQo
b3BlcmFuZHMsIDp1aW50OCwgIjwiKQorICAgICAgICB3aGVuICJjaWIiCisgICAgICAgICAgICBj
bG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPCIpCisgICAgICAgIHdo
ZW4gImNwYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1
aW50LCAiPCIpCisKKyAgICAgICAgd2hlbiAiY2JiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDgsICI8PSIpCisgICAgICAgIHdoZW4gImNpYmVx
IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQzMiwg
Ijw9IikKKyAgICAgICAgd2hlbiAiY3BiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJl
QW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIjw9IikKKworICAgICAgICB3aGVuICJjYmd0IgorICAg
ICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludDgsICI+IikKKyAg
ICAgICAgd2hlbiAiY2lndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3Bl
cmFuZHMsIDppbnQzMiwgIj4iKQorICAgICAgICB3aGVuICJjcGd0IgorICAgICAgICAgICAgY2xv
b3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmludCwgIj4iKQorCisgICAgICAgIHdoZW4g
ImNiZ3RlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDpp
bnQ4LCAiPj0iKQorICAgICAgICB3aGVuICJjaWd0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI+PSIpCisgICAgICAgIHdoZW4gImNwZ3Rl
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQsICI+
PSIpCisKKyAgICAgICAgd2hlbiAiY2JsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRTZXQob3BlcmFuZHMsIDppbnQ4LCAiPCIpCisgICAgICAgIHdoZW4gImNpbHQiCisgICAgICAg
ICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI8IikKKyAgICAg
ICAgd2hlbiAiY3BsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFu
ZHMsIDppbnQsICI8IikKKworICAgICAgICB3aGVuICJjYmx0ZXEiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAi
Y2lsdGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOmlu
dDMyLCAiPD0iKQorICAgICAgICB3aGVuICJjcGx0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAiPD0iKQorCisgICAgICAgICMgbWxhbSBVTlVT
RUQgd2hlbiAidGlvIiwgInRibyIsICJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGNs
b29wRW1pdFRlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisKKyAgICAgICAgd2hlbiAidGJzIgorICAg
ICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDgsICI8IDAiKQorICAgICAg
ICB3aGVuICJ0aXMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50
MzIsICI8IDAiKQorICAgICAgICB3aGVuICJ0cHMiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0
U2V0KG9wZXJhbmRzLCA6aW50LCAiPCAwIikKKworICAgICAgICB3aGVuICJ0YnoiCisgICAgICAg
ICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIj09IDAiKQorICAgICAgICB3
aGVuICJ0aXoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50MzIs
ICI9PSAwIikKKyAgICAgICAgd2hlbiAidHB6IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNl
dChvcGVyYW5kcywgOmludCwgIj09IDAiKQorCisgICAgICAgIHdoZW4gInRibnoiCisgICAgICAg
ICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIiE9IDAiKQorICAgICAgICB3
aGVuICJ0aW56IgorICAgICAgICAgICAgY2xvb3BFbWl0VGVzdFNldChvcGVyYW5kcywgOmludDMy
LCAiIT0gMCIpCisgICAgICAgIHdoZW4gInRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0
U2V0KG9wZXJhbmRzLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiY2RxaSIKKyAgICAg
ICAgICAgICMgU2lnbiBleHRlbmQgdGhlIDMyIGJpdCBpbnQgdG8gYSBmdWxsIHdvcmQ6CisgICAg
ICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBpbnQ2NF90
IHRlbXAgPSByMC5pMzI7IC8vIHNpZ24gZXh0ZW5kIHRoZSBsb3cgMzJiaXQiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIiAgICByMC5pMzIgPSB0ZW1wOyAvLyBsb3cgd29yZCIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiICAgIHIxLmkzMiA9IHVpbnQ2NF90KHRlbXApID4+IDMyOyAvLyBoaWdoIHdv
cmQiCisgICAgICAgICAgICAkYXNtLnB1dGMgIn0iCisgICAgICAgIHdoZW4gImlkaXZpIgorICAg
ICAgICAgICAgIyBEaXZpZGUgcjEscjAgKEVEWCxFQVgpIGJ5IHRoZSBzcGVjaWZpZWQgYXJnLCBh
bmQgc3RvcmUgdGhlIHJlbWFpbmRlciBpbiByMSwKKyAgICAgICAgICAgICMgYW5kIHF1b3RpZW50
IGluIHIwOgorICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgaW50NjRfdCBkaXZpZGVuZCA9IChpbnQ2NF90KHIxLnUzMikgPDwgMzIpIHwgcjAudTMy
OyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgIGludDY0X3QgZGl2aXNvciA9ICN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6aW50KX07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgcjEuaTMy
ID0gZGl2aWRlbmQgJSBkaXZpc29yOyAvLyByZW1haW5kZXIiCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiAgICByMC5pMzIgPSBkaXZpZGVuZCAvIGRpdmlzb3I7IC8vIHF1b3RpZW50IgorICAgICAg
ICAgICAgJGFzbS5wdXRjICJ9IgorICAgICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1syXS5jbFZhbHVlKDpkb3VibGUpfSA9IEludHMyRG91YmxlKCN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludDMyKX0sICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dWlu
dDMyKX0pOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgICNpZiBtbGFtX1BSSU5U
RiIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgIHByaW50ZihcIlxcblxcbiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cIik7IgorICAgICAgICAg
ICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiICAgICAgI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMl0uY2xWYWx1ZSg6ZG91YmxlKX0gJWUgPSBJbnRzMkRvdWJsZSgje29wZXJhbmRzWzBdLmNs
VmFsdWUoOnVpbnQzMil9IDB4JWx4LCAje29wZXJhbmRzWzFdLmNsVmFsdWUoOnVpbnQzMil9IDB4
JWx4fSlcXG5cIiwgI3tvcGVyYW5kc1syXS5jbFZhbHVlKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDp1aW50MzIpfSwgI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDp1aW50MzIpfSk7Igor
ICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwiID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcblwiKTsiCisgICAgICAgICAgICAjICRh
c20ucHV0YyAiICAgICAgICAjZW5kaWYgLy8gbWxhbV9QUklOVEYiCisgICAgICAgIHdoZW4gImZk
MmlpIgorICAgICAgICAgICAgJGFzbS5wdXRjICJEb3VibGUySW50cygje29wZXJhbmRzWzBdLmNs
VmFsdWUoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLmNsVmFsdWV9LCAje29wZXJhbmRzWzJdLmNs
VmFsdWV9KTsiCisgICAgICAgIHdoZW4gImZwMmQiICAjIENvcHkgYSBiaXQtZW5jb2RlZC1kb3Vi
bGUgaW4gYW4gaW50cHRyIHRvIGEgZG91YmxlIHN0b3JhZ2UuCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmNhc3RUb0RvdWJsZSl9OyIKKyAgICAgICAgICAgICMgaWYgQG1sYW1fUFJJTlRGCisgICAg
ICAgICAgICAjICAgICAkYXNtLnB1dGMgInByaW50ZihcIiAgICN7b3BlcmFuZHNbMV0uY2xWYWx1
ZSg6ZG91YmxlKX0gPSAlZVxcblwiLCAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9KTsi
CisgICAgICAgICAgICAjIGVuZAorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgI2lm
IG1sYW1fUFJJTlRGIgorICAgICAgICAgICAgIyAkYXNtLnB1dGMgIiAgICAgICAgcHJpbnRmKFwi
XFxuXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTsi
CisgICAgICAgICAgICAjICRhc20ucHV0YyAiICAgICAgICBwcmludGYoXCIgICAgICAje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSAlZSA9ICN7b3BlcmFuZHNbMF0uY2xW
YWx1ZSg6dWludCl9IDB4JWx4XFxuXCIsICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWludCl9KTsiCisgICAgICAgICAgICAjICRhc20ucHV0
YyAiICAgICAgICBwcmludGYoXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09XFxuXFxuXCIpOyIKKyAgICAgICAgICAgICMgJGFzbS5wdXRjICIgICAgICAgICNlbmRp
ZiAvLyBtbGFtX1BSSU5URiIKKworICAgICAgICB3aGVuICJmZDJwIiAgIyBDb3B5IGEgZG91Ymxl
IGFzIGEgYml0LWVuY29kZWQtZG91YmxlIGludG8gYW4gaW50cHRyIHN0b3JhZ2UuCisgICAgICAg
ICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dm9pZFB0cil9ID0gI3tvcGVy
YW5kc1swXS5jbFZhbHVlKDpjYXN0VG9Wb2lkUHRyKX07IgorICAgICAgICB3aGVuICJsZWFpIgor
ICAgICAgICAgICAgb3BlcmFuZHNbMF0uY2xvb3BFbWl0TGVhKG9wZXJhbmRzWzFdLCA6aW50MzIp
CisgICAgICAgIHdoZW4gImxlYXAiCisgICAgICAgICAgICBvcGVyYW5kc1swXS5jbG9vcEVtaXRM
ZWEob3BlcmFuZHNbMV0sIDppbnQpCisKKyAgICAgICAgd2hlbiAiYmFkZGlvIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKyIsIDppbnQzMikK
KyAgICAgICAgd2hlbiAiYnN1YmlvIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJ
Zk92ZXJmbG93KG9wZXJhbmRzLCAiLSIsIDppbnQzMikKKyAgICAgICAgd2hlbiAiYm11bGlvIgor
ICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKiIs
IDppbnQzMikKKworICAgICAgICB3aGVuICJiYWRkaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRP
cEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJi
YWRkaXoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6
aW50MzIsICI9PSAwIikKKyAgICAgICAgd2hlbiAiYmFkZGlueiIKKyAgICAgICAgICAgIGNsb29w
RW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAg
IHdoZW4gImJhZGRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRz
LCAiKyIsIDppbnQsICI8IDAiKQorICAgICAgICB3aGVuICJiYWRkcHoiCisgICAgICAgICAgICBj
bG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50LCAiPT0gMCIpCisgICAgICAg
IHdoZW4gImJhZGRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5k
cywgIisiLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiYnN1YmlzIgorICAgICAgICAg
ICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMsICItIiwgOmludDMyLCAiPCAwIikKKyAg
ICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3Bl
cmFuZHMsICItIiwgOmludDMyLCAiPT0gMCIpCisgICAgICAgIHdoZW4gImJzdWJpbnoiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIi0iLCA6aW50MzIsICIhPSAw
IikKKworICAgICAgICB3aGVuICJib3JyaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJy
YW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJib3JyaXoi
CisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIs
ICI9PSAwIikKKyAgICAgICAgd2hlbiAiYm9ycmlueiIKKyAgICAgICAgICAgIGNsb29wRW1pdE9w
QW5kQnJhbmNoKG9wZXJhbmRzLCAifCIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAgIHdoZW4g
ImN4eENyYXNoIgorICAgICAgICAgICAgJGFzbS5wdXRjICJDUkFTSCgpOyIKKworICAgICAgICB3
aGVuICJjeHhDYWxsSlNGdW5jdGlvbiIKKyAgICAgICAgICAgICMgbWxhbSAkYXNtLnB1dGMgInJS
ZXRWUEMudnAgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludEJhZE5hdGl2ZVJldHVybik7IiAj
IG1sYW0gZm9yIFRFU1QgcmV0dXJuUEMgb25seQorICAgICAgICAgICAgJGFzbS5wdXRjICJvcGNv
ZGUgPSBMTEludE9wY29kZSgje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludCl9KTsiCisgICAgICAg
ICAgICAkYXNtLnB1dGMgImdvdG8gZG9DYWxsSGVscGVyOyIKKworICAgICAgICB3aGVuICJjeHhD
YWxsTmF0aXZlIgorICAgICAgICAgICAgaWYgQG1sYW1fUFJJTlRGCisgICAgICAgICAgICAgICAg
JGFzbS5wdXRjICJwcmludGYoXCJcXG4qKioqKioqKioqKioqKioqKioqKioqKiogbWxhbSBjeHhD
YWxsTmF0aXZlKClcXG5cXG5cIik7IgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAkYXNt
LnB1dGMgIm5hdGl2ZUZ1bmMgPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOm5hdGl2ZUZ1bmMpfTsi
CisgICAgICAgICAgICAkYXNtLnB1dGMgImZ1bmN0aW9uUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUobmF0aXZlRnVuYyhyMC5leGVjU3RhdGUpKTsiCisgICAgICAgICAgICBpZiBAbWxhbV9Q
UklOVEYKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgInByaW50ZihcIlxcbioqKioqKioqKioq
KioqKioqKioqKioqKiBtbGFtIGN4eENhbGxOYXRpdmUoKSBSRVRVUk5lZFxcblxcblwiKTsiCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2lmIFVTRShKU1ZBTFVFMzJf
NjQpIgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgcjEuaSA9IGZ1bmN0aW9uUmV0dXJuVmFs
dWUudGFnKCk7IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgcjAuaSA9IGZ1bmN0aW9uUmV0
dXJuVmFsdWUucGF5bG9hZCgpOyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI2Vsc2UgLy8gVVNF
X0pTVkFMVUU2NCkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICByMC5lbmNvZGVkSlNWYWx1
ZSA9IEpTVmFsdWU6OmVuY29kZShmdW5jdGlvblJldHVyblZhbHVlKTsiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiNlbmRpZiAvLyBVU0VfSlNWQUxVRTY0KSIgICAgICAgICAgICAKKworICAgICAg
ICB3aGVuICJjeHhDYWxsU2xvd1BhdGgiCisgICAgICAgICAgICBjbG9vcEVtaXRDYWxsU2xvd1Bh
dGgob3BlcmFuZHMpCisKKyAgICAgICAgd2hlbiAiY3h4VHJhY2UiCisgICAgICAgICAgICAkYXNt
LnB1dGNUcmFjZUxhc3RHbG9iYWxMYWJlbAorCisgICAgICAgIHdoZW4gIm1sYW1CcmVhayIKKyAg
ICAgICAgICAgICRhc20ucHV0YyAibWxhbUJyZWFrKFwibWxhbUJyZWFrXCIsIF9fRklMRV9fLCBf
X0xJTkVfXyk7IgorICAgICAgICB3aGVuICJtbGFtRG8iCisgICAgICAgICAgICAkYXNtLmFubm90
YXRpb24gbmlsCisgICAgICAgICAgICBpZiBAbWxhbV9QUklOVEYKKyAgICAgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7YW5ub3RhdGlvbn0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAi
bWxhbUR1bXAiCisgICAgICAgICAgICAkYXNtLmFubm90YXRpb24gbmlsCisgICAgICAgICAgICBp
ZiBAbWxhbV9QUklOVEYKKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgInByaW50ZihcIiAqKiog
I3tvcGVyYW5kc1swXS5jbFZhbHVlfSA9ICVsZCAlcFxcblwiLCAje29wZXJhbmRzWzBdLmNsVmFs
dWV9LCAje29wZXJhbmRzWzBdLmNsVmFsdWUoOnZvaWRQdHIpfSk7IgorICAgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvd2VyRGVmYXVsdAorICAgICAgICBlbmQKKyAg
ICBlbmQKK2VuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmln
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZp
Zy5yYgkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vY29uZmlnLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKICMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0kcHJlZmVycmVkQ29t
bWVudFN0YXJ0Q29sdW1uID0gNzAKKyRwcmVmZXJyZWRDb21tZW50U3RhcnRDb2x1bW4gPSA2Mgog
CiAKICMgVHVybnMgb24gZHVtcGluZyBvZiB0aGUgY291bnQgb2YgbGFiZWxzLgpAQCAtNDMsNyAr
NDMsNyBAQCAkZW5hYmxlTGFiZWxDb3VudENvbW1lbnRzID0gZmFsc2UKICMgICAgIlx0bW92bCA1
MiglcmN4KSwgJWVjeFxuIiAgIC8vIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206MTg2CiAjICAgIC4uLgogIwotJGVuYWJsZUNvZGVPcmlnaW5Db21tZW50cyA9
IHRydWUKKyRlbmFibGVDb2RlT3JpZ2luQ29tbWVudHMgPSBmYWxzZQogCiAjIFR1cm5zIG9uIHJl
Y29yZGluZyBhbmQgZHVtcGluZyBvZiBhbm5vdGF0aW9ucyBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1
dCBmaWxlLgogIyBBbiBhbm5vdGF0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGZvciBlYWNoIGluc3Ry
dWN0aW9uIGluIHRoZSBzb3VyY2UgYXNtIGZpbGVzLgpAQCAtNTQsNCArNTQsNCBAQCAkZW5hYmxl
Q29kZU9yaWdpbkNvbW1lbnRzID0gdHJ1ZQogIyAgICAiXHRtb3ZsIDUyKCVyY3gpLCAlZWN4XG4i
ICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCiAjICAgICAuLi4KICMK
LSRlbmFibGVJbnN0ckFubm90YXRpb25zID0gZmFsc2UKKyRlbmFibGVJbnN0ckFubm90YXRpb25z
ID0gdHJ1ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiArMjEx
LDkgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgImJueiIsCiAgICAgICJsZWFpIiwKICAg
ICAgImxlYXAiLAorICAgICAibWxhbUJyZWFrIiwgICAgICAjIG5vIG9wZXJhbmRzIC4uLiBmb3Ig
ZGVidWdnaW5nIG9ubHkKKyAgICAgIm1sYW1EbyIsICAgICAgICAgIyBubyBvcGVyYW5kcworICAg
ICAibWxhbUR1bXAiLCAgICAgICAjIG9wZXJhbmRzOiB2YWx1ZVRvRHVtcAogICAgIF0KIAogWDg2
X0lOU1RSVUNUSU9OUyA9CkBAIC0yMjcsNyArMjMwLDE2IEBAIEFSTXY3X0lOU1RSVUNUSU9OUyA9
CiAgICAgICJvcmlzIgogICAgIF0KIAotSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05T
ICsgWDg2X0lOU1RSVUNUSU9OUyArIEFSTXY3X0lOU1RSVUNUSU9OUworQ1hYX0lOU1RSVUNUSU9O
UyA9CisgICAgWworICAgICAiY3h4Q3Jhc2giLCAgICAgICAgICAgIyBubyBvcGVyYW5kcworICAg
ICAiY3h4Q2FsbEpTRnVuY3Rpb24iLCAgIyBvcGVyYW5kczogY2FsbGVlCisgICAgICJjeHhDYWxs
TmF0aXZlIiwgICAgICAjIG9wZXJhbmRzOiBjYWxsZWUKKyAgICAgImN4eENhbGxTbG93UGF0aCIs
ICAgICMgb3BlcmFuZHM6IGNhbGxUYXJnZXQsIGN1cnJlbnRGcmFtZSwgY3VycmVudFBDCisgICAg
ICJjeHhUcmFjZSIsICAgICAgICAgICAjIG5vIG9wZXJhbmRzCisgICAgXQorCitJTlNUUlVDVElP
TlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJV
Q1RJT05TICsgQ1hYX0lOU1RSVUNUSU9OUwogCiBJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNv
cHkpCkBAIC04MzUsMTAgKzgzNSwxMCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQogICAgICAgICB3aGVuICJiYmx0ZXEiCiAg
ICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCi0gICAgICAgIHdo
ZW4gImJ0aW8iCi0gICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCi0g
ICAgICAgIHdoZW4gImJ0cG8iCi0gICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIs
IDpwdHIpCisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAiYnRpbyIKKyAgICAgICAgIyBtbGFt
IFVOVVNFRCAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgICAgICAjIG1s
YW0gVU5VU0VEIHdoZW4gImJ0cG8iCisgICAgICAgICMgbWxhbSBVTlVTRUQgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpvIiwgOnB0cikKICAgICAgICAgd2hlbiAiYnRpcyIKICAgICAgICAgICAg
IGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKICAgICAgICAgd2hlbiAiYnRwcyIKQEAg
LTg1MSw4ICs4NTEsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgiam56IiwgOmludCkKICAgICAgICAgd2hlbiAiYnRwbnoiCiAgICAgICAgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6cHRyKQotICAgICAgICB3aGVuICJidGJvIgot
ICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICAgICAgIyBt
bGFtIFVOVVNFRCB3aGVuICJidGJvIgorICAgICAgICAjIG1sYW0gVU5VU0VEICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImJ0YnMiCiAgICAgICAgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQogICAgICAgICB3aGVuICJidGJ6IgpA
QCAtOTY3LDI0ICs5NjcsMjQgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImNwbHRlcSIK
ICAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOnB0cikKLSAgICAg
ICAgd2hlbiAidGlvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQp
CisgICAgICAgICMgbWxhbSBVTlVTRUQgd2hlbiAidGlvIgorICAgICAgICAjIG1sYW0gVU5VU0VE
ICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQogICAgICAgICB3aGVuICJ0aXMiCiAg
ICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKICAgICAgICAgd2hlbiAi
dGl6IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCiAgICAgICAg
IHdoZW4gInRpbnoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQp
Ci0gICAgICAgIHdoZW4gInRwbyIKLSAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8i
LCA6cHRyKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRwbyIKKyAgICAgICAgIyBtbGFt
IFVOVVNFRCAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpwdHIpCiAgICAgICAgIHdoZW4g
InRwcyIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6cHRyKQogICAgICAg
ICB3aGVuICJ0cHoiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOnB0cikK
ICAgICAgICAgd2hlbiAidHBueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56
IiwgOnB0cikKLSAgICAgICAgd2hlbiAidGJvIgotICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0byIsIDpieXRlKQorICAgICAgICAjIG1sYW0gVU5VU0VEIHdoZW4gInRibyIKKyAgICAg
ICAgIyBtbGFtIFVOVVNFRCAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQogICAg
ICAgICB3aGVuICJ0YnMiCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5
dGUpCiAgICAgICAgIHdoZW4gInRieiIKQEAgLTEwMjcsNiArMTAyNyw4IEBAIGNsYXNzIEluc3Ry
dWN0aW9uCiAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS54ODZBZGRy
ZXNzT3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCiAgICAg
ICAgIHdoZW4gImxlYXAiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KDpw
dHIpfSAje29wZXJhbmRzWzBdLng4NkFkZHJlc3NPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpwdHIpfSIKKyAgICAgICAgd2hlbiAibWxhbUJyZWFrIiwgIm1sYW1EbyIs
ICJtbGFtRHVtcCIKKyAgICAgICAgICAgICMgRG8gbm90aGluZwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBsb3dlckRlZmF1bHQKICAgICAgICAgZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMjU1MDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgIlZNSW5zcGVjdG9yLmgiIC8vIG1sYW0KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc4Nywx
OCArNzg4LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAg
ICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwogICAg
ICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENhY2hlZENh
bGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKKyAgICAgICAgLy8gbWxhbSBCRUdJTiBERUJVRwor
ICAgICAgICAvL0NhbGxGcmFtZUNsb3N1cmUmIG1sYW1DbG9zdXJlID0gY2FjaGVkQ2FsbC5jbG9z
dXJlKCk7CisgICAgICAgIC8vVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShtbGFtQ2xvc3VyZS5uZXdD
YWxsRnJhbWUsICJtbGFtIEEiKTsKKyAgICAgICAgLy8gbWxhbSBFTkQKICAgICAgICAgZm9yICg7
IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKICAgICAgICAgICAg
IGlmICghYXJyYXktPmNhbkdldEluZGV4KGspKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgSlNWYWx1ZSB2ID0gYXJyYXktPmdldEluZGV4KGspOworICAgICAgICAgICAgLy9W
TUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG1sYW1DbG9zdXJlLm5ld0NhbGxGcmFtZSwgIm1sYW0gQiIp
OwogICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFwcGx5VGhpcyk7CisgICAgICAgICAg
ICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1lLCAibWxh
bSBDIik7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIHYpOworICAgICAg
ICAgICAgLy9WTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG1sYW1DbG9zdXJlLm5ld0NhbGxGcmFtZSwg
Im1sYW0gRCIpOwogICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgxLCBqc051bWJl
cihrKSk7CisgICAgICAgICAgICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUu
bmV3Q2FsbEZyYW1lLCAibWxhbSBFIik7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3Vt
ZW50KDIsIHRoaXNPYmopOworICAgICAgICAgICAgLy9WTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG1s
YW1DbG9zdXJlLm5ld0NhbGxGcmFtZSwgIm1sYW0gRiIpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOworICAgICAgICAgICAgLy9W
TUluc3BlY3Rvcjo6ZHVtcEZyYW1lKG1sYW1DbG9zdXJlLm5ld0NhbGxGcmFtZSwgIm1sYW0gRyIp
OwogICAgICAgICAgICAgaWYgKHJlc3VsdC50b0Jvb2xlYW4oKSkKICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgZmlsdGVySW5kZXgrKywgdik7CisgICAg
ICAgICAgICAvL1ZNSW5zcGVjdG9yOjpkdW1wRnJhbWUobWxhbUNsb3N1cmUubmV3Q2FsbEZyYW1l
LCAibWxhbSBIIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGsgPT0gbGVuZ3RoKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMTI1NTA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBtbGFtIGV2YWx1YXRlX21sYW1D
b21wbGV0aW9uCiBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwpAQCAtNzIsNyArNzMsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhl
YywgU2NvcGVDCiAgICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgIHRoaXNWYWx1ZSA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsK
ICAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYyk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKHByb2dyYW0s
IGV4ZWMsIHNjb3BlQ2hhaW4sIHRoaXNPYmopOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZV9tbGFtUChwcm9ncmFtLCBleGVjLCBzY29wZUNoYWluLCB0
aGlzT2JqKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhl
Y1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCks
IEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwogCisgICAgaW5saW5lIEpTVmFsdWUgZXZhbHVhdGVf
bWxhbUNvbXBsZXRpb24oRXhlY1N0YXRlKiBlLCBTY29wZUNoYWluTm9kZSogcywgY29uc3QgU291
cmNlQ29kZSYgYywgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCksIEpTVmFsdWUqIGV4Y2Vw
dGlvbiA9IDApIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGUsIHMsIGMsIHRoaXNWYWx1ZSwg
ZXhjZXB0aW9uKTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQ29t
cGxldGlvbl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDggQEAgdm9pZCBF
eGVjdXRhYmxlQmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbAogCiB2b2lkIEV4ZWN1dGFibGVCYXNl
OjpjbGVhckNvZGUoKQogewotI2lmIEVOQUJMRShKSVQpCisvLyBtbGFtICNpZiBFTkFCTEUoSklU
KQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICBtX2ppdENvZGVGb3JDYWxs
LmNsZWFyKCk7CiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CkBAIC01
MTQsOCArNTE1LDEwIEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IK
ICAgICBBU1NFUlQoKGppdFR5cGUgPT0gSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKSA9PSAhbV9j
b2RlQmxvY2tGb3JDYWxsKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uOwogICAgIE93blB0cjxG
dW5jdGlvbkNvZGVCbG9jaz4gbmV3Q29kZUJsb2NrID0gcHJvZHVjZUNvZGVCbG9ja0ZvcihzY29w
ZUNoYWluTm9kZSwgISFtX2NvZGVCbG9ja0ZvckNhbGwgPyBPcHRpbWl6aW5nQ29tcGlsYXRpb24g
OiBGaXJzdENvbXBpbGF0aW9uLCBDb2RlRm9yQ2FsbCwgZXhjZXB0aW9uKTsKLSAgICBpZiAoIW5l
d0NvZGVCbG9jaykKKyAgICBpZiAoIW5ld0NvZGVCbG9jaykgeworICAgICAgICBwcmludGYoIlxu
XG4gbWxhbSBFWENFUFRJT04gQCAlcyAlczolZFxuXG4iLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9f
LCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CisgICAgfQogCiAgICAgbmV3
Q29kZUJsb2NrLT5zZXRBbHRlcm5hdGl2ZShzdGF0aWNfcG9pbnRlcl9jYXN0PENvZGVCbG9jaz4o
bV9jb2RlQmxvY2tGb3JDYWxsLnJlbGVhc2UoKSkpOwogICAgIG1fY29kZUJsb2NrRm9yQ2FsbCA9
IG5ld0NvZGVCbG9jay5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGNs
ZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqKTsKIAotI2lmIEVOQUJMRShKSVQpCisjaWYg
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgSklUQ29kZSYgZ2Vu
ZXJhdGVkSklUQ29kZUZvckNhbGwoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9q
aXRDb2RlRm9yQ2FsbCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEV4ZWN1dGFibGVCYXNlKiBtX3ByZXY7CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBtX25l
eHQ7CiAKLSNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgICAgIEpJVENvZGUgbV9qaXRDb2RlRm9yQ2FsbDsKICAgICAgICAgSklUQ29k
ZSBtX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBt
X2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7CkBAIC0yMzYsNyArMjM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9D
X0xPT1ApIC8vIG1sYW0KICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFnbG9i
YWxEYXRhLmNhblVzZUpJVCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNp
bmNsdWRlICJMTGludERhdGEuaCIgLy8gbWxhbSBVc2UgYSBMTEludC5oIGluc3RlYWQ/Pz8gIE9y
IHJlbmFtZT8KICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgi
CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTYxLDYgKzYyLDkgQEAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZ09uY2UoKQogICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmluaXRpYWxp
emVBbGxvY2F0b3IoKTsKICNlbmRpZgogICAgIFJlZ2lzdGVyRmlsZTo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBMTEludDo6RGF0YTo6aW5pdGlhbGl6ZSgp
OworI2VuZGlmCiB9CiAKIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEy
NTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3MSwxMiArMzcxLDEzIEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpT
R2xvYmFsRGF0YTo6Z2V0SG9zdEYKICAgICBBU1NFUlQoY2FuVXNlSklUKCkpOwogICAgIHJldHVy
biBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1Yih0aGlzLCBmdW5jdGlvbiwgaW50cmluc2ljICE9
IE5vSW50cmluc2ljID8gdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoaW50cmluc2ljKSA6IDAs
IGludHJpbnNpYyk7CiB9Ci0jZWxzZQorCisjZWxzZSAvLyAhRU5BQkxFKEpJVCkKIE5hdGl2ZUV4
ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsKICAgICByZXR1cm4gTmF0aXZl
RXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogfQotI2Vu
ZGlmCisjZW5kaWYgLy8gIUVOQUJMRShKSVQpCiAKIEpTR2xvYmFsRGF0YTo6Q2xpZW50RGF0YTo6
fkNsaWVudERhdGEoKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw2ICs3NCw3IEBACiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJT
dHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIlZNSW5z
cGVjdG9yLmgiIC8vIG1sYW0KIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmx1dC5oIgogCkBA
IC0xNDIsNiArMTQzLDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRo
aXMKICAgICBtX2dsb2JhbFNjb3BlQ2hhaW4uc2V0KGdsb2JhbERhdGEoKSwgdGhpcywgU2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZSgwLCB0aGlzLCAmZ2xvYmFsRGF0YSgpLCB0aGlzLCB0aGlzVmFsdWUp
KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCktPmluaXQoMCwgMCwgbV9nbG9i
YWxTY29wZUNoYWluLmdldCgpLCBDYWxsRnJhbWU6Om5vQ2FsbGVyKCksIDAsIDApOworICAgIC8v
IG1sYW0gQkVHSU4KKyAgICAjaWYgbWxhbV9QUklOVEYKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcEZy
YW1lKEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCksICIgID4+PiBQVVNIRUQgdG8gbmV3ICIs
IDAsIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAjZW5kaWYKKyAgICAv
LyBtbGFtIEVORAogCiAgICAgbV9kZWJ1Z2dlciA9IDA7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxh
dGl2ZUpJVDsKICNlbmRpZgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnQ6OkRhdGE7CisgICAg
ICAgIC8vIG1sYW0gQkVHSU4KKyAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOworICAg
ICAgICAvLyBtbGFtIEVORAogCiAgICAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBA
IC0xNjYsNiArMTY5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFs
dWUodW5zaWduZWQgbG9uZyk7CiAgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUobG9uZyBsb25nKTsK
ICAgICAgICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcpOworICAgICAgICAv
LyBtbGFtIEJFR0lOIC4uLiBuZWVkIHRvIG1ha2UgdGhpcyBhIHNwZWNpYWwgcHJpdmlsZWdlZCBv
cGVyYXRpb24uCisgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUoaW50MzJfdCB0YWcsIGludDMyX3Qg
cGF5bG9hZCk7CisgICAgICAgIC8vIG1sYW0gRU5ECiAKICAgICAgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNv
bnN0OwpAQCAtMjcyLDYgKzI3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNv
bnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CisgICAgICAgIC8vIFRoZSBMTElOVCBDIExvb3AgbmVlZHMgdG8gYWNjZXNzIHRoZSB0YWcgYW5k
IHBheWxvYWQgZGlyZWN0bHkuCisgICAgcHVibGljOgorI2VuZGlmCiAgICAgICAgIC8qCiAgICAg
ICAgICAqIE9uIDMyLWJpdCBwbGF0Zm9ybXMgVVNFKEpTVkFMVUUzMl82NCkgc2hvdWxkIGJlIGRl
ZmluZWQsIGFuZCB3ZSB1c2UgYSBOYU4tZW5jb2RlZAogICAgICAgICAgKiBmb3JtIGZvciBpbW1l
ZGlhdGVzLgpAQCAtMjkyLDYgKzMwMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICov
CiAgICAgICAgIHVpbnQzMl90IHRhZygpIGNvbnN0OwogICAgICAgICBpbnQzMl90IHBheWxvYWQo
KSBjb25zdDsKKworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgcHJpdmF0ZToKKyNlbmRp
ZgorCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAvKgogICAgICAgICAgKiBPbiA2NC1i
aXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVFNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNl
IGEgTmFOLWVuY29kZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWVJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzA3LDYgKzMwNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdS5hc0Jp
dHMucGF5bG9hZCA9IGk7CiAgICAgfQogCisgICAgLy8gbWxhbSBCRUdJTiBGSVhNRSAuLi4gbmVl
ZCB0byBtYWtlIHRoaXMgYSBzcGVjaWFsIHByaXZpbGVnZWQgb3BlcmF0aW9uLgorICAgIGlubGlu
ZSBKU1ZhbHVlOjpKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpCisgICAgewor
ICAgICAgICB1LmFzQml0cy50YWcgPSB0YWc7CisgICAgICAgIHUuYXNCaXRzLnBheWxvYWQgPSBw
YXlsb2FkOworICAgIH0KKyAgICAvLyBtbGFtIEVORCAqLworCiAgICAgaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNOdW1iZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzIoKSB8
fCBpc0RvdWJsZSgpOwpAQCAtMzIzLDcgKzMzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gcGF5bG9hZCgpOwogICAgIH0KIAotI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkK
KyNlbHNlIC8vICFVU0UoSlNWQUxVRTMyXzY0KQogCiAgICAgLy8gSlNWYWx1ZSBtZW1iZXIgZnVu
Y3Rpb25zLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxNSBAQCB2b2lkIE9wdGlvbnM6
OmluaXRpYWxpemUoKQogICAgIDsgLy8gRGVjb25mdXNlIGVkaXRvcnMgdGhhdCBkbyBhdXRvIGlu
ZGVudGF0aW9uCiAjZW5kaWYKICAgICAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKSAvLyBtbGFt
CisgICAgdXNlSklUKCkgPSBmYWxzZTsKKyAgICB1c2VERkdKSVQoKSA9IGZhbHNlOworI2VuZGlm
IC8vIG1sYW0KKyAgICAvLyBtbGFtIEJFR0lOIHRlc3QKKyAgICB1c2VKSVQoKSA9IGZhbHNlOwor
ICAgIHVzZURGR0pJVCgpID0gZmFsc2U7CisgICAgLy8gbWxhbSBFTkQgdGVzdAorCiAgICAgLy8g
RG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0byB0aGUg
b3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAo
KSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VSVCh0aHJl
c2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVTb29u
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZp
c2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNiArNDAxLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVN
YXRjaE9ubHkoSlNHbG9iYWxEYQogICAgIH0KIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKKy8vICNl
cnJvciBtbGFtIFlheSEgR290IFlBUlJfSklUCiAgICAgaWYgKCFwYXR0ZXJuLm1fY29udGFpbnNC
YWNrcmVmZXJlbmNlcyAmJiBnbG9iYWxEYXRhLT5jYW5Vc2VSZWdFeHBKSVQoKSkgewogICAgICAg
ICBZYXJyOjpqaXRDb21waWxlKHBhdHRlcm4sIGNoYXJTaXplLCBnbG9iYWxEYXRhLCBtX3JlZ0V4
cEpJVENvZGUsIFlhcnI6Ok1hdGNoT25seSk7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVHKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2Vy
LmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0
b3IuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODksNiArOTAsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
I2lmIG1sYW1fUFJJTlRGCisgICAgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZShleGVjLCAiICoqKiBy
ZWdFeHBQcm90b0Z1bmNFeGVjKCkiKTsKKyAgICAjZW5kaWYKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygm
UmVnRXhwT2JqZWN0OjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTAgQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAor
Ly8gbWxhbSBCRUdJTiB0ZXN0Cit1bnNpZ25lZCBCeXRlVGVybTo6bWxhbUJ5dGVUZXJtSWQgPSAw
OworLy8gbWxhbSBFTkQgdGVzdAorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KIGNsYXNz
IEludGVycHJldGVyIHsKIHB1YmxpYzoKQEAgLTcyOCw2ICs3MzIsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRl
cm5PbmNlRW5kKTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eUNvdW50ID09IDEp
OwogCisgICAgICAgICNpZiBtbGFtX1BSSU5URgorICAgICAgICBwcmludGYoIiAqKiogYmFja3Ry
YWNrUGFyZW50aGVzZXNPbmNlRW5kKHRlcm0gJXAsIGNvbnRleHQgJXApXG4iLCAodm9pZCopdGVy
bS5tbGFtSWQsIGNvbnRleHQpOworICAgICAgICAjZW5kaWYKICAgICAgICAgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzT25jZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJ
bmZvUGFyZW50aGVzZXNPbmNlKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24p
OwogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1YW50aXR5VHlwZSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJKHJldmlzaW9uIDEy
NTUwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTMgQEAKICNpZm5kZWYgWWFyckludGVycHJldGVy
X2gKICNkZWZpbmUgWWFyckludGVycHJldGVyX2gKIAorI2luY2x1ZGUgImNvbmZpZy5oIiAvLyBt
bGFtCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAorI2RlZmluZSBtbGFtX1BSSU5U
Rl9yZWdleCBtbGFtX1BSSU5URgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIEJ1bXBQb2ludGVy
QWxsb2NhdG9yOwogfQpAQCAtMTA2LDYgKzEwOSwxMCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAg
IGJvb2wgbV9jYXB0dXJlIDogMTsKICAgICBib29sIG1faW52ZXJ0IDogMTsKICAgICB1bnNpZ25l
ZCBpbnB1dFBvc2l0aW9uOworICAgIC8vIG1sYW0gQkVHSU4gdGVzdAorICAgIHVuc2lnbmVkIG1s
YW1JZDsKKyAgICBzdGF0aWMgdW5zaWduZWQgbWxhbUJ5dGVUZXJtSWQ7CisgICAgLy8gbWxhbSBF
TkQgdGVzdAogCiAgICAgQnl0ZVRlcm0oVUNoYXIgY2gsIGludCBpbnB1dFBvcywgdW5zaWduZWQg
ZnJhbWVMb2NhdGlvbiwgQ2hlY2tlZDx1bnNpZ25lZD4gcXVhbnRpdHlDb3VudCwgUXVhbnRpZmll
clR5cGUgcXVhbnRpdHlUeXBlKQogICAgICAgICA6IGZyYW1lTG9jYXRpb24oZnJhbWVMb2NhdGlv
bikKQEAgLTEyOCw2ICsxMzUsMTAgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5x
dWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9
IHF1YW50aXR5Q291bnQudW5zYWZlR2V0KCk7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1
dFBvczsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3JlZ2V4CisgICAgICAgIG1sYW1JZCA9ICsr
bWxhbUJ5dGVUZXJtSWQ7CisgICAgICAgIHByaW50ZigiICUlJSBtbGFtIHRoaXMoJXApLmlucHV0
UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopbWxhbUJ5dGVUZXJtSWQsIGlucHV0
UG9zaXRpb24sICh2b2lkKilpbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsK
KyAgICAgICAgI2VuZGlmCiAgICAgfQogCiAgICAgQnl0ZVRlcm0oVUNoYXIgbG8sIFVDaGFyIGhp
LCBpbnQgaW5wdXRQb3MsIHVuc2lnbmVkIGZyYW1lTG9jYXRpb24sIENoZWNrZWQ8dW5zaWduZWQ+
IHF1YW50aXR5Q291bnQsIFF1YW50aWZpZXJUeXBlIHF1YW50aXR5VHlwZSkKQEAgLTE1Miw2ICsx
NjMsMTAgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgYXRvbS5xdWFudGl0eVR5cGUgPSBx
dWFudGl0eVR5cGU7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9IHF1YW50aXR5Q291bnQu
dW5zYWZlR2V0KCk7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKKyAgICAgICAg
I2lmIG1sYW1fUFJJTlRGX3JlZ2V4CisgICAgICAgIG1sYW1JZCA9ICsrbWxhbUJ5dGVUZXJtSWQ7
CisgICAgICAgIHByaW50ZigiICUlJSBtbGFtIHRoaXMoJXApLmlucHV0UG9zaXRpb24gPSAldSAl
cCBAICVzOiVkXG4iLCAodm9pZCopbWxhbUJ5dGVUZXJtSWQsIGlucHV0UG9zaXRpb24sICh2b2lk
KilpbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgI2VuZGlm
CiAgICAgfQogCiAgICAgQnl0ZVRlcm0oQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzLCBi
b29sIGludmVydCwgaW50IGlucHV0UG9zKQpAQCAtMTYzLDYgKzE3OCwxMCBAQCBzdHJ1Y3QgQnl0
ZVRlcm0gewogICAgICAgICBhdG9tLnF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50
OwogICAgICAgICBhdG9tLnF1YW50aXR5Q291bnQgPSAxOwogICAgICAgICBpbnB1dFBvc2l0aW9u
ID0gaW5wdXRQb3M7CisgICAgICAgICNpZiBtbGFtX1BSSU5URl9yZWdleAorICAgICAgICBtbGFt
SWQgPSArK21sYW1CeXRlVGVybUlkOworICAgICAgICBwcmludGYoIiAlJSUgbWxhbSB0aGlzKCVw
KS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKW1sYW1CeXRlVGVybUlk
LCBpbnB1dFBvc2l0aW9uLCAodm9pZCopaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJ
TkVfXyk7CisgICAgICAgICNlbmRpZgogICAgIH0KIAogICAgIEJ5dGVUZXJtKFR5cGUgdHlwZSwg
dW5zaWduZWQgc3VicGF0dGVybklkLCBCeXRlRGlzanVuY3Rpb24qIHBhcmVudGhlc2VzSW5mbywg
Ym9vbCBjYXB0dXJlLCBpbnQgaW5wdXRQb3MpCkBAIC0xNzUsNiArMTk0LDEwIEBAIHN0cnVjdCBC
eXRlVGVybSB7CiAgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291
bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9IDE7CiAgICAgICAgIGlucHV0UG9zaXRp
b24gPSBpbnB1dFBvczsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3JlZ2V4CisgICAgICAgIG1s
YW1JZCA9ICsrbWxhbUJ5dGVUZXJtSWQ7CisgICAgICAgIHByaW50ZigiICUlJSBtbGFtIHRoaXMo
JXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopbWxhbUJ5dGVUZXJt
SWQsIGlucHV0UG9zaXRpb24sICh2b2lkKilpbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9f
TElORV9fKTsKKyAgICAgICAgI2VuZGlmCiAgICAgfQogICAgIAogICAgIEJ5dGVUZXJtKFR5cGUg
dHlwZSwgYm9vbCBpbnZlcnQgPSBmYWxzZSkKQEAgLTE4NCw2ICsyMDcsMTEgQEAgc3RydWN0IEJ5
dGVUZXJtIHsKICAgICB7CiAgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZp
eGVkQ291bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9IDE7CisgICAgICAgICNpZiBt
bGFtX1BSSU5URl9yZWdleAorICAgICAgICBpbnB1dFBvc2l0aW9uID0gMHhjYWZlYmFiZTsgLy8g
bWxhbSBURVNUCisgICAgICAgIG1sYW1JZCA9ICsrbWxhbUJ5dGVUZXJtSWQ7CisgICAgICAgIHBy
aW50ZigiICUlJSBtbGFtIHRoaXMoJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4i
LCAodm9pZCopbWxhbUJ5dGVUZXJtSWQsIGlucHV0UG9zaXRpb24sICh2b2lkKilpbnB1dFBvc2l0
aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgI2VuZGlmCiAgICAgfQogCiAg
ICAgQnl0ZVRlcm0oVHlwZSB0eXBlLCB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQsIGJvb2wgY2FwdHVy
ZSwgYm9vbCBpbnZlcnQsIGludCBpbnB1dFBvcykKQEAgLTE5NSwxMiArMjIzLDI0IEBAIHN0cnVj
dCBCeXRlVGVybSB7CiAgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVk
Q291bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlDb3VudCA9IDE7CiAgICAgICAgIGlucHV0UG9z
aXRpb24gPSBpbnB1dFBvczsKKyAgICAgICAgI2lmIG1sYW1fUFJJTlRGX3JlZ2V4CisgICAgICAg
IG1sYW1JZCA9ICsrbWxhbUJ5dGVUZXJtSWQ7CisgICAgICAgIHByaW50ZigiICUlJSBtbGFtIHRo
aXMoJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopbWxhbUJ5dGVU
ZXJtSWQsIGlucHV0UG9zaXRpb24sICh2b2lkKilpbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18s
IF9fTElORV9fKTsKKyAgICAgICAgLyogbWxhbSBpZiAobWxhbUlkID09IDE2NikgeworICAgICAg
ICAgICAgaW50KiBwID0gMDsKKyAgICAgICAgICAgICpwID0gMDsKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgICAgICB9ICovCisgICAgICAgICNlbmRpZgogICAgIH0KIAogICAgIHN0YXRp
YyBCeXRlVGVybSBCT0woaW50IGlucHV0UG9zKQogICAgIHsKICAgICAgICAgQnl0ZVRlcm0gdGVy
bShUeXBlQXNzZXJ0aW9uQk9MKTsKICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5wdXRQ
b3M7CisgICAgICAgICNpZiBtbGFtX1BSSU5URl9yZWdleAorICAgICAgICBwcmludGYoIiAlJSUg
bWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRl
cm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24s
IF9fRlVOQ1RJT05fXywgX19MSU5FX18pOworICAgICAgICAjZW5kaWYKICAgICAgICAgcmV0dXJu
IHRlcm07CiAgICAgfQogCkBAIC0yMjIsNiArMjYyLDkgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAg
ICB7CiAgICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZUFzc2VydGlvbkVPTCk7CiAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxhbV9QUklOVEZfcmVn
ZXgKKyAgICAgICAgcHJpbnRmKCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1
ICVwIEAgJXM6JWRcbiIsICh2b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAo
dm9pZCopdGVybS5pbnB1dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAg
ICAgI2VuZGlmCiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KIApAQCAtMjI5LDYgKzI3Miw5
IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgewogICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGVB
c3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CiAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlv
biA9IGlucHV0UG9zOworICAgICAgICAjaWYgbWxhbV9QUklOVEZfcmVnZXgKKyAgICAgICAgcHJp
bnRmKCIgJSUlIG1sYW0gdGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIs
ICh2b2lkKil0ZXJtLm1sYW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAodm9pZCopdGVybS5pbnB1
dFBvc2l0aW9uLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKKyAgICAgICAgI2VuZGlmCiAgICAg
ICAgIHJldHVybiB0ZXJtOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHJldmlzaW9uIDEyNTUwNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcyLDEw
ICs1NzIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFz
c2VydGlvbkVPTDoKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25X
b3JkQm91bmRhcnk6CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVu
dElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgLy9wcmludGYoIiAl
JSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQq
KXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRp
b24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKICAgICAgICAg
ICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVH
ZXQoKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0
UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5w
dXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJ
TkVfXyk7CiAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxG
cmFtZVNpemU7CiAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0
YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTsKICAgICAgICAgICAgICAgICBh
bHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSBmYWxzZTsKQEAgLTU4Niw2ICs1ODgsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFj
dGVyOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBv
c2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIC8vcHJpbnRmKCIgJSUlIG1sYW0g
dGVybSglcCkuaW5wdXRQb3NpdGlvbiA9ICV1ICVwIEAgJXM6JWRcbiIsICh2b2lkKil0ZXJtLm1s
YW1JZCwgdGVybS5pbnB1dFBvc2l0aW9uLCAodm9pZCopdGVybS5pbnB1dFBvc2l0aW9uLCBfX0ZV
TkNUSU9OX18sIF9fTElORV9fKTsKICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5
cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5m
cmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1Bh
dHRlcm5DaGFyYWN0ZXI7CkBAIC01OTYsNiArNTk5LDcgQEAgcHVibGljOgogCiAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICAgICAg
dGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7Cisg
ICAgICAgICAgICAgICAgLy9wcmludGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9u
ID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRp
b24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwog
ICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRD
b3VudCkgewogICAgICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50
Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUg
Kz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQ2hhcmFjdGVyQ2xhc3M7CkBAIC02MTUs
MTIgKzYxOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRJbnB1dFBvc2l0aW9uICs9IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1f
bWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1
cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICAvL3By
aW50ZigiICUlJSBtbGFtIHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4i
LCAodm9pZCopdGVybS5tbGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5w
dXRQb3NpdGlvbiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICh0ZXJtLnBhcmVudGhlc2VzLmlzVGVybWluYWwpIHsKICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXNUZXJtaW5hbDsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFt
ZVNpemUgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoIiAl
JSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQq
KXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRp
b24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0
aW9uLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICAvL3ByaW50ZigiICUlJSBtbGFt
IHRlcm0oJXApLmlucHV0UG9zaXRpb24gPSAldSAlcCBAICVzOiVkXG4iLCAodm9pZCopdGVybS5t
bGFtSWQsIHRlcm0uaW5wdXRQb3NpdGlvbiwgKHZvaWQqKXRlcm0uaW5wdXRQb3NpdGlvbiwgX19G
VU5DVElPTl9fLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICAgICAgICAgIHNldHVwRGlzanVuY3Rp
b25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIDAsIGN1cnJlbnRJbnB1dFBv
c2l0aW9uLnVuc2FmZUdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFt
ZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNjMwLDYgKzYzNyw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246CiAgICAgICAgICAg
ICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0
KCk7CisgICAgICAgICAgICAgICAgLy9wcmludGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBv
c2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwgKHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0
UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5F
X18pOwogICAgICAgICAgICAgICAgIHRlcm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJh
bWVTaXplOwogICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplID0gc2V0dXBEaXNq
dW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxG
cmFtZVNpemUgKyBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC02MzcsNiArNjQ1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZURvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICAgICAgYWx0ZXJu
YXRpdmUtPm1faGFzRml4ZWRTaXplID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1
dFBvc2l0aW9uID0gaW5pdGlhbElucHV0UG9zaXRpb247CisgICAgICAgICAgICAgICAgLy9wcmlu
dGYoIiAlJSUgbWxhbSB0ZXJtKCVwKS5pbnB1dFBvc2l0aW9uID0gJXUgJXAgQCAlczolZFxuIiwg
KHZvaWQqKXRlcm0ubWxhbUlkLCB0ZXJtLmlucHV0UG9zaXRpb24sICh2b2lkKil0ZXJtLmlucHV0
UG9zaXRpb24sIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEy
NTUwNikKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDExIEBACiAvKiBJbmNsdWRlIGNvbXBpbGVyIHNwZWNpZmljIG1hY3JvcyAqLwogI2lu
Y2x1ZGUgPHd0Zi9Db21waWxlci5oPgogCisvLyBtbGFtIEJFR0lOCisjZGVmaW5lIEVOQUJMRV9K
SVQgMAorLy8jZGVmaW5lIEVOQUJMRV9ZQVJSX0pJVCAwCisvLyBtbGFtIEVORAorCiAvKiA9PT09
IFBMQVRGT1JNIGhhbmRsZXMgT1MsIG9wZXJhdGluZyBlbnZpcm9ubWVudCwgZ3JhcGhpY3MgQVBJ
LCBhbmQKICAgIENQVS4gVGhpcyBtYWNybyB3aWxsIGJlIHBoYXNlZCBvdXQgaW4gZmF2b3Igb2Yg
cGxhdGZvcm0gYWRhcHRhdGlvbgogICAgbWFjcm9zLCBwb2xpY3kgZGVjaXNpb24gbWFjcm9zLCBh
bmQgdG9wLWxldmVsIHBvcnQgZGVmaW5pdGlvbnMuID09PT0gKi8KQEAgLTg5Myw2ICs4OTgsMjAg
QEAKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpKQog
I2RlZmluZSBFTkFCTEVfTExJTlQgMQogI2VuZGlmCisvLyBtbGFtIEJFR0lOCisjaWYgIUVOQUJM
RShKSVQpCisvLyoKKyAgICAjZGVmaW5lIEVOQUJMRV9DTEFTU0lDX0lOVEVSUFJFVEVSIDAKKyAg
ICAjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisgICAgI2RlZmluZSBFTkFCTEVfTExJTlRfQ19MT09Q
IDEKKyAgICAvLyAjZGVmaW5lIEVOQUJMRV9ZQVJSX0pJVCAxCisvKi8KKyAgICAjZGVmaW5lIEVO
QUJMRV9DTEFTU0lDX0lOVEVSUFJFVEVSIDEKKyAgICAjZGVmaW5lIEVOQUJMRV9ZQVJSX0pJVCAx
CisvLyovCisgICAgI2RlZmluZSBFTkFCTEVfREZHX0pJVCAwCisjZW5kaWYKKy8vIG1sYW0gRU5E
ICovCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVu
YWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBh
bmQgR05VL0xpbnV4LiAqLwpAQCAtOTMyLDEwICs5NTEsMTEgQEAKICNlbmRpZgogCiAvKiBFbnN1
cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxl
ZC4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVfQ0xBU1NJQ19JTlRFUlBSRVRFUikgJiYgIUVOQUJM
RShKSVQpCisjaWYgIWRlZmluZWQoRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFFTkFC
TEUoSklUKSAmJiAhRU5BQkxFKExMSU5UKQogI2RlZmluZSBFTkFCTEVfQ0xBU1NJQ19JTlRFUlBS
RVRFUiAxCiAjZW5kaWYKLSNpZiAhKEVOQUJMRShKSVQpIHx8IEVOQUJMRShDTEFTU0lDX0lOVEVS
UFJFVEVSKSkKKy8vIG1sYW0gb3JpZyAjaWYgIShFTkFCTEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJ
Q19JTlRFUlBSRVRFUikpCisjaWYgIShFTkFCTEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRF
UlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKICNlcnJvciBZb3UgaGF2ZSB0byBoYXZlIGF0IGxl
YXN0IG9uZSBleGVjdXRpb24gbW9kZWwgZW5hYmxlZCB0byBidWlsZCBKU0MKICNlbmRpZgogCkBA
IC05NjAsNyArOTgwLDggQEAKICNkZWZpbmUgRU5BQkxFX1JFR0VYUF9UUkFDSU5HIDAKIAogLyog
WWV0IEFub3RoZXIgUmVnZXggUnVudGltZSAtIHR1cm5lZCBvbiBieSBkZWZhdWx0IGZvciBKSVQg
ZW5hYmxlZCBwb3J0cy4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVfWUFSUl9KSVQpICYmIEVOQUJM
RShKSVQpICYmICFQTEFURk9STShDSFJPTUlVTSkKKy8vIG1sYW0gb3JpZyAjaWYgIWRlZmluZWQo
RU5BQkxFX1lBUlJfSklUKSAmJiBFTkFCTEUoSklUKSAmJiAhUExBVEZPUk0oQ0hST01JVU0pCisj
aWYgIWRlZmluZWQoRU5BQkxFX1lBUlJfSklUKSAmJiAoRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExM
SU5UX0NfTE9PUCkpICYmICFQTEFURk9STShDSFJPTUlVTSkKICNkZWZpbmUgRU5BQkxFX1lBUlJf
SklUIDEKIAogLyogU2V0dGluZyB0aGlzIGZsYWcgY29tcGFyZXMgSklUIHJlc3VsdHMgd2l0aCBp
bnRlcnByZXRlciByZXN1bHRzLiAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDEyNTUwNikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHJldHVybiBKU0M6OmV2YWx1YXRlKGV4ZWMsIGNoYWlu
LCBzb3VyY2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6ZXZh
bHVhdGVfbWxhbUNvbXBsZXRpb24oZXhlYywgY2hhaW4sIHNvdXJjZSwgdGhpc1ZhbHVlLCBleGNl
cHRpb24pOwogICAgIH07CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTI1NTA2KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wg
X05QTl9FdmFsdWF0ZShOUFAgaW5zdGFuY2UsIE5QT2JqZWMKICAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAgICAgICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBjb252ZXJ0TlBTdHJp
bmdUb1VURjE2KHMpOwogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpT
Qzo6ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9v
dE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShz
Y3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7CisgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFs
dWUgPSBKU0M6OmV2YWx1YXRlX21sYW1Db21wbGV0aW9uKHJvb3RPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29w
ZUNoYWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAg
ICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJldHVyblZhbHVlLCB2YXJpYW50
KTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE0
LDcgKzMxNCw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpldmFsKGpzdHJpbmcgc2NyaXAKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0
YSgpKTsKICAgICAKICAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgp
LnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1
YXRlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoSmF2YVN0cmlu
ZyhzY3JpcHQpLmltcGwoKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0ZV9t
bGFtQ29tcGxldGlvbihyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBy
b290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNl
KEphdmFTdHJpbmcoc2NyaXB0KS5pbXBsKCkpKTsKICAgICByb290T2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgIHJldHVybiBj
b252ZXJ0VmFsdWVUb0pPYmplY3QocmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5oCShyZXZpc2lvbiAxMjU1MDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsOSBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogI2RlZmlu
ZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogCisvLyBtbGFtIEJFR0lOCisjaW5jbHVk
ZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisvLyBtbGFtIEVORAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTR2xvYmFsRGF0YS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161822</attachid>
            <date>2012-09-01 03:55:34 -0700</date>
            <delta_ts>2012-09-01 10:36:29 -0700</delta_ts>
            <desc>Fix.</desc>
            <filename>bug-91052.patch</filename>
            <type>text/plain</type>
            <size>92824</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEyLTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBM
TEludCBDIGxvb3AgYmFja2VuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMDUyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxs
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAoSklUU3RhY2tGcmFtZSk6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAqIGxsaW50L0xMSW50Q0xvb3AuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpDTG9vcDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpDTG9vcDo6Y2F0Y2hSb3V0aW5lRm9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkNMb29wOjpob3N0Q29kZUVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkNMb29wOjpqc0NvZGVFbnRyeVdpdGhBcml0eUNoZWNrRm9yKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkNMb29wOjpqc0NvZGVFbnRyeUZvcik6CisgICAgICAgICogbGxpbnQvTExJbnRD
TG9vcC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAg
IChDTG9vcCk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludE9wY29kZS5oOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNw
cDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkludHMyRG91YmxlKToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OkNMb29wOjpleGVjdXRlKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjoKKyAgICAgICAgKiBvZmZs
aW5lYXNtL2JhY2tlbmRzLnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vY2xvb3AucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoRXhlY3V0YWJsZUJhc2UpOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQmFzZTo6aG9zdENvZGVFbnRyeUZvcik6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjpqc0NvZGVFbnRyeUZvcik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNl
Ojpqc0NvZGVXaXRoQXJpdHlDaGVja0VudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUJhc2U6OmNhdGNoUm91dGluZUZvcik6CisgICAgICAgIChOYXRpdmVFeGVjdXRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWVJbmxpbmVN
ZXRob2RzLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVl
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKwogMjAxMi0wOS0wMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJvbGxlZCBiYWNrIGluIGEgcGllY2Ugb2YgPGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNzI5Mz4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTI3MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcx
NSw2ICs3MTUsOCBAQAogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87
IH07CiAJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEy
RUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OworCQlGRTIwQ0U5RTE1RjA0QTk1
MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTRBMzMx
RjE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZN
SW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5z
cGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkVEMjg3
QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJ
bnRPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTUwOSw2ICsxNTExLDggQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJl
Z0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2
MEY3IC8qIEpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7
IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJbnRDTG9v
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0
RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBMzMx
RTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY0Niw2ICsxNjUwLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi8sCisJCQkJRkUy
MENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovLAorCQkJCUZFMjBDRTlD
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8sCiAJCQkJNUREREY0NDYxNEZFRTcy
MjAwQjRGQjREIC8qIExMSW50RGVzaXJlZE9mZnNldHMuaCAqLywKIAkJCQkwRjBCODM5NTE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCiAJCQkJMEYwQjgzOTYxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKQEAgLTI1MTksNiArMjUyNSw3
IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFy
a2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0
MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxMTIyRTIxNUREOUFCMzAw
NzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFNTI2
QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIx
MTIyRTMxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZU1ldGhvZHMuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzQ5NSw2ICszNTAyLDcgQEAKIAkJCQkxNDg3NEFFMzE1RUJERTRBMDAyRTM1
ODcgLyogSlNOYW1lU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4NzRBRTUxNUVCREU0
QTAwMkUzNTg3IC8qIEpTU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MjU2NjExNUVE
RTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMjBD
RTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDEyNzM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUwLDYgKzE1NTAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNp
ZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUKGZhbHNlKTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLgorI2VuZGlmCiAgICAgfQog
fQogCkBAIC0yNjM4LDggKzI2NDIsMjEgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldChFeGVjUwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0ocmV0
dXJuQWRkcmVzcyk7CiAjaWYgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgIC8vIFdoZW4gdXNpbmcgdGhlIEpJVCwgd2UgY291bGQgaGF2ZSBhZGRyZXNzZXMgdGhh
dCBhcmUgbm90IGJ5dGVjb2RlCisgICAgLy8gYWRkcmVzc2VzLiBXZSBjaGVjayBpZiB0aGUgcmV0
dXJuIGFkZHJlc3MgaXMgaW4gdGhlIExMaW50IGdsdWUgYW5kCisgICAgLy8gb3Bjb2RlIGhhbmRs
ZXJzIHJhbmdlIGhlcmUgdG8gZW5zdXJlIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgYnl0ZWNvZGUK
KyAgICAvLyBiZWZvcmUgYXR0ZW1wdGluZyB0byBjb252ZXJ0IHRoZSByZXR1cm4gYWRkcmVzcyBp
bnRvIGEgYnl0ZWNvZGUgb2Zmc2V0LgorICAgIC8vCisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhl
IEMgTG9vcCBMTEludCwgdGhlIEpJVCBpcyBkaXNhYmxlZCwgYW5kIHRoZSBvbmx5CisgICAgLy8g
dmFsaWQgcmV0dXJuIGFkZHJlc3NlcyBzaG91bGQgYmUgYnl0ZWNvZGUgUENzLiBTbywgd2UgY2Fu
IGFuZCBuZWVkIHRvCisgICAgLy8gZm9yZWdvIHRoaXMgY2hlY2sgYmVjYXVzZSB3aGVuIHdlIGRv
IG5vdCBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKSwKKyAgICAvLyB0aGVuIHRoZSBieXRl
Y29kZSAiUEMicyBhcmUgYWN0dWFsbHkgdGhlIG9wY29kZUlEcyBhbmQgYXJlIG5vdCBib3VuZGVk
CisgICAgLy8gYnkgbGxpbnRfYmVnaW4gYW5kIGxsaW50X2VuZC4KICAgICBpZiAocmV0dXJuQWRk
cmVzcy52YWx1ZSgpID49IExMSW50OjpnZXRDb2RlUHRyKGxsaW50X2JlZ2luKQotICAgICAgICAm
JiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gTExJbnQ6OmdldENvZGVQdHIobGxpbnRfZW5kKSkg
eworICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gTExJbnQ6OmdldENvZGVQdHIo
bGxpbnRfZW5kKSkKKyNlbmRpZgorICAgIHsKICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9j
aygpKTsKICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOwogICAgICAg
ICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDEyNzM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU1dpdGhTY29wZS5oIgorI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJM
aXRlcmFsUGFyc2VyLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCkBAIC05ODMsMTIgKzk4NCwxNiBAQCBmYWlsZWRKU09OUDoKICAgICAg
ICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsK
IAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
KyAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNMb29wOjpleGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZSk7CisjZWxzZSAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBpZiAoIWNsYXNzaWNFbmFibGVkKCkpCiAgICAgICAgICAg
ICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0ZSgmbV9yZWdpc3Rl
ckZpbGUsIG5ld0NhbGxGcmFtZSwgc2NvcGUtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIGVsc2UK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1
dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CisjZW5kaWYgLy8gIUVO
QUJMRShMTElOVF9DX0xPT1ApCiAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICB9CkBA
IC0xMDU1LDEyICsxMDYwLDE3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICAgICAgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1f
c2FtcGxlci5nZXQoKSk7CiAKICAgICAgICAgICAgIG1fcmVlbnRyeURlcHRoKys7ICAKKyNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNMb29wOjpl
eGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOwor
I2Vsc2UgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAg
ICAgaWYgKCFjbGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5leGVj
dXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlLT5nbG9iYWxE
YXRhKCkpOwogICAgICAgICAgICAgZWxzZQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUs
IG5ld0NhbGxGcmFtZSk7CisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICAgICAg
ICAgICAgIG1fcmVlbnRyeURlcHRoLS07CiAgICAgICAgIH0KIApAQCAtMTE0OSwxMiArMTE1OSwx
NiBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgICAg
ICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwog
CiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKKyAgICAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJh
bWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworI2Vsc2UgLy8gIUVO
QUJMRShMTElOVF9DX0xPT1ApCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgICAgIGlmICghY2xh
c3NpY0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLmV4ZWN1
dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGNvbnN0cnVjdERhdGFTY29wZS0+Z2xv
YmFsRGF0YSgpKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJG
aWxlLCBuZXdDYWxsRnJhbWUpOworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
ICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAgICAgICAgfQogCkBAIC0xMjUyLDYgKzEyNjYs
OSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgICAgIFNh
bXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CiAgICAg
ICAgIAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOyAgCisjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKKyAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNMb29wOjpleGVjdXRlKGNsb3N1cmUubmV3Q2Fs
bEZyYW1lLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7CisjZWxzZSAvLyAhRU5B
QkxFKExMSU5UX0NfTE9PUCkKICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShDTEFTU0lDX0lO
VEVSUFJFVEVSKQogICAgICAgICBpZiAoY2xvc3VyZS5uZXdDYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKSkKQEAgLTEyNjQsNiArMTI4MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAg
ICAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwgJm1fcmVnaXN0ZXJGaWxl
LCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CiAjZW5kaWYKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5U
X0NfTE9PUCkKKwogICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgIH0KIApAQCAtMTM1Miw2
ICsxMzcxLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogCiAg
ICAgICAgIG1fcmVlbnRyeURlcHRoKys7CiAgICAgICAgIAorI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCisgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUs
IGxsaW50X2V2YWxfcHJvbG9ndWUpOworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCiAj
aWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAg
aWYgKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQpAQCAtMTM2NCw2ICsxMzg2
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogI2lmIEVOQUJM
RShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJpdmF0ZUV4ZWN1
dGUoTm9ybWFsLCAmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFtZSk7CiAjZW5kaWYKKyNlbmRp
ZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgbV9yZWVudHJ5RGVwdGgtLTsKICAg
ICB9CiAKQEAgLTE2MzYsNiArMTY1OSw4IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVy
Ojp1bmNhY2hlR2UKIAogI2VuZGlmIC8vIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogCisj
aWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIE9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9m
IG91ciBhZGRyZXNzIHRhYmxlcy4gV2UgaGF2ZSB0byBwdXQgdGhpcyBjb2RlCkBAIC01MDkyLDYg
KzUxMTcsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogI2VuZGlmIC8vIEVOQUJMRShDTEFTU0lD
X0lOVEVSUFJFVEVSKQogfQogCisjZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKKwog
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cmV0cmlldmVBcmd1bWVudHNGcm9tVk1Db2RlKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBDYWxsRnJh
bWUqIGZ1bmN0aW9uQ2FsbEZyYW1lID0gZmluZEZ1bmN0aW9uQ2FsbEZyYW1lRnJvbVZNQ29kZShj
YWxsRnJhbWUsIGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMjczNjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
Mjc1LDcgKzI3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBDYWxsRnJh
bWUqIGZpbmRGdW5jdGlvbkNhbGxGcmFtZUZyb21WTUNvZGUoQ2FsbEZyYW1lKiwgSlNGdW5jdGlv
biopOwogCisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIEpTVmFsdWUgcHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZywgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZyYW1lKik7CisjZW5k
aWYKIAogICAgICAgICB2b2lkIGR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKik7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTI3MzY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NjgsNyArNDY4LDEzIEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQqIEpJVF9TVFVCIGN0aV92
bV90aHJvdyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lO
VEVSTkFMOwogfSAvLyBleHRlcm4gIkMiCiAKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2VsaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKworc3RydWN0IEpJVFN0YWNrRnJhbWUgeworICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YTsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09Q
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50Q0xvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENMb29wLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENMb29wLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgorCisjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQorCit2b2lkIENMb29wOjppbml0aWFsaXplKCkKK3sKKyAgICBl
eGVjdXRlKDAsIGxsaW50X3VudXNlZCwgdHJ1ZSk7Cit9CisKK3ZvaWQqIENMb29wOjpjYXRjaFJv
dXRpbmVGb3IoSW5zdHJ1Y3Rpb24qIGNhdGNoUENGb3JJbnRlcnByZXRlcikKK3sKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KGNhdGNoUENGb3JJbnRlcnByZXRlci0+
dS5vcGNvZGUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ0xvb3A6Omhvc3RDb2RlRW50
cnlGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyOworICAgIGNvZGVQdHIgPSAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgPwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9u
YXRpdmVfY2FsbF90cmFtcG9saW5lKSA6CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7Cisg
ICAgcmV0dXJuIGNvZGVQdHI7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVB0ciBDTG9vcDo6anND
b2RlRW50cnlXaXRoQXJpdHlDaGVja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgY29kZVB0ciA9IChraW5k
ID09IENvZGVGb3JDYWxsKSA/CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRl
TExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSA6CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworICAgIHJldHVybiBjb2RlUHRyOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ0xvb3A6OmpzQ29kZUVudHJ5Rm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsK
KyAgICBjb2RlUHRyID0gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8KKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
cHJvbG9ndWUpIDoKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7CisgICAgcmV0dXJu
IGNvZGVQdHI7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludENMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50Q0xvb3AuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludENMb29wLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENMb29w
X2gKKyNkZWZpbmUgTExJbnRDTG9vcF9oCisKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorCisj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KyNpbmNsdWRlICJSZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIExM
SW50IHsKKworY29uc3QgT3Bjb2RlSUQgbGxpbnRfdW51c2VkID0gbGxpbnRfZW5kOworCitjbGFz
cyBDTG9vcCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHN0
YXRpYyBKU1ZhbHVlIGV4ZWN1dGUoQ2FsbEZyYW1lKiwgT3Bjb2RlSUQgYm9vdHN0cmFwT3Bjb2Rl
SWQgPSBsbGludF91bnVzZWQsIGJvb2wgaXNJbml0aWFsaXphdGlvblBhc3MgPSBmYWxzZSk7CisK
KyAgICBzdGF0aWMgdm9pZCogY2F0Y2hSb3V0aW5lRm9yKEluc3RydWN0aW9uKiBjYXRjaFBDRm9y
SW50ZXJwcmV0ZXIpOworCisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBob3N0Q29k
ZUVudHJ5Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIganNDb2RlRW50cnlXaXRoQXJpdHlDaGVja0ZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGpzQ29kZUVudHJ5Rm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQorCisjZW5kaWYgLy8gTExJbnRD
TG9vcF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAko
cmV2aXNpb24gMTI3MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgorI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CkBAIC00MywxMyArNDQsMTggQEAgdm9p
ZCBpbml0aWFsaXplKCkKICAgICBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IG5ldyBJ
bnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBEYXRhOjpzX29wY29kZU1hcCA9
IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKIAorICAgICNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgIENMb29wOjppbml0aWFsaXplKCk7CisKKyAgICAjZWxzZSAvLyAhRU5BQkxFKExMSU5U
X0NfTE9PUCkKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsr
aSkKICAgICAgICAgRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0K
ICAgICAgICAgICAgIExMSW50OjpnZXRDb2RlUHRyKGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRo
X3RyYW1wb2xpbmUpOwotICAgICNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAjZGVmaW5lIE9QQ09ERV9F
TlRSWShvcGNvZGUsIGxlbmd0aCkgXAogICAgICAgICBEYXRhOjpzX29wY29kZU1hcFtvcGNvZGVd
ID0gTExJbnQ6OmdldENvZGVQdHIobGxpbnRfIyNvcGNvZGUpOwogICAgIEZPUl9FQUNIX09QQ09E
RV9JRChPUENPREVfRU5UUlkpOwogICAgICN1bmRlZiBPUENPREVfRU5UUlkKKyAgICAjZW5kaWYg
Ly8gIUVOQUJMRShMTElOVF9DX0xPT1ApCiB9CiAKICNpZiBDT01QSUxFUihDTEFORykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDEyNzM2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0dsb2JhbERhdGE7
CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQordHlwZWRl
ZiBPcGNvZGVJRCBMTEludENvZGU7CisjZWxzZQogdHlwZWRlZiB2b2lkICgqTExJbnRDb2RlKSgp
OworI2VuZGlmCiAKIG5hbWVzcGFjZSBMTEludCB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDEy
NzM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTcgQEAKICNpbmNsdWRlIDx3dGYvSW5s
aW5lQVNNLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKworI2lmIEVOQUJMRShMTElO
VF9DX0xPT1ApCisjZGVmaW5lIE9GRkxJTkVfQVNNX0NfTE9PUCAxCisjZGVmaW5lIE9GRkxJTkVf
QVNNX1g4NiAwCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNkZWZpbmUgT0ZGTElORV9B
U01fWDg2XzY0IDAKKworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKKyNkZWZpbmUg
T0ZGTElORV9BU01fQ19MT09QIDAKKwogI2lmIENQVShYODYpCiAjZGVmaW5lIE9GRkxJTkVfQVNN
X1g4NiAxCiAjZWxzZQpAQCAtNDksNiArNjAsOCBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZf
NjQgMAogI2VuZGlmCiAKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAxCiAjZWxzZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T3Bjb2RlLmgJKHJldmlzaW9uIDEy
NzM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw5ICszMCwxOSBAQAogCiAjaWYgRU5BQkxFKExMSU5UKQogCisjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKworI2RlZmluZSBGT1JfRUFDSF9MTElOVF9OT0pJVF9OQVRJ
VkVfSEVMUEVSKG1hY3JvKSBcCisgICAgbWFjcm8oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSwgMSkg
XAorICAgIG1hY3JvKGN0aU9wVGhyb3dOb3RDYXVnaHQsIDEpCisKKyNlbHNlIC8vICFFTkFCTEUo
TExJTlRfQ19MT09QKQorCiAjZGVmaW5lIEZPUl9FQUNIX0xMSU5UX05PSklUX05BVElWRV9IRUxQ
RVIobWFjcm8pIFwKICAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuIFVzZSB0aGUgSklUIGltcGwg
aW5zdGVhZC4KIAorI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQorCiAKICNkZWZpbmUg
Rk9SX0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihtYWNybykgXAogICAgIEZPUl9FQUNIX0xMSU5U
X05PSklUX05BVElWRV9IRUxQRVIobWFjcm8pIFwKQEAgLTU2LDcgKzY2LDExIEBACiAgICAgbWFj
cm8obGxpbnRfZW5kLCAxKQogCiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorI2RlZmluZSBG
T1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKG1hY3JvKSBGT1JfRUFDSF9MTElOVF9OQVRJ
VkVfSEVMUEVSKG1hY3JvKQorI2Vsc2UKICNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihtYWNybykgLy8gTm90aGluZyB0byBhZGQuCisjZW5kaWYKIAogI2Vsc2UgLy8gIUVO
QUJMRShMTElOVCkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCShyZXZpc2lvbiAxMjczNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgIUVOQUJMRShMTElOVF9DX0xP
T1ApCisKIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFy
ICp0aHVua0tpbmQpCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0OwpAQCAtNzgsNiArODAsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHCiAgICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUs
ICJwcm9ncmFtIik7CiB9CiAKKyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTI3MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTExMyw2ICsxMTMsOCBAQCBtYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCiAgICAg
ICAgIHBva2UgYXJnMSwgMAogICAgICAgICBwb2tlIGFyZzIsIDEKICAgICAgICAgY2FsbCBmdW5j
dGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBjbG9vcENhbGxTbG93UGF0aCBmdW5jdGlv
biwgYXJnMSwgYXJnMgogICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKQEAgLTEzMiw2
ICsxMzQsOCBAQCBtYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsCiAgICAg
ICAgIHBva2UgYXJnMywgMgogICAgICAgICBwb2tlIGFyZzQsIDMKICAgICAgICAgY2FsbCBmdW5j
dGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBlcnJvcgogICAgIGVsc2UKICAgICAgICAg
ZXJyb3IKICAgICBlbmQKQEAgLTE4MjUsNiArMTgyOSwxOSBAQCBtYWNybyBuYXRpdmVDYWxsVHJh
bXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVu
Y3Rpb25bdDFdCiAgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQzKQog
ICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBlbHNp
ZiBDX0xPT1AKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQz
CisgICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3QzXQorICAg
ICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
dDMpCisgICAgICAgIHN0b3JlcCB0MywgUmV0dXJuUENbY2ZyXQorICAgICAgICBtb3ZlIGNmciwg
dDAKKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgICAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgICAgICBtb3ZlIHQy
LCBjZnIKKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
W3QxXQorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKKyAgICAg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCiAgICAgZWxzZSAgCiAg
ICAgICAgIGVycm9yCiAgICAgZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTI3MzY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBh
cmcxLCBhcmcyKQogICAgICAgICBtb3ZlIGFyZzEsIHQ1CiAgICAgICAgIG1vdmUgYXJnMiwgdDQK
ICAgICAgICAgY2FsbCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBjbG9vcENh
bGxTbG93UGF0aCBmdW5jdGlvbiwgYXJnMSwgYXJnMgogICAgIGVsc2UKICAgICAgICAgZXJyb3IK
ICAgICBlbmQKQEAgLTY4LDYgKzcwLDggQEAgbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBh
cmcyLCBhcmczLAogICAgICAgICBtb3ZlIGFyZzMsIHQxCiAgICAgICAgIG1vdmUgYXJnNCwgdDIK
ICAgICAgICAgY2FsbCBmdW5jdGlvbgorICAgIGVsc2lmIENfTE9PUAorICAgICAgICBlcnJvcgog
ICAgIGVsc2UKICAgICAgICAgZXJyb3IKICAgICBlbmQKQEAgLTE2NTYsNiArMTY2MCwyNiBAQCBt
YWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgICAgIGNhbGwgZXhl
Y3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCiAgICAgICAgIGFkZHAgMTYgLSA4LCBzcAogICAg
ICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhICsgOFtzcF0sIHQzCisKKyAgICBl
bHNpZiBDX0xPT1AKKyAgICAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAKKyAgICAgICAg
bG9hZHAgU2NvcGVDaGFpblt0MF0sIHQxCisgICAgICAgIHN0b3JlcCB0MSwgU2NvcGVDaGFpbltj
ZnJdCisKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisg
ICAgICAgIHN0b3JlcCBjZnIsIEpTR2xvYmFsRGF0YTo6dG9wQ2FsbEZyYW1lW3QzXQorCisgICAg
ICAgIG1vdmUgdDAsIHQyCisgICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0
MykKKyAgICAgICAgc3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdCisgICAgICAgIG1vdmUgY2ZyLCB0
MAorICAgICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlv
bjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKKyAgICAgICAgbW92ZSB0MiwgY2ZyCisgICAgICAgIGNs
b29wQ2FsbE5hdGl2ZSBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0KKworICAgICAgICBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKKyAgICAgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCiAgICAgZWxzZQogICAgICAgICBlcnJvcgogICAg
IGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTI3MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAs
OSArMTEwLDEzIEBAIGVuZAogCiAjIFNvbWUgY29tbW9uIHV0aWxpdGllcy4KIG1hY3JvIGNyYXNo
KCkKLSAgICBzdG9yZWkgdDAsIDB4YmJhZGJlZWZbXQotICAgIG1vdmUgMCwgdDAKLSAgICBjYWxs
IHQwCisgICAgaWYgQ19MT09QCisgICAgICAgIGNsb29wQ3Jhc2gKKyAgICBlbHNlCisgICAgICAg
IHN0b3JlaSB0MCwgMHhiYmFkYmVlZltdCisgICAgICAgIG1vdmUgMCwgdDAKKyAgICAgICAgY2Fs
bCB0MAorICAgIGVuZAogZW5kCiAKIG1hY3JvIGFzc2VydChhc3NlcnRpb24pCkBAIC0xMjQsNyAr
MTI4LDEwIEBAIG1hY3JvIGFzc2VydChhc3NlcnRpb24pCiBlbmQKIAogbWFjcm8gcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCi0gICAgaWYgQVJNdjcK
KyAgICBpZiBDX0xPT1AKKyAgICAgICAgIyBJbiBvdXIgY2FzZSwgd2UncmUgb25seSBwcmVzZXJ2
aW5nIHRoZSBieXRlY29kZSB2UEMuIAorICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lz
dGVyCisgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3Rl
cgogICAgIGVsc2lmIFg4NiBvciBYODZfNjQKICAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0
ZXIKQEAgLTEzNCw3ICsxNDEsMTAgQEAgbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKGRlcwogZW5kCiAKIG1hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNv
dXJjZVJlZ2lzdGVyKQotICAgIGlmIEFSTXY3CisgICAgaWYgQ19MT09QCisgICAgICAgICMgSW4g
b3VyIGNhc2UsIHdlJ3JlIG9ubHkgcmVzdG9yaW5nIHRoZSBieXRlY29kZSB2UEMuIAorICAgICAg
ICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIG1vdmUg
c291cmNlUmVnaXN0ZXIsIGxyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl82NAogICAgICAgICBwdXNo
IHNvdXJjZVJlZ2lzdGVyCkBAIC0xNTAsOCArMTYwLDEyIEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9u
KCkKIGVuZAogCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24oY2FsbExpbmtJbmZvKQotICAgIGNh
bGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5mb10KLSAg
ICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgaWYgQ19MT09QCisgICAgICAgIGNsb29wQ2FsbEpT
RnVuY3Rpb24gTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W2NhbGxMaW5rSW5m
b10KKyAgICBlbHNlCisgICAgICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2Rl
VGFyZ2V0W2NhbGxMaW5rSW5mb10KKyAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGVu
ZAogZW5kCiAKIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBzbG93UGF0aCkKQEAgLTE1
OSw3ICsxNzMsMTEgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNsb3dQYXRoKQog
ICAgICAgICBhZHZhbmNlLAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgbWFjcm8gKGNhbGxl
ZSkKLSAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBpZiBDX0xPT1AKKyAgICAg
ICAgICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBlbmQKICAgICAgICAgICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICAgICAgZW5kKQogZW5kCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAxMjczNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDM4OSBAQAogI2luY2x1ZGUg
IkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAor
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiTExpbnRDTG9vcC5oIgorI2luY2x1ZGUgIkxMaW50U2xvd1BhdGhzLmgiCisjaW5jbHVkZSAi
Vk1JbnNwZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOjpMTEludDsKKworLy8gTExJbnQgQyBMb29wIG9wY29kZXMKKy8vID09PT09PT09
PT09PT09PT09PT09CisvLyBJbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEMgbG9vcCwgdGhl
IExMaW50IHRyYW1wb2xpbmUgZ2x1ZSBmdW5jdGlvbnMKKy8vIChlLmcuIGxsaW50X3Byb2dyYW1f
cHJvbG9ndWUsIGxsaW50X2V2YWxfcHJvbG9ndWUsIGV0YykgYXJlIGFkZHJlc3NlZCBhcworLy8g
aWYgdGhleSBhcmUgYnl0ZWNvZGUgaGFuZGxlcnMuIFRoYXQgbWVhbnMgdGhlIG5hbWVzIG9mIHRo
ZSB0cmFtcG9saW5lCisvLyBmdW5jdGlvbnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgT3Bjb2RlSUQg
bGlzdCB2aWEgdGhlCisvLyBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKCkgbWFjcm8g
dGhhdCBGT1JfRUFDSF9PUENPREVfSUQoKQorLy8gaW5jbHVkZXMuCisvLworLy8gSW4gYWRkaXRp
b24sIHNvbWUgSklUIHRyYW1wb2xpbmUgZnVuY3Rpb25zIHdoaWNoIGFyZSBuZWVkZWQgYnkgTExJ
bnQKKy8vIChlLmcuIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUsIGN0aU9wVGhyb3dOb3RDYXVnaHQp
IGFyZSBhbHNvIGFkZGVkIGFzCisvLyBieXRlY29kZXMsIGFuZCB0aGUgQ0xvb3Agd2lsbCBwcm92
aWRlIGJ5dGVjb2RlIGhhbmRsZXJzIGZvciB0aGVtLgorLy8KKy8vIEluIHRoZSBDTG9vcCwgd2Ug
Y2FuIG9ubHkgZGlzcGF0Y2ggaW5kaXJlY3RseSB0byB0aGVzZSBieXRlY29kZXMKKy8vIChpbmNs
dWRpbmcgdGhlIExMSW50IGFuZCBKSVQgZXh0ZW5zaW9ucykuIEFsbCBvdGhlciBkaXNwYXRjaGVz
CisvLyAoaS5lLiBnb3RvJ3MpIG11c3QgYmUgdG8gYSBrbm93biBsYWJlbCAoaS5lLiBsb2NhbCAv
IGdsb2JhbCBsYWJlbHMpLgorCisKKy8vIEhvdyBhcmUgdGhlIG9wY29kZXMgbmFtZWQ/CisvLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSGVyZSBpcyBhIHRhYmxlIHRvIHNob3cgZXhh
bXBsZXMgb2YgaG93IGVhY2ggb2YgdGhlIG1hbmlmZXN0YXRpb24gb2YgdGhlCisvLyBvcGNvZGVz
IGFyZSBuYW1lZDoKKy8vCisvLyAgIFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2Rl
ICAgICAgICAgICAgVHJhbXBvbGluZSBHbHVlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPT09PT09ICAgICAgICAgICAgPT09PT09PT09PT09PT09CisvLyAgIFtJbiB0aGUgbGxp
bnQgLmFzbSBmaWxlc10KKy8vICAgbGxpbnQgbGFiZWxzOiAgICAgICAgICAgICAgICBsbGludF9v
cF9lbnRlciAgICBsbGludF9wcm9ncmFtX3Byb2xvZ3VlCisvLworLy8gICBPcGNvZGVJRDogICAg
ICAgICAgICAgICAgICAgIG9wX2VudGVyICAgICAgICAgIGxsaW50X3Byb2dyYW0KKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbaW4gT3Bjb2RlLmhdICAgICBbaW4gTExJbnRPcGNv
ZGUuaF0KKy8vCisvLyAgIFdoZW4gdXNpbmcgYSBzd2l0Y2ggc3RhdGVtZW50IGRpc3BhdGNoIGlu
IHRoZSBDTG9vcCwgZWFjaCAib3Bjb2RlIiBpcworLy8gICBhIGNhc2Ugc3RhdGVtZW50OgorLy8g
ICBPcGNvZGU6ICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugb3BfZW50ZXI6ICAgIGNhc2UgbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZToKKy8vCisvLyAgIFdoZW4gdXNpbmcgYSBjb21wdXRlZCBnb3Rv
IGRpc3BhdGNoIGluIHRoZSBDTG9vcCwgZWFjaCBvcGNvZGUgaXMgYSBsYWJlbDoKKy8vICAgT3Bj
b2RlOiAgICAgICAgICAgICAgICAgICAgICBvcF9lbnRlcjogICAgICAgICBsbGludF9wcm9ncmFt
X3Byb2xvZ3VlOgorCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRGVmaW5lIHRoZSBvcGNv
ZGUgZGlzcGF0Y2ggbWVjaGFuaXNtIHdoZW4gdXNpbmcgdGhlIEMgbG9vcDoKKy8vCisKKy8vIFRo
ZXNlIGFyZSBmb3IgYnVpbGRpbmcgYSBDIExvb3AgaW50ZXJwcmV0ZXI6CisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0JFR0lOCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VORAorCisKKyNkZWZpbmUgT0ZGTElO
RV9BU01fT1BDT0RFX0xBQkVMKG9wY29kZSkgREVGSU5FX09QQ09ERShvcGNvZGUpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVf
TEFCRUwobGFiZWwpICBsYWJlbDoKKyNlbHNlCisgICAgI2RlZmluZSBPRkZMSU5FX0FTTV9HTFVF
X0xBQkVMKGxhYmVsKSAgY2FzZSBsYWJlbDogbGFiZWw6CisjZW5kaWYKKworI2RlZmluZSBPRkZM
SU5FX0FTTV9MT0NBTF9MQUJFTChsYWJlbCkgICBsYWJlbDoKKworCituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorc3RhdGljIGRvdWJs
ZSBJbnRzMkRvdWJsZSh1aW50MzJfdCBsbywgdWludDMyX3QgaGkpCit7CisgICAgdW5pb24gewor
ICAgICAgICBkb3VibGUgZHZhbDsKKyAgICAgICAgdWludDY0X3QgaXZhbDY0OworICAgIH0gdTsK
KyAgICB1Lml2YWw2NCA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oaGkpIDw8IDMyKSB8IGxvOwor
ICAgIHJldHVybiB1LmR2YWw7Cit9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKKworfSAv
LyBuYW1lc3BhY2UgTExpbnQKKworCitKU1ZhbHVlIENMb29wOjpleGVjdXRlKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBPcGNvZGVJRCBib290c3RyYXBPcGNvZGVJZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0luaXRpYWxpemF0aW9uUGFzcykKK3sKKyAgICAjZGVmaW5lIENBU1QgcmVp
bnRlcnByZXRfY2FzdAorICAgICNkZWZpbmUgU0lHTl9CSVQzMih4KSAoeCAmIDB4ODAwMDAwMDAp
CisKKyAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBvdXIgYWRkcmVzcyB0YWJsZXMu
IFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQorICAgIC8vIGhlcmUgYmVjYXVzZSBvdXIgbGFiZWxz
IGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0aGlzIGZ1bmN0aW9uLiBUaGUKKyAgICAvLyBjYWxs
ZXIgKG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzKSBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcg
dGhhdCB0aGlzCisgICAgLy8gaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcgdGhlIGluaXRpYWxp
emF0aW9uIG9mIHRoZSBWTSBiZWZvcmUgdGhyZWFkcworICAgIC8vIGFyZSBhdCBwbGF5LgorICAg
IGlmIChVTkxJS0VMWShpc0luaXRpYWxpemF0aW9uUGFzcykpIHsKKyNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19PUENPREVTKQorICAgICAgICBPcGNvZGUqIG9wY29kZU1hcCA9IExMSW50OjpvcGNv
ZGVNYXAoKTsKKyAgICAgICAgI2RlZmluZSBPUENPREVfRU5UUlkoX19vcGNvZGUsIGxlbmd0aCkg
XAorICAgICAgICAgICAgb3Bjb2RlTWFwW19fb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JiZfX29wY29kZSk7CisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpCisg
ICAgICAgICN1bmRlZiBPUENPREVfRU5UUlkKKworICAgICAgICAjZGVmaW5lIExMSU5UX09QQ09E
RV9FTlRSWShfX29wY29kZSwgbGVuZ3RoKSBcCisgICAgICAgICAgICBvcGNvZGVNYXBbX19vcGNv
ZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmJl9fb3Bjb2RlKTsKKworICAgICAgICBGT1JfRUFD
SF9MTElOVF9OQVRJVkVfSEVMUEVSKExMSU5UX09QQ09ERV9FTlRSWSkKKyAgICAgICAgI3VuZGVm
IExMSU5UX09QQ09ERV9FTlRSWQorI2VuZGlmCisgICAgICAgIC8vIE5vdGU6IHdlIGNhbiBvbmx5
IHNldCB0aGUgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zIGFmdGVyIHdlIGhhdmUKKyAgICAgICAgLy8g
aW5pdGlhbGl6ZWQgdGhlIG9wY29kZU1hcCBhYm92ZS4gVGhpcyBpcyBiZWNhdXNlIGdldENvZGVQ
dHIoKQorICAgICAgICAvLyBjYW4gZGVwZW5kIG9uIHRoZSBvcGNvZGVNYXAuCisgICAgICAgIElu
c3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMgPSBMTEludDo6ZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsg
MTsgKytpKQorICAgICAgICAgICAgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9
CisgICAgICAgICAgICAgICAgTExJbnQ6OmdldENvZGVQdHIobGxpbnRfdGhyb3dfZnJvbV9zbG93
X3BhdGhfdHJhbXBvbGluZSk7CisKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9CisK
KyAgICBBU1NFUlQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkudG9wQ2FsbEZyYW1lID09IGNhbGxG
cmFtZSk7CisKKyAgICAvLyBEZWZpbmUgdGhlIHBzZXVkbyByZWdpc3RlcnMgdXNlZCBieSB0aGUg
TExJTlQgQyBMb29wIGJhY2tlbmQ6CisgICAgdW5pb24gQ0xvb3BSZWdpc3RlciB7CisgICAgICAg
IGludHB0cl90IGk7CisgICAgICAgIHVpbnRwdHJfdCB1OworICAgICAgICBpbnQzMl90IGkzMjsK
KyAgICAgICAgdWludDMyX3QgdTMyOworICAgICAgICBpbnQ4X3QgaTg7CisgICAgICAgIHVpbnQ4
X3QgdTg7CisgICAgICAgIGludDhfdCogaThwOworICAgICAgICB2b2lkKiB2cDsKKyAgICAgICAg
RXhlY1N0YXRlKiBleGVjU3RhdGU7CisgICAgICAgIHZvaWQqIGluc3RydWN0aW9uOworICAgICAg
ICBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGludDY0X3QgaTY0OworICAgICAgICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZTsKKyAg
ICAgICAgZG91YmxlIGNhc3RUb0RvdWJsZTsKKyNlbmRpZgorICAgICAgICBPcGNvZGUgb3Bjb2Rl
OworICAgIH07CisgICAgdW5pb24gQ0xvb3BEb3VibGVSZWdpc3RlciB7CisgICAgICAgIGRvdWJs
ZSBkOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHZvaWQqIGNhc3RUb1ZvaWRQdHI7Cisj
ZW5kaWYKKyAgICB9OworCisgICAgLy8gVGhlIENMb29wIGxsaW50IGJhY2tlbmQgaXMgaW5pdGlh
bGx5IGJhc2VkIG9uIHRoZSBBUk12NyBiYWNrZW5kLCBhbmQKKyAgICAvLyB0aGVuIGZ1cnRoZXIg
ZW5oYW5jZWQgd2l0aCBhIGZldyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgeDg2IGJhY2tlbmQgdG8K
KyAgICAvLyBzdXBwb3J0IGJ1aWxkaW5nIGZvciBYNjQgdGFyZ2V0cy4gSGVuY2UsIHRoZSBzaGFw
ZSBvZiB0aGUgZ2VuZXJhdGVkCisgICAgLy8gY29kZSBhbmQgdGhlIHVzYWdlIGNvbnZlbnRpb24g
b2YgcmVnaXN0ZXJzIHdpbGwgbG9vayBhIGxvdCBsaWtlIHRoZQorICAgIC8vIEFSTXY3IGJhY2tl
bmQncy4KKyAgICAvLworICAgIC8vIEZvciBleGFtcGxlLCBvbiBhIDMyLWJpdCBidWlsZDoKKyAg
ICAvLyAxLiBPdXRnb2luZyBhcmdzIHdpbGwgYmUgc2V0IHVwIGFzIGZvbGxvd3M6CisgICAgLy8g
ICAgYXJnMSBpbiB0MCAocjAgb24gQVJNKQorICAgIC8vICAgIGFyZzIgaW4gdDEgKHIxIG9uIEFS
TSkKKyAgICAvLyAyLiAzMiBiaXQgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluIHQwIChyMCBvbiBB
Uk0pLgorICAgIC8vIDMuIDY0IGJpdCByZXR1cm4gdmFsdWVzIChlLmcuIGRvdWJsZXMpIHdpbGwg
YmUgaW4gdDAsdDEgKHIwLHIxIG9uIEFSTSkuCisgICAgLy8KKyAgICAvLyBCdXQgaW5zdGVhZCBv
ZiBuYW1pbmcgdGhlc2Ugc2ltdWxhdG9yIHJlZ2lzdGVycyBiYXNlZCBvbiB0aGVpciBBUk0KKyAg
ICAvLyBjb3VudGVycGFydHMsIHdlJ2xsIG5hbWUgdGhlbSBiYXNlZCBvbiB0aGVpciBvcmlnaW5h
bCBsbGludCBhc20gbmFtZXMuCisgICAgLy8gVGhpcyB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGNv
cnJlbGF0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgd2l0aCB0aGUKKyAgICAvLyBvcmlnaW5hbCBsbGlu
dCBhc20gY29kZS4KKyAgICAvLworICAgIC8vIE9uIGEgNjQtYml0IGJ1aWxkLCBpdCBtb3JlIGxp
a2UgeDY0IGluIHRoYXQgdGhlIHJlZ2lzdGVycyBhcmUgNjQgYml0LgorICAgIC8vIEhlbmNlOgor
ICAgIC8vIDEuIE91dGdvaW5nIGFyZ3MgYXJlIHN0aWxsIHRoZSBzYW1lOiBhcmcxIGluIHQwLCBh
cmcyIGluIHQxLCBldGMuCisgICAgLy8gMi4gMzIgYml0IHJlc3VsdCB2YWx1ZXMgd2lsbCBiZSBp
biB0aGUgbG93IDMyLWJpdCBvZiB0MC4KKyAgICAvLyAzLiA2NCBiaXQgcmVzdWx0IHZhbHVlcyB3
aWxsIGJlIGluIHQwLgorCisgICAgQ0xvb3BSZWdpc3RlciB0MCwgdDEsIHQyLCB0MzsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIENMb29wUmVnaXN0ZXIgckJhc2VQQywgdGFnVHlwZU51bWJlciwg
dGFnTWFzazsKKyNlbmRpZgorICAgIENMb29wUmVnaXN0ZXIgclJldFZQQzsKKyAgICBDTG9vcERv
dWJsZVJlZ2lzdGVyIGQwLCBkMTsKKworICAgIC8vIEluc3RhbnRpYXRlIHRoZSBwc2V1ZG8gSklU
IHN0YWNrIGZyYW1lIHVzZWQgYnkgdGhlIExMSU5UIEMgTG9vcCBiYWNrZW5kOgorICAgIEpJVFN0
YWNrRnJhbWUgaml0U3RhY2tGcmFtZTsKKworICAgIC8vIFRoZSBsbGludCBleHBlY3RzIHRoZSBu
YXRpdmUgc3RhY2sgcG9pbnRlciwgc3AsIHRvIGJlIHBvaW50aW5nIHRvIHRoZQorICAgIC8vIGpp
dFN0YWNrRnJhbWUgKHdoaWNoIGlzIHRoZSBzaW11bGF0aW9uIG9mIHRoZSBuYXRpdmUgc3RhY2sg
ZnJhbWUpOgorICAgIEpJVFN0YWNrRnJhbWUqIGNvbnN0IHNwID0gJmppdFN0YWNrRnJhbWU7Cisg
ICAgc3AtPmdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CisKKyAgICAvLyBT
ZXQgdXAgYW4gYWxpYXMgZm9yIHRoZSBnbG9iYWxEYXRhIHB0ciBpbiB0aGUgSklUU3RhY2tGcmFt
ZToKKyAgICBKU0dsb2JhbERhdGEqICZnbG9iYWxEYXRhID0gc3AtPmdsb2JhbERhdGE7CisKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgSW5z
dHJ1Y3Rpb24qIHZQQzsKKworICAgIC8vIHJQQyBpcyBhbiBhbGlhcyBmb3IgdlBDLiBTZXQgdXAg
dGhlIGFsaWFzOgorICAgIENMb29wUmVnaXN0ZXImIHJQQyA9ICpDQVNUPENMb29wUmVnaXN0ZXIq
PigmdlBDKTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgdlBDID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOworI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICB2UEMg
PSAwOworICAgIHJCYXNlUEMudnAgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7
CisKKyAgICAvLyBGb3IgdGhlIEFTTSBsbGludCwgSklUU3R1YnMgdGFrZXMgY2FyZSBvZiB0aGlz
IGluaXRpYWxpemF0aW9uLiBXZSBkbworICAgIC8vIGl0IGV4cGxpY2l0bHkgaGVyZSBmb3IgdGhl
IEMgbG9vcDoKKyAgICB0YWdUeXBlTnVtYmVyLmkgPSAweEZGRkYwMDAwMDAwMDAwMDA7CisgICAg
dGFnTWFzay5pID0gMHhGRkZGMDAwMDAwMDAwMDAyOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
CisKKyAgICAvLyBjZnIgaXMgYW4gYWxpYXMgZm9yIGNhbGxGcmFtZS4gU2V0IHVwIHRoaXMgYWxp
YXM6CisgICAgQ0xvb3BSZWdpc3RlciYgY2ZyID0gKkNBU1Q8Q0xvb3BSZWdpc3Rlcio+KCZjYWxs
RnJhbWUpOworCisgICAgLy8gU2ltdWxhdGUgYSBuYXRpdmUgcmV0dXJuIFBDIHdoaWNoIHNob3Vs
ZCBuZXZlciBiZSB1c2VkOgorICAgIHJSZXRWUEMuaSA9IDB4YmJhZGJlZWY7CisKKyAgICAvLyBJ
bnRlcnByZXRlciB2YXJpYWJsZXMgZm9yIHZhbHVlIHBhc3NpbmcgYmV0d2VlbiBvcGNvZGVzIGFu
ZC9vciBoZWxwZXJzOgorICAgIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMgPSAwOworICAgIEpT
VmFsdWUgZnVuY3Rpb25SZXR1cm5WYWx1ZTsKKyAgICBPcGNvZGUgb3Bjb2RlOworCisgICAgaWYg
KGJvb3RzdHJhcE9wY29kZUlkICE9IGxsaW50X3VudXNlZCkKKyAgICAgICAgb3Bjb2RlID0gTExJ
bnQ6OmdldE9wY29kZShib290c3RyYXBPcGNvZGVJZCk7CisKKyAgICAjaWYgRU5BQkxFKE9QQ09E
RV9TVEFUUykKKyAgICAgICAgI2RlZmluZSBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKSBc
CisgICAgICAgICAgICBPcGNvZGVTdGF0czo6cmVjb3JkSW5zdHJ1Y3Rpb24oX19vcGNvZGUpCisg
ICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKQor
ICAgICNlbmRpZgorCisgICAgI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICNkZWZpbmUg
RkVUQ0hfT1BDT0RFKCkgdlBDLT51Lm9wY29kZQorICAgICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgICNkZWZpbmUgRkVUQ0hfT1BDT0RFKCkgKmJpdHdpc2VfY2FzdDxPcGNvZGUqPihy
QmFzZVBDLmk4cCArIHJQQy5pICogOCkKKyAgICAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKwor
ICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFwKKyAgICAgICAgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBvcGNvZGUgPSBGRVRDSF9PUENPREUoKTsgXAor
ICAgICAgICAgICAgRElTUEFUQ0hfT1BDT0RFKCk7ICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQorCisgICAgLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKyAgICAvLyBMb29wIGRpc3BhdGNoIG1lY2hhbmlzbSB1c2luZyBjb21wdXRl
ZCBnb3RvIHN0YXRlbWVudHM6CisKKyAgICAjZGVmaW5lIERJU1BBVENIX09QQ09ERSgpIGdvdG8g
Km9wY29kZQorCisgICAgI2RlZmluZSBERUZJTkVfT1BDT0RFKF9fb3Bjb2RlKSBcCisgICAgICAg
IF9fb3Bjb2RlOiBcCisgICAgICAgICAgICBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2RlKTsK
KworICAgIC8vIERpc3BhdGNoIHRvIHRoZSBjdXJyZW50IFBDJ3MgYnl0ZWNvZGU6CisgICAgRElT
UEFUQ0hfT1BDT0RFKCk7CisKKyNlbHNlIC8vICFFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVT
KQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTG9vcCBkaXNwYXRjaCBtZWNoYW5pc20g
dXNpbmcgYSBDIHN3aXRjaCBzdGF0ZW1lbnQ6CisKKyAgICAjZGVmaW5lIERJU1BBVENIX09QQ09E
RSgpIGdvdG8gZGlzcGF0Y2hPcGNvZGUKKworICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShfX29w
Y29kZSkgXAorICAgICAgICBjYXNlIF9fb3Bjb2RlOiBcCisgICAgICAgICAgICBSRUNPUkRfT1BD
T0RFX1NUQVRTKF9fb3Bjb2RlKTsKKworICAgIC8vIERpc3BhdGNoIHRvIHRoZSBjdXJyZW50IFBD
J3MgYnl0ZWNvZGU6CisgICAgZGlzcGF0Y2hPcGNvZGU6CisgICAgc3dpdGNoIChvcGNvZGUpCisK
KyNlbmRpZiAvLyAhRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKworICAgIC8vPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CisgICAgLy8gQnl0ZWNvZGUgaGFuZGxlcnM6CisgICAgeworICAgICAgICAvLyBU
aGlzIGlzIHRoZSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBh
bGwgb2YgdGhlCisgICAgICAgIC8vIGJ5dGVjb2RlIGhhbmRsZXJzIGZvciB0aGUgaW50ZXJwcmV0
ZXIsIGFzIGNvbXBpbGVkIGZyb20KKyAgICAgICAgLy8gTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
YW5kIGl0cyBwZWVycy4KKworICAgICAgICAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisg
ICAgICAgIC8vIEluIHRoZSBBU00gbGxpbnQsIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKSBpcyBh
IHBpZWNlIG9mIGdsdWUKKyAgICAgICAgLy8gZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIEpJVCAo
c2VlIGRmZy9ERkdPcGVyYXRpb25zLmNwcCkuCisgICAgICAgIC8vIFdlIHNpbXVsYXRlIGl0IGhl
cmUgd2l0aCBhIHBzZWR1by1vcGNvZGUgaGFuZGxlci4KKyAgICAgICAgT0ZGTElORV9BU01fR0xV
RV9MQUJFTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBUaGUgQVNNIHBhcnQgcG9wcyB0aGUgZnJhbWU6CisgICAgICAgICAgICBjYWxsRnJhbWUgPSBj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisKKyAgICAgICAgICAgIC8vIFRoZSBwYXJ0IGluIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKCk6CisgICAgICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWU7CisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICAgICAgICAgIHQxLmkgPSByZXN1bHQudGFnKCk7CisgICAgICAgICAgICB0
MC5pID0gcmVzdWx0LnBheWxvYWQoKTsKKyNlbHNlCisgICAgICAgICAgICB0MC5lbmNvZGVkSlNW
YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworI2VuZGlmCisgICAgICAgICAgICBnb3Rv
IGRvUmV0dXJuSGVscGVyOworICAgICAgICB9CisKKyAgICAgICAgT0ZGTElORV9BU01fR0xVRV9M
QUJFTChjdGlPcFRocm93Tm90Q2F1Z2h0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uOworICAgICAgICB9CisKKyNpZiAhRU5BQkxFKENPTVBVVEVE
X0dPVE9fT1BDT0RFUykKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworI2Vu
ZGlmCisKKyAgICB9IC8vIEVORCBieXRlY29kZSBoYW5kbGVyIGNhc2VzLgorCisgICAgLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKyAgICAvLyBCeXRlY29kZSBoZWxwZXJzOgorCisgICAgZG9SZXR1cm5IZWxw
ZXI6IHsKKyAgICAgICAgQVNTRVJUKCEhY2FsbEZyYW1lKTsKKyAgICAgICAgaWYgKGNhbGxGcmFt
ZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSkgeworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSh0MS5pLCB0MC5pKTsgLy8gcmV0dXJuaW5nIEpTVmFsdWUo
dGFnLCBwYXlsb2FkKTsKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2Rl
KHQwLmVuY29kZWRKU1ZhbHVlKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgLy8gVGhl
IG5vcm1hbCBBU00gbGxpbnQgY2FsbCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRvIHRoZSBjYWxs
ZXIgYXMKKyAgICAgICAgLy8gcmVjb3JkZWQgaW4gclJldFZQQywgYW5kIHRoZSBjYWxsZXIgd291
bGQgZmV0Y2ggdGhlIHJldHVybiBhZGRyZXNzCisgICAgICAgIC8vIGZyb20gQXJndW1lbnRDb3Vu
dC50YWcoKSAoc2VlIHRoZSBkaXNwYXRjaEFmdGVyQ2FsbCgpIG1hY3JvIHVzZWQgaW4KKyAgICAg
ICAgLy8gdGhlIGNhbGxUYXJnZXRGdW5jdGlvbigpIG1hY3JvIGluIHRoZSBsbGludCBhc20gZmls
ZXMpLgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgdGhlIEMgbG9vcCwgd2UgZG9uJ3QgaGF2
ZSB0aGUgSklUIHN0dWIgdG8gdGhpcyB3b3JrIGZvciB1cy4KKyAgICAgICAgLy8gU28sIHdlIG5l
ZWQgdG8gaW1wbGVtZW50IHRoZSBlcXVpdmFsZW50IG9mIGRpc3BhdGNoQWZ0ZXJDYWxsKCkgaGVy
ZQorICAgICAgICAvLyBiZWZvcmUgZGlzcGF0Y2hpbmcgdG8gdGhlIFBDLgorCisgICAgICAgIHZQ
QyA9IGNhbGxGcmFtZS0+Y3VycmVudFZQQygpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgLy8gQmFzZWQgb24gTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSdzIGRpc3BhdGNoQWZ0ZXJD
YWxsKCk6CisKKyAgICAgICAgLy8gV2hlbiByZXR1cm5pbmcgZnJvbSBhIG5hdGl2ZSB0cmFtcG9s
aW5lIGNhbGwsIHVubGlrZSB0aGUgYXNzZW1ibHkKKyAgICAgICAgLy8gTExJbnQsIHdlIGNhbid0
IHNpbXBseSByZXR1cm4gdG8gdGhlIGNhbGxlci4gSW4gb3VyIGNhc2UsIHdlIGdyYWIKKyAgICAg
ICAgLy8gdGhlIGNhbGxlcidzIFZQQyBhbmQgcmVzdW1lIGV4ZWN1dGlvbiB0aGVyZS4gSG93ZXZl
ciwgdGhlIGNhbGxlcidzCisgICAgICAgIC8vIFZQQyByZXR1cm5lZCBieSBjYWxsRnJhbWUtPmN1
cnJlbnRWUEMoKSBpcyBpbiB0aGUgZm9ybSBvZiB0aGUgcmVhbAorICAgICAgICAvLyBhZGRyZXNz
IG9mIHRoZSB0YXJnZXQgYnl0ZWNvZGUsIGJ1dCB0aGUgNjQtYml0IGxsaW50IGV4cGVjdHMgdGhl
CisgICAgICAgIC8vIFZQQyB0byBiZSBhIGJ5dGVjb2RlIG9mZnNldC4gSGVuY2UsIHdlIG5lZWQg
dG8gbWFwIGl0IGJhY2sgdG8gYQorICAgICAgICAvLyBieXRlY29kZSBvZmZzZXQgYmVmb3JlIHdl
IGRpc3BhdGNoIHZpYSB0aGUgdXN1YWwgZGlzcGF0Y2ggbWVjaGFuaXNtCisgICAgICAgIC8vIGku
ZS4gTkVYVF9JTlNUUlVDVElPTigpOgorCisgICAgICAgIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICByUEMudnAg
PSBjYWxsRnJhbWUtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgclBDLmkgPSByUEMuaThwIC0gcmVp
bnRlcnByZXRfY2FzdDxpbnQ4X3QqPihjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgICAgICByUEMuaSA+Pj0gMzsKKworICAgICAgICByQmFzZVBDLnZwID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyAg
ICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworCisgICAgfSAvLyBFTkQgZG9SZXR1cm5IZWxwZXIu
CisKKworICAgIC8vIEtlZXAgdGhlIGNvbXBpbGVyIGhhcHB5IHNvIHRoYXQgaXQgZG9lc24ndCBj
b21wbGFpbiBhYm91dCB1bnVzZWQKKyAgICAvLyBsYWJlbHMgZm9yIHRoZSBMTEludCB0cmFtcG9s
aW5lIGdsdWU6CisgICAgI2RlZmluZSBMTElOVF9PUENPREVfRU5UUlkoX19vcGNvZGUsIGxlbmd0
aCkgXAorICAgICAgICBVTlVTRURfUEFSQU0oJiZfX29wY29kZSk7CisgICAgICAgIEZPUl9FQUNI
X0xMSU5UX05BVElWRV9IRUxQRVIoTExJTlRfT1BDT0RFX0VOVFJZKQorICAgICN1bmRlZiBMTElO
VF9PUENPREVfRU5UUlkKKworCisgICAgI3VuZGVmIE5FWFRfSU5TVFJVQ1RJT04KKyAgICAjdW5k
ZWYgREVGSU5FX09QQ09ERQorICAgICN1bmRlZiBDSEVDS19GT1JfVElNRU9VVAorICAgICN1bmRl
ZiBDQVNUCisgICAgI3VuZGVmIFNJR05fQklUMzIKKworfSAvLyBJbnRlcnByZXRlcjo6bGxpbnRD
TG9vcEV4ZWN1dGUoKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vsc2UgLy8gIUVOQUJMRShM
TElOVF9DX0xPT1ApCisKIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gRGVmaW5lIHRoZSBvcGNv
ZGUgZGlzcGF0Y2ggbWVjaGFuaXNtIHdoZW4gdXNpbmcgYW4gQVNNIGxvb3A6CiAvLwpAQCAtNjIs
NCArNDQ1LDYgQEAKIC8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93
TGV2ZWxJbnRlcnByZXRlci5hc20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisjZW5k
aWYgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgJKHJldmlzaW9uIDEyNzM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDQ4IEBACiAK
ICNpbmNsdWRlICJPcGNvZGUuaCIKIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisKK25hbWVz
cGFjZSBKU0MgeworCisvLyBUaGUgZm9sbG93aW5nIGlzIGEgbWluaW1hbCBzZXQgb2YgYWxpYXMg
Zm9yIHRoZSBvcGNvZGUgbmFtZXMuIFRoaXMgaXMgbmVlZGVkCisvLyBiZWNhdXNlIHRoZXJlIGlz
IGNvZGUgKGUuZy4gaW4gR2V0QnlJZFN0YXR1cy5jcHAgYW5kIFB1dEJ5SWRTdGF0dXMuY3BwKQor
Ly8gd2hpY2ggcmVmZXJzIHRvIHRoZSBvcGNvZGVzIGV4cGVjdGluZyB0aGVtIHRvIGJlIHByZWZp
eGVkIHdpdGggImxsaW50XyIuCisvLyBJbiB0aGUgQ0xvb3AgaW1wbGVtZW50YXRpb24sIHRoZSAy
IGFyZSBlcXVpdmFsZW50LiBIZW5jZSwgd2Ugc2V0IHVwIHRoaXMKKy8vIGFsaWFzIGhlcmUuCisv
LworLy8gTm90ZTogd2UgZG9uJ3QganVzdCBkbyB0aGlzIGZvciBhbGwgb3Bjb2RlcyBiZWNhdXNl
IHdlIG9ubHkgbmVlZCBhIGZldywKKy8vIGFuZCBjdXJyZW50bHksIEZPUl9FQUNIX09QQ09ERV9J
RCgpIGluY2x1ZGVzIHRoZSBsbGludCBhbmQgSklUIG9wY29kZQorLy8gZXh0ZW5zaW9ucyB3aGlj
aCB3ZSBkZWZpbml0ZWx5IGRvbid0IHdhbnQgdG8gYWRkIGFuIGFsaWFzIGZvci4gV2l0aCBzb21l
CisvLyBtaW5vciByZWZhY3RvcmluZywgd2UgY2FuIHVzZSBGT1JfRUFDSF9PUENPREVfSUQoKSB0
byBhdXRvbWF0aWNhbGx5CisvLyBnZW5lcmF0ZSBhIGxsaW50XyBhbGlhcyBmb3IgYWxsIG9wY29k
ZXMsIGJ1dCB0aGF0IGlzIG5vdCBuZWVkZWQgYXQgdGhpcworLy8gdGltZS4KKworY29uc3QgT3Bj
b2RlSUQgbGxpbnRfb3BfY2FsbCA9IG9wX2NhbGw7Citjb25zdCBPcGNvZGVJRCBsbGludF9vcF9j
YWxsX2V2YWwgPSBvcF9jYWxsX2V2YWw7Citjb25zdCBPcGNvZGVJRCBsbGludF9vcF9jYWxsX3Zh
cmFyZ3MgPSBvcF9jYWxsX3ZhcmFyZ3M7Citjb25zdCBPcGNvZGVJRCBsbGludF9vcF9jb25zdHJ1
Y3QgPSBvcF9jb25zdHJ1Y3Q7Citjb25zdCBPcGNvZGVJRCBsbGludF9vcF9jYXRjaCA9IG9wX2Nh
dGNoOworY29uc3QgT3Bjb2RlSUQgbGxpbnRfb3BfZ2V0X2J5X2lkID0gb3BfZ2V0X2J5X2lkOwor
Y29uc3QgT3Bjb2RlSUQgbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lID0gb3BfZ2V0X2J5
X2lkX291dF9vZl9saW5lOworY29uc3QgT3Bjb2RlSUQgbGxpbnRfb3BfcHV0X2J5X2lkID0gb3Bf
cHV0X2J5X2lkOworY29uc3QgT3Bjb2RlSUQgbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5l
ID0gb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOworCitjb25zdCBPcGNvZGVJRCBsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QgPQorICAgIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDsKK2NvbnN0IE9wY29kZUlEIGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdF9vdXRfb2ZfbGluZSA9CisgICAgb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lOworY29uc3QgT3Bjb2RlSUQgbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsID0KKyAgICBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw7Citjb25zdCBPcGNv
ZGVJRCBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUgPQor
ICAgIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTsKKworY29uc3Qg
T3Bjb2RlSUQgbGxpbnRfb3BfbWV0aG9kX2NoZWNrID0gb3BfbWV0aG9kX2NoZWNrOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2Vsc2UgLy8gIUVOQUJMRShMTElOVF9DX0xPT1ApCisKICNkZWZp
bmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lk
IGxsaW50XyMjb3Bjb2RlKCk7CiAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wpOwogI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKQEAgLTQwLDYgKzgyLDcg
QEAKICAgICBGT1JfRUFDSF9MTElOVF9OQVRJVkVfSEVMUEVSKERFQ0xBUkVfTExJTlRfTkFUSVZF
X0hFTFBFUikKICN1bmRlZiBERUNMQVJFX0xMSU5UX05BVElWRV9IRUxQRVIKIAorI2VuZGlmIC8v
ICFFTkFCTEUoTExJTlRfQ19MT09QKQogCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAxMjczNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHdvcmtpbmcgY29w
eSkKQEAgLTk2LDYgKzk2LDEyIEBAIGNsYXNzIEFzc2VtYmxlcgogICAgICAgICByZXN1bHQKICAg
ICBlbmQKICAgICAKKyAgICAjIFB1dHMgYSBDIFN0YXRlbWVudCBpbiB0aGUgb3V0cHV0IHN0cmVh
bS4KKyAgICBkZWYgcHV0YygqbGluZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6
YXNtCisgICAgICAgIEBvdXRwLnB1dHMoZm9ybWF0RHVtcCgiICAgICIgKyBsaW5lLmpvaW4oJycp
LCBsYXN0Q29tbWVudCkpCisgICAgZW5kCisgICAgCiAgICAgZGVmIGZvcm1hdER1bXAoZHVtcFN0
ciwgY29tbWVudCwgY29tbWVudENvbHVtbnM9JHByZWZlcnJlZENvbW1lbnRTdGFydENvbHVtbikK
ICAgICAgICAgaWYgY29tbWVudC5sZW5ndGggPiAwCiAgICAgICAgICAgICAiJS0je2NvbW1lbnRD
b2x1bW5zfXMgJXMiICUgW2R1bXBTdHIsIGNvbW1lbnRdCkBAIC0xNzUsNiArMTgxLDE0IEBAIGNs
YXNzIEFzc2VtYmxlcgogICAgICAgICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1l
fSkgXCIiCiAgICAgZW5kCiAgICAgCisgICAgZGVmIHNlbGYuY0xhYmVsUmVmZXJlbmNlKGxhYmVs
TmFtZSkKKyAgICAgICAgIiN7bGFiZWxOYW1lfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2Vs
Zi5jTG9jYWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICIje2xhYmVsTmFtZX0i
CisgICAgZW5kCisgICAgCiAgICAgZGVmIGNvZGVPcmlnaW4odGV4dCkKICAgICAgICAgY2FzZSBA
Y29tbWVudFN0YXRlCiAgICAgICAgIHdoZW4gOm5vbmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAxMjczNjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkod29ya2luZyBjb3B5KQpA
QCAtMjUsMTIgKzI1LDE0IEBAIHJlcXVpcmUgImNvbmZpZyIKIHJlcXVpcmUgImFybXY3IgogcmVx
dWlyZSAiYXN0IgogcmVxdWlyZSAieDg2IgorcmVxdWlyZSAiY2xvb3AiCiAKIEJBQ0tFTkRTID0K
ICAgICBbCiAgICAgICJYODYiLAogICAgICAiWDg2XzY0IiwKLSAgICAgIkFSTXY3IgorICAgICAi
QVJNdjciLAorICAgICAiQ19MT09QIgogICAgIF0KIAogIyBLZWVwIHRoZSBzZXQgb2Ygd29ya2lu
ZyBiYWNrZW5kcyBzZXBhcmF0ZSBmcm9tIHRoZSBzZXQgb2YgYmFja2VuZHMgdGhhdCBtaWdodCBi
ZQpAQCAtNDIsNyArNDQsOCBAQCBXT1JLSU5HX0JBQ0tFTkRTID0KICAgICBbCiAgICAgICJYODYi
LAogICAgICAiWDg2XzY0IiwKLSAgICAgIkFSTXY3IgorICAgICAiQVJNdjciLAorICAgICAiQ19M
T09QIgogICAgIF0KIAogQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNL
RU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKQEAgLTc2LDEyICs3OSwxOCBAQCBjbGFzcyBMYWJl
bFJlZmVyZW5jZQogICAgIGRlZiBhc21MYWJlbAogICAgICAgICBBc3NlbWJsZXIubGFiZWxSZWZl
cmVuY2UobmFtZVsxLi4tMV0pCiAgICAgZW5kCisgICAgZGVmIGNMYWJlbAorICAgICAgICBBc3Nl
bWJsZXIuY0xhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICAgIGVuZAogZW5kCiAKIGNsYXNz
IExvY2FsTGFiZWxSZWZlcmVuY2UKICAgICBkZWYgYXNtTGFiZWwKICAgICAgICAgQXNzZW1ibGVy
LmxvY2FsTGFiZWxSZWZlcmVuY2UoIl9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0pCiAgICAgZW5k
CisgICAgZGVmIGNMYWJlbAorICAgICAgICBBc3NlbWJsZXIuY0xvY2FsTGFiZWxSZWZlcmVuY2Uo
Il9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0pCisgICAgZW5kCiBlbmQKIAogY2xhc3MgU2tpcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw5ODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgImNvbmZpZyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9wdCIKKwor
IyBUaGUgQ0xvb3AgbGxpbnQgYmFja2VuZCBpcyBpbml0aWFsbHkgYmFzZWQgb24gdGhlIEFSTXY3
IGJhY2tlbmQsIGFuZAorIyB0aGVuIGZ1cnRoZXIgZW5oYW5jZWQgd2l0aCBhIGZldyBpbnN0cnVj
dGlvbnMgZnJvbSB0aGUgeDg2IGJhY2tlbmQgdG8KKyMgc3VwcG9ydCBidWlsZGluZyBmb3IgWDY0
IHRhcmdldHMuICBIZW5jZSwgdGhlIHNoYXBlIG9mIHRoZSBnZW5lcmF0ZWQKKyMgY29kZSBhbmQg
dGhlIHVzYWdlIGNvbnZlbnRpb24gb2YgcmVnaXN0ZXJzIHdpbGwgbG9vayBhIGxvdCBsaWtlIHRo
ZQorIyBBUk12NyBiYWNrZW5kJ3MuCisKK2RlZiBjbG9vcE1hcFR5cGUodHlwZSkKKyAgICBjYXNl
IHR5cGUKKyAgICB3aGVuIDppbnQ7ICAgICAgICAgICAgIi5pIgorICAgIHdoZW4gOnVpbnQ7ICAg
ICAgICAgICAiLnUiCisgICAgd2hlbiA6aW50MzI7ICAgICAgICAgICIuaTMyIgorICAgIHdoZW4g
OnVpbnQzMjsgICAgICAgICAiLnUzMiIKKyAgICB3aGVuIDppbnQ4OyAgICAgICAgICAgIi5pOCIK
KyAgICB3aGVuIDp1aW50ODsgICAgICAgICAgIi51OCIKKyAgICB3aGVuIDppbnQ4UHRyOyAgICAg
ICAgIi5pOHAiCisgICAgd2hlbiA6dm9pZFB0cjsgICAgICAgICIudnAiCisgICAgd2hlbiA6bmF0
aXZlRnVuYzsgICAgICIubmF0aXZlRnVuYyIKKyAgICB3aGVuIDpkb3VibGU7ICAgICAgICAgIi5k
IgorICAgIHdoZW4gOmNhc3RUb0RvdWJsZTsgICAiLmNhc3RUb0RvdWJsZSIKKyAgICB3aGVuIDpj
YXN0VG9Wb2lkUHRyOyAgIi5jYXN0VG9Wb2lkUHRyIgorICAgIHdoZW4gOm9wY29kZTsgICAgICAg
ICAiLm9wY29kZSIKKyAgICBlbHNlOworICAgICAgICByYWlzZSAiVW5zdXBwb3J0ZWQgdHlwZSIK
KyAgICBlbmQKK2VuZAorCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlciA8IE5vQ2hpbGRyZW4KKyAg
ICBkZWYgZHVtcAorICAgICAgICBAbmFtZQorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9
OmludCkKKyAgICAgICAgQG5hbWUgKyBjbG9vcE1hcFR5cGUodHlwZSkKKyAgICBlbmQKK2VuZAor
CitDX0xPT1BfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisKK2NsYXNz
IFJlZ2lzdGVySUQKKyAgICBkZWYgZHVtcAorICAgICAgICBjYXNlIG5hbWUKKyAgICAgICAgd2hl
biAidDAiCisgICAgICAgICAgICAidDAiCisgICAgICAgIHdoZW4gInQxIgorICAgICAgICAgICAg
InQxIgorICAgICAgICB3aGVuICJ0MiIKKyAgICAgICAgICAgICJ0MiIKKyAgICAgICAgd2hlbiAi
dDMiCisgICAgICAgICAgICAidDMiCisgICAgICAgIHdoZW4gInQ0IgorICAgICAgICAgICAgInJQ
QyIKKyAgICAgICAgd2hlbiAidDYiCisgICAgICAgICAgICAickJhc2VQQyIKKyAgICAgICAgd2hl
biAiY3NyMSIKKyAgICAgICAgICAgICJ0YWdUeXBlTnVtYmVyIgorICAgICAgICB3aGVuICJjc3Iy
IgorICAgICAgICAgICAgInRhZ01hc2siCisgICAgICAgIHdoZW4gImNmciIKKyAgICAgICAgICAg
ICJjZnIiCisgICAgICAgIHdoZW4gImxyIgorICAgICAgICAgICAgInJSZXRWUEMiCisgICAgICAg
IHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBy
YWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIENfTE9PUCBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTppbnQpCisg
ICAgICAgIGR1bXAgKyBjbG9vcE1hcFR5cGUodHlwZSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBG
UFJlZ2lzdGVySUQKKyAgICBkZWYgZHVtcAorICAgICAgICBjYXNlIG5hbWUKKyAgICAgICAgd2hl
biAiZnQwIiwgImZyIgorICAgICAgICAgICAgImQwIgorICAgICAgICB3aGVuICJmdDEiCisgICAg
ICAgICAgICAiZDEiCisgICAgICAgIHdoZW4gImZ0MiIKKyAgICAgICAgICAgICJkMiIKKyAgICAg
ICAgd2hlbiAiZnQzIgorICAgICAgICAgICAgImQzIgorICAgICAgICB3aGVuICJmdDQiCisgICAg
ICAgICAgICAiZDQiCisgICAgICAgIHdoZW4gImZ0NSIKKyAgICAgICAgICAgICJkNSIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBDX0xP
T1AgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVm
IGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBkdW1wICsgY2xvb3BNYXBUeXBlKHR5cGUpCisg
ICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7
dmFsdWV9IgorICAgIGVuZAorICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludCkKKyAgICAgICAgIyBU
aGVyZSBpcyBhIGNhc2Ugb2YgYSB2ZXJ5IGxhcmdlIHVuc2lnbmVkIG51bWJlciAoMHg4MDAwMDAw
MDAwMDAwMDAwKQorICAgICAgICAjIHdoaWNoIHdlIHdpc2ggdG8gZW5jb2RlLiAgVW5mb3J0dW5h
dGVseSwgdGhlIEMvQysrIGNvbXBpbGVyCisgICAgICAgICMgY29tcGxhaW5zIGlmIHdlIGV4cHJl
c3MgdGhhdCBudW1iZXIgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIGludGVnZXIuCisgICAgICAgICMg
SGVuY2UsIGZvciBwb3NpdGl2ZSB2YWx1ZXMsIHdlIGp1c3QgY29udmVydCB0aGUgbnVtYmVyIGlu
dG8gaGV4IGZvcm0KKyAgICAgICAgIyB0byBrZWVwIHRoZSBjb21waWxlciBoYXBweS4KKyAgICAg
ICAgIworICAgICAgICAjIEhvd2V2ZXIsIGZvciBuZWdhdGl2ZSB2YWx1ZXMsIHRoZSB0b19zKDE2
KSBoZXggY29udmVyc2lvbiBtZXRob2QgZG9lcworICAgICAgICAjIG5vdCBzdHJpcCB0aGUgIi0i
IHNpZ24gcmVzdWx0aW5nIGluIGEgbWVhbmluZ2xlc3MgIjB4LS4uLiIgdmFsdWVTdHIuCisgICAg
ICAgICMgVG8gd29ya2Fyb3VuZCB0aGlzLCB3ZSBzaW1wbHkgZG9uJ3QgZW5jb2RlIG5lZ2F0aXZl
IG51bWJlcnMgYXMgaGV4LgorCisgICAgICAgIHZhbHVlU3RyID0gKHZhbHVlIDwgMCkgPyAiI3t2
YWx1ZX0iIDogIjB4I3t2YWx1ZS50b19zKDE2KX0iCisKKyAgICAgICAgY2FzZSB0eXBlCisgICAg
ICAgIHdoZW4gOmludDg7ICAgICJpbnQ4X3QoI3t2YWx1ZVN0cn0pIgorICAgICAgICB3aGVuIDpp
bnQzMjsgICAiaW50MzJfdCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOmludDsgICAgICJp
bnRwdHJfdCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOnVpbnQ4OyAgICJ1aW50OF90KCN7
dmFsdWVTdHJ9KSIKKyAgICAgICAgd2hlbiA6dWludDMyOyAgInVpbnQzMl90KCN7dmFsdWVTdHJ9
KSIKKyAgICAgICAgd2hlbiA6dWludDsgICAgInVpbnRwdHJfdCgje3ZhbHVlU3RyfSkiCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJOb3QgaW1wbGVtZW50ZWQgaW1tZWRpYXRlIG9m
IHR5cGU6ICN7dHlwZX0iIAorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRy
ZXNzCisgICAgZGVmIGR1bXAKKyAgICAgICAgIlsje2Jhc2UuZHVtcH0sICN7b2Zmc2V0LnZhbHVl
fV0iCisgICAgZW5kCisgICAgZGVmIGNsVmFsdWUodHlwZT06aW50KQorICAgICAgICBjYXNlIHR5
cGUKKyAgICAgICAgd2hlbiA6aW50ODsgICAgICAgICBpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4g
OmludDMyOyAgICAgICAgaW50MzJNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50OyAgICAgICAgICBp
bnRNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDg7ICAgICAgICB1aW50OE1lbVJlZgorICAgICAg
ICB3aGVuIDp1aW50MzI7ICAgICAgIHVpbnQzMk1lbVJlZgorICAgICAgICB3aGVuIDp1aW50OyAg
ICAgICAgIHVpbnRNZW1SZWYKKyAgICAgICAgd2hlbiA6b3Bjb2RlOyAgICAgICBvcGNvZGVNZW1S
ZWYKKyAgICAgICAgd2hlbiA6bmF0aXZlRnVuYzsgICBuYXRpdmVGdW5jTWVtUmVmCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIEFkZHJlc3MgdHlwZTogI3t0eXBl
fSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIHBvaW50ZXJFeHByCisgICAgICAgIGlm
IGJhc2UuaXNfYT8gUmVnaXN0ZXJJRCBhbmQgYmFzZS5uYW1lID09ICJzcCIgCisgICAgICAgICAg
ICBvZmZzZXRWYWx1ZSA9ICIje29mZnNldC52YWx1ZX0iCisgICAgICAgICAgICAiKGFzc2VydCgj
e29mZnNldFZhbHVlfSA9PSBvZmZzZXRvZihKSVRTdGFja0ZyYW1lLCBnbG9iYWxEYXRhKSksICZz
cC0+Z2xvYmFsRGF0YSkiCisgICAgICAgIGVsc2lmIG9mZnNldC52YWx1ZSA9PSAwCisgICAgICAg
ICAgICAiI3tiYXNlLmNsVmFsdWUoOmludDhQdHIpfSIKKyAgICAgICAgZWxzaWYgb2Zmc2V0LnZh
bHVlID4gMAorICAgICAgICAgICAgIiN7YmFzZS5jbFZhbHVlKDppbnQ4UHRyKX0gKyAje29mZnNl
dC52YWx1ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICIje2Jhc2UuY2xWYWx1ZSg6aW50
OFB0cil9IC0gI3stb2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVm
IGludDhNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDhfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAg
ICBlbmQKKyAgICBkZWYgaW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDE2X3QqPigje3Bv
aW50ZXJFeHByfSkiCisgICAgZW5kCisgICAgZGVmIGludDMyTWVtUmVmCisgICAgICAgICIqQ0FT
VDxpbnQzMl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiBpbnRNZW1SZWYK
KyAgICAgICAgIipDQVNUPGludHB0cl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAg
IGRlZiB1aW50OE1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludDhfdCo+KCN7cG9pbnRlckV4cHJ9
KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50MTZf
dCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDMyTWVtUmVmCisgICAg
ICAgICIqQ0FTVDx1aW50MzJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYg
dWludE1lbVJlZgorICAgICAgICAiKkNBU1Q8dWludHB0cl90Kj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorICAgIGRlZiBuYXRpdmVGdW5jTWVtUmVmCisgICAgICAgICIqQ0FTVDxOYXRpdmVG
dW5jdGlvbio+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgb3Bjb2RlTWVtUmVm
CisgICAgICAgICIqQ0FTVDxPcGNvZGUqPigje3BvaW50ZXJFeHByfSkiCisgICAgZW5kCisgICAg
ZGVmIGRibE1lbVJlZgorICAgICAgICAiKkNBU1Q8ZG91YmxlKj4oI3twb2ludGVyRXhwcn0pIgor
ICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBkdW1wCisgICAgICAgICJb
I3tiYXNlLmR1bXB9LCAje29mZnNldC5kdW1wfSwgI3tpbmRleC5kdW1wfSA8PCAje3NjYWxlU2hp
ZnR9XSIKKyAgICBlbmQKKyAgICBkZWYgY2xWYWx1ZSh0eXBlPTppbnQpCisgICAgICAgIGNhc2Ug
dHlwZQorICAgICAgICB3aGVuIDppbnQ4OyAgICAgICBpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4g
OmludDMyOyAgICAgIGludDMyTWVtUmVmCisgICAgICAgIHdoZW4gOmludDsgICAgICAgIGludE1l
bVJlZgorICAgICAgICB3aGVuIDp1aW50ODsgICAgICB1aW50OE1lbVJlZgorICAgICAgICB3aGVu
IDp1aW50MzI7ICAgICB1aW50MzJNZW1SZWYKKyAgICAgICAgd2hlbiA6dWludDsgICAgICAgdWlu
dE1lbVJlZgorICAgICAgICB3aGVuIDpvcGNvZGU7ICAgICBvcGNvZGVNZW1SZWYKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgQmFzZUluZGV4IHR5cGU6ICN7dHlw
ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBwb2ludGVyRXhwcgorICAgICAgICBp
ZiBiYXNlLmlzX2E/IFJlZ2lzdGVySUQgYW5kIGJhc2UubmFtZSA9PSAic3AiCisgICAgICAgICAg
ICBvZmZzZXRWYWx1ZSA9ICIoI3tpbmRleC5jbFZhbHVlKDppbnQzMil9IDw8ICN7c2NhbGVTaGlm
dH0pICsgI3tvZmZzZXQuY2xWYWx1ZX0pIgorICAgICAgICAgICAgIihhc3NlcnQoI3tvZmZzZXRW
YWx1ZX0gPT0gb2Zmc2V0b2YoSklUU3RhY2tGcmFtZSwgZ2xvYmFsRGF0YSkpLCAmc3AtPmdsb2Jh
bERhdGEpIgorICAgICAgICBlbHNlCisgICAgICAgICAgICAiI3tiYXNlLmNsVmFsdWUoOmludDhQ
dHIpfSArICgje2luZGV4LmNsVmFsdWUoOmludDMyKX0gPDwgI3tzY2FsZVNoaWZ0fSkgKyAje29m
ZnNldC5jbFZhbHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIGludDhNZW1SZWYK
KyAgICAgICAgIipDQVNUPGludDhfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBk
ZWYgaW50MTZNZW1SZWYKKyAgICAgICAgIipDQVNUPGludDE2X3QqPigje3BvaW50ZXJFeHByfSki
CisgICAgZW5kCisgICAgZGVmIGludDMyTWVtUmVmCisgICAgICAgICIqQ0FTVDxpbnQzMl90Kj4o
I3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiBpbnRNZW1SZWYKKyAgICAgICAgIipD
QVNUPGludHB0cl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAgIGRlZiB1aW50OE1l
bVJlZgorICAgICAgICAiKkNBU1Q8dWludDhfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQK
KyAgICBkZWYgdWludDE2TWVtUmVmCisgICAgICAgICIqQ0FTVDx1aW50MTZfdCo+KCN7cG9pbnRl
ckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludDMyTWVtUmVmCisgICAgICAgICIqQ0FTVDx1
aW50MzJfdCo+KCN7cG9pbnRlckV4cHJ9KSIKKyAgICBlbmQKKyAgICBkZWYgdWludE1lbVJlZgor
ICAgICAgICAiKkNBU1Q8dWludHB0cl90Kj4oI3twb2ludGVyRXhwcn0pIgorICAgIGVuZAorICAg
IGRlZiBvcGNvZGVNZW1SZWYKKyAgICAgICAgIipDQVNUPE9wY29kZSo+KCN7cG9pbnRlckV4cHJ9
KSIKKyAgICBlbmQKKyAgICBkZWYgZGJsTWVtUmVmCisgICAgICAgICIqQ0FTVDxkb3VibGUqPigj
e3BvaW50ZXJFeHByfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisg
ICAgZGVmIGR1bXAKKyAgICAgICAgIiN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAg
ZGVmIGNsVmFsdWUKKyAgICAgICAgZHVtcAorICAgIGVuZAorZW5kCisKKworIworIyBMZWEgc3Vw
cG9ydC4KKyMKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBjbG9vcEVtaXRMZWEoZGVzdGluYXRp
b24sIHR5cGUpCisgICAgICAgIGlmIGRlc3RpbmF0aW9uID09IGJhc2UKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tkZXN0aW5hdGlvbi5jbFZhbHVlKDppbnQ4UHRyKX0gKz0gI3tvZmZzZXQuY2xW
YWx1ZSh0eXBlKX07IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7ZGVz
dGluYXRpb24uY2xWYWx1ZSg6aW50OFB0cil9ID0gI3tiYXNlLmNsVmFsdWUoOmludDhQdHIpfSAr
ICN7b2Zmc2V0LmNsVmFsdWUodHlwZSl9OyIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGNsb29wRW1pdExlYShkZXN0aW5hdGlvbiwgdHlwZSkK
KyAgICAgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVy
byBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAg
ICAgJGFzbS5wdXRjICIje2Rlc3RpbmF0aW9uLmNsVmFsdWUoOmludDhQdHIpfSA9ICN7YmFzZS5j
bFZhbHVlKDppbnQ4UHRyKX0gKyAoI3tpbmRleC5jbFZhbHVlfSA8PCAje3NjYWxlU2hpZnR9KTsi
CisgICAgZW5kCitlbmQKKworIworIyBBY3R1YWwgbG93ZXJpbmcgY29kZSBmb2xsb3dzLgorIwor
CitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiBnZXRNb2RpZmllZExpc3RDX0xPT1AKKyAgICAgICAg
bXlMaXN0ID0gQGxpc3QKKyAgICAgICAgCisgICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBv
bmx5IHNlZSBpbnN0cnVjdGlvbnMgYW5kIGxhYmVscy4KKyAgICAgICAgbXlMaXN0LmVhY2ggewor
ICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3Ry
dWN0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS5pc19hPyBMb2NhbExhYmVsIG9yCisgICAgICAgICAgICAgICAg
ICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7
bm9kZS5pbnNwZWN0fSBhdCAje25vZGUuY29kZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBteUxpc3QKKyAgICBlbmQKK2VuZAor
CitkZWYgY2xPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKQorZW5kCisKKworZGVmIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgdHlw
ZSwgb3BlcmF0b3IpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1syXS5jbFZhbHVlKHR5cGUpfSA9ICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0
eXBlKX0gI3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgZWxz
ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgIHJhaXNl
IHVubGVzcyBub3Qgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSA9ICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0
eXBlKX0gI3tvcGVyYXRvcn0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgZW5k
CitlbmQKKworZGVmIGNsb29wRW1pdFNoaWZ0T3BlcmF0aW9uKG9wZXJhbmRzLCB0eXBlLCBvcGVy
YXRvcikKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRjICIje29w
ZXJhbmRzWzJdLmNsVmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfSAj
e29wZXJhdG9yfSAoI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfSAmIDB4MWYpOyIKKyAgICBl
bHNlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgcmFp
c2UgdW5sZXNzIG5vdCBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9ID0gI3tvcGVyYW5kc1sxXS5jbFZhbHVl
KHR5cGUpfSAje29wZXJhdG9yfSAoI3tvcGVyYW5kc1swXS5jbFZhbHVlKDppbnQpfSAmIDB4MWYp
OyIKKyAgICBlbmQKK2VuZAorCitkZWYgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVj
a0FuZEJyYW5jaChvcGVyYW5kcywgY29uZGl0aW9uKQorICAgICRhc20ucHV0YyAiaWYgKGlzbmFu
KCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6ZG91YmxlKX0pIHx8IGlzbmFuKCN7b3BlcmFuZHNbMV0u
Y2xWYWx1ZSg6ZG91YmxlKX0pIgorICAgICRhc20ucHV0YyAiICAgIHx8ICgje29wZXJhbmRzWzBd
LmNsVmFsdWUoOmRvdWJsZSl9ICN7Y29uZGl0aW9ufSAje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRv
dWJsZSl9KSkiCisgICAgJGFzbS5wdXRjICIgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgorZW5kCisKKworZGVmIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIHR5cGUsIGNv
bXBhcmF0b3IpCisgICAgIyBUaGUgcmVzdWx0IGlzIGEgYm9vbGVhbi4gIEhlbmNlLCBpdCBkb2Vz
bid0IG5lZWQgdG8gYmUgYmFzZWQgb24gdGhlIHR5cGUKKyAgICAjIG9mIHRoZSBhcmd1bWVudHMg
YmVpbmcgY29tcGFyZWQuCisgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmNsVmFsdWV9ID0g
KCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29wMiA9IG9wZXJh
bmRzWzFdLmNsVmFsdWUodHlwZSl9KTsiCitlbmQKKworCitkZWYgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgdHlwZSwgY29tcGFyYXRvcikKKyAgICAkYXNtLnB1dGMgImlmICgj
e29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9ICN7Y29tcGFyYXRvcn0gI3tvcGVyYW5kc1sxXS5j
bFZhbHVlKHR5cGUpfSkiCisgICAgJGFzbS5wdXRjICIgICAgZ290byAje29wZXJhbmRzWzJdLmNM
YWJlbH07IgorZW5kCisKKworIyBjb25kaXRpb25UZXN0IHNob3VsZCBjb250YWluIGEgc3RyaW5n
IHRoYXQgcHJvdmlkZXMgYSBjb21wYXJhdG9yIGFuZCBhIFJIUworIyB2YWx1ZSBlLmcuICI8IDAi
LgorZGVmIGNsb29wR2VuZXJhdGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJhbmRzLCB0eXBlLCBj
b25kaXRpb25UZXN0KQorICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSkKKworICAg
ICMgVGhlIG9wZXJhbmRzIG11c3QgY29uc2lzdCBvZiAyIG9yIDMgdmFsdWVzLgorICAgIGNhc2Ug
b3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMiAjIEp1c3QgdGVzdCBvcDEgYWdhaW5zdCB0aGUgY29u
ZGl0aW9uVGVzdC4KKyAgICAgICAgbGhzID0gb3AxCisgICAgd2hlbiAzICMgTWFzayBvcDEgd2l0
aCBvcDIgYmVmb3JlIHRlc3RpbmcgYWdhaW5zdCB0aGUgY29uZGl0aW9uVGVzdC4KKyAgICAgICAg
bGhzID0gIigje29wMX0gJiAje29wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KSIKKyAgICBlbHNl
CisgICAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJh
bmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgIiN7
bGhzfSAje2NvbmRpdGlvblRlc3R9IgorZW5kCisKKyMgY29uZGl0aW9uVGVzdCBzaG91bGQgY29u
dGFpbiBhIHN0cmluZyB0aGF0IHByb3ZpZGVzIGEgY29tcGFyYXRvciBhbmQgYSBSSFMKKyMgdmFs
dWUgZS5nLiAiPCAwIi4KK2RlZiBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIHR5
cGUsIGNvbmRpdGlvblRlc3QsIGJyYW5jaFRhcmdldCkKKyAgICBjb25kaXRpb25FeHByID0gY2xv
b3BHZW5lcmF0ZUNvbmRpdGlvbkV4cHJlc3Npb24ob3BlcmFuZHMsIHR5cGUsIGNvbmRpdGlvblRl
c3QpCisgICAgJGFzbS5wdXRjICJpZiAoI3tjb25kaXRpb25FeHByfSkiCisgICAgJGFzbS5wdXRj
ICIgICAgZ290byAje2JyYW5jaFRhcmdldH07IgorZW5kCisKK2RlZiBjbG9vcEVtaXRUZXN0U2V0
KG9wZXJhbmRzLCB0eXBlLCBjb25kaXRpb25UZXN0KQorICAgICMgVGhlIHJlc3VsdCBpcyBhIGJv
b2xlYW4gY29uZGl0aW9uLiAgSGVuY2UsIHRoZSByZXN1bHQgdHlwZSBpcyBhbHdheXMgYW4KKyAg
ICAjIGludC4gIFRoZSBwYXNzZWQgaW4gdHlwZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSB2YWx1ZXMg
YmVpbmcgdGVzdGVkIGluCisgICAgIyB0aGUgY29uZGl0aW9uIHRlc3QuCisgICAgY29uZGl0aW9u
RXhwciA9IGNsb29wR2VuZXJhdGVDb25kaXRpb25FeHByZXNzaW9uKG9wZXJhbmRzLCB0eXBlLCBj
b25kaXRpb25UZXN0KQorICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1stMV0uY2xWYWx1ZX0gPSAo
I3tjb25kaXRpb25FeHByfSk7IgorZW5kCisKK2RlZiBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVy
YW5kcywgb3BlcmF0b3IsIHR5cGUsIGNvbmRpdGlvblRlc3QpCisgICAgY2FzZSB0eXBlCisgICAg
d2hlbiA6aW50OyAgIHRlbXBUeXBlID0gImludHB0cl90IgorICAgIHdoZW4gOmludDMyOyB0ZW1w
VHlwZSA9ICJpbnQzMl90IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQg
dHlwZSIKKyAgICBlbmQKKworICAgIG9wMSA9IG9wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSkKKyAg
ICBvcDIgPSBvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpCisKKyAgICAkYXNtLnB1dGMgInsiCisg
ICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gdGVtcCA9ICN7b3AyfSAje29wZXJhdG9yfSAj
e29wMX07IgorICAgICRhc20ucHV0YyAiICAgIGlmICh0ZW1wICN7Y29uZGl0aW9uVGVzdH0pIgor
ICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29wZXJhbmRzWzJdLmNMYWJlbH07IgorICAg
ICRhc20ucHV0YyAiICAgICN7b3AyfSA9IHRlbXA7IgorICAgICRhc20ucHV0YyAifSIKK2VuZAor
CitkZWYgY2xvb3BBZGRPdmVyZmxvd1Rlc3Qob3BlcmFuZHMsIHR5cGUpCisgICAgY2FzZSB0eXBl
CisgICAgd2hlbiA6aW50MzIKKyAgICAgICAgdGVtcFR5cGUgPSAiaW50MzJfdCIKKyAgICAgICAg
c2lnbkJpdCA9ICJTSUdOX0JJVDMyIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVt
ZW50ZWQgdHlwZSIKKyAgICBlbmQKKworICAgICRhc20ucHV0YyAiICAgICN7dGVtcFR5cGV9IGEg
PSAje29wZXJhbmRzWzBdLmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAje3Rl
bXBUeXBlfSBiID0gI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5wdXRj
ICIgICAgLy8gc2lnbihiKSBzaWduKGEpIHwgT3ZlcmZsb3dzIGlmOiIKKyAgICAkYXNtLnB1dGMg
IiAgICAvLyAwICAgICAgIDAgICAgICAgfCBzaWduKGIrYSkgPSAxIChwb3MgKyBwb3MgIT0gbmVn
KSIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyAwICAgICAgIDEgICAgICAgfCBuZXZlciIKKyAgICAk
YXNtLnB1dGMgIiAgICAvLyAxICAgICAgIDAgICAgICAgfCBuZXZlciIKKyAgICAkYXNtLnB1dGMg
IiAgICAvLyAxICAgICAgIDEgICAgICAgfCBzaWduKGIrYSkgPSAwIChuZWcgKyBuZWcgIT0gcG9z
KSIKKyAgICAiKCgje3NpZ25CaXR9KGIpID09ICN7c2lnbkJpdH0oYSkpICYmICgje3NpZ25CaXR9
KGIrYSkgIT0gI3tzaWduQml0fShhKSkpIgorZW5kCisKK2RlZiBjbG9vcFN1Yk92ZXJmbG93VGVz
dChvcGVyYW5kcywgdHlwZSkKKyAgICBjYXNlIHR5cGUKKyAgICB3aGVuIDppbnQzMgorICAgICAg
ICB0ZW1wVHlwZSA9ICJpbnQzMl90IgorICAgICAgICBzaWduQml0ID0gIlNJR05fQklUMzIiCisg
ICAgZWxzZQorICAgICAgICByYWlzZSAiVW5pbXBsZW1lbnRlZCB0eXBlIgorICAgIGVuZAorCisg
ICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0
eXBlKX07IgorICAgICRhc20ucHV0YyAiICAgICN7dGVtcFR5cGV9IGIgPSAje29wZXJhbmRzWzFd
LmNsVmFsdWUodHlwZSl9OyIKKyAgICAkYXNtLnB1dGMgIiAgICAvLyBzaWduKGIpIHNpZ24oYSkg
fCBPdmVyZmxvd3MgaWY6IgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAgMCAgICAgICB8
IG5ldmVyIgorICAgICRhc20ucHV0YyAiICAgIC8vIDAgICAgICAgMSAgICAgICB8IHNpZ24oYi1h
KSA9IDEgKHBvcyAtIG5lZyAhPSBwb3MpIgorICAgICRhc20ucHV0YyAiICAgIC8vIDEgICAgICAg
MCAgICAgICB8IHNpZ24oYi1hKSA9IDAgKG5lZyAtIHBvcyAhPSBwb3MpIgorICAgICRhc20ucHV0
YyAiICAgIC8vIDEgICAgICAgMSAgICAgICB8IG5ldmVyIgorICAgICIoKCN7c2lnbkJpdH0oYikg
IT0gI3tzaWduQml0fShhKSkgJiYgKCN7c2lnbkJpdH0oYi1hKSA9PSAje3NpZ25CaXR9KGEpKSki
CitlbmQKKworZGVmIGNsb29wTXVsT3ZlcmZsb3dUZXN0KG9wZXJhbmRzLCB0eXBlKQorICAgIGNh
c2UgdHlwZQorICAgIHdoZW4gOmludDMyCisgICAgICAgIHRlbXBUeXBlID0gInVpbnQzMl90Igor
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQgdHlwZSIKKyAgICBlbmQKKyAg
ICAkYXNtLnB1dGMgIiAgICAje3RlbXBUeXBlfSBhID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5
cGUpfTsiCisgICAgJGFzbS5wdXRjICIgICAgI3t0ZW1wVHlwZX0gYiA9ICN7b3BlcmFuZHNbMV0u
Y2xWYWx1ZSh0eXBlKX07IgorICAgICIoKGIgfCBhKSA+PiAxNSkiCitlbmQKKworZGVmIGNsb29w
RW1pdE9wQW5kQnJhbmNoSWZPdmVyZmxvdyhvcGVyYW5kcywgb3BlcmF0b3IsIHR5cGUpCisgICAg
JGFzbS5wdXRjICJ7IgorCisgICAgIyBFbWl0IHRoZSBvdmVyZmxvdyB0ZXN0IGJhc2VkIG9uIHRo
ZSBvcGVyYW5kcyBhbmQgdGhlIHR5cGU6CisgICAgY2FzZSBvcGVyYXRvcgorICAgIHdoZW4gIisi
OyBvdmVyZmxvd1Rlc3QgPSBjbG9vcEFkZE92ZXJmbG93VGVzdChvcGVyYW5kcywgdHlwZSkKKyAg
ICB3aGVuICItIjsgb3ZlcmZsb3dUZXN0ID0gY2xvb3BTdWJPdmVyZmxvd1Rlc3Qob3BlcmFuZHMs
IHR5cGUpCisgICAgd2hlbiAiKiI7IG92ZXJmbG93VGVzdCA9IGNsb29wTXVsT3ZlcmZsb3dUZXN0
KG9wZXJhbmRzLCB0eXBlKQorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVuaW1wbGVtZW50ZWQg
b3BlYXJ0b3IiCisgICAgZW5kCisKKyAgICAkYXNtLnB1dGMgIiAgICBpZiAje292ZXJmbG93VGVz
dH0geyIKKyAgICAkYXNtLnB1dGMgIiAgICAgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgorICAgICRhc20ucHV0YyAiICAgIH0iCisgICAgJGFzbS5wdXRjICIgICAgI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKHR5cGUpfSA9ICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0gI3tvcGVyYXRv
cn0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfTsiCisgICAgJGFzbS5wdXRjICJ9IgorZW5k
CisKKyMgb3BlcmFuZHM6IGNhbGxUYXJnZXQsIGN1cnJlbnRGcmFtZSwgY3VycmVudFBDCitkZWYg
Y2xvb3BFbWl0Q2FsbFNsb3dQYXRoKG9wZXJhbmRzKQorICAgICRhc20ucHV0YyAieyIKKyAgICAk
YXNtLnB1dGMgIiAgICBFeGVjU3RhdGUqIGV4ZWMgPSBDQVNUPEV4ZWNTdGF0ZSo+KCN7b3BlcmFu
ZHNbMV0uY2xWYWx1ZSg6dm9pZFB0cil9KTsiCisgICAgJGFzbS5wdXRjICIgICAgSW5zdHJ1Y3Rp
b24qIHBjID0gQ0FTVDxJbnN0cnVjdGlvbio+KCN7b3BlcmFuZHNbMl0uY2xWYWx1ZSg6dm9pZFB0
cil9KTsiCisgICAgJGFzbS5wdXRjICIgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9ICN7
b3BlcmFuZHNbMF0uY0xhYmVsfShleGVjLCBwYyk7IgorICAgICRhc20ucHV0YyAiICAgIExMSW50
OjpkZWNvZGVSZXN1bHQocmVzdWx0LCB0MC5pbnN0cnVjdGlvbiwgdDEuZXhlY1N0YXRlKTsiCisg
ICAgJGFzbS5wdXRjICJ9IgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgICAgZGVmIGxvd2Vy
Q19MT09QCisgICAgICAgICRhc20uY29kZU9yaWdpbiBjb2RlT3JpZ2luU3RyaW5nIGlmICRlbmFi
bGVDb2RlT3JpZ2luQ29tbWVudHMKKyAgICAgICAgJGFzbS5hbm5vdGF0aW9uIGFubm90YXRpb24g
aWYgJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMKKworICAgICAgICBjYXNlIG9wY29kZQorICAgICAg
ICB3aGVuICJhZGRpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6
aW50MzIsICIrIikKKyAgICAgICAgd2hlbiAiYWRkcCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9w
ZXJhdGlvbihvcGVyYW5kcywgOmludCwgIisiKQorCisgICAgICAgIHdoZW4gImFuZGkiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIiYiKQorICAgICAg
ICB3aGVuICJhbmRwIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6
aW50LCAiJiIpCisKKyAgICAgICAgd2hlbiAib3JpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICJ8IikKKyAgICAgICAgd2hlbiAib3JwIgorICAgICAg
ICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50LCAifCIpCisKKyAgICAgICAg
d2hlbiAieG9yaSIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmlu
dDMyLCAiXiIpCisgICAgICAgIHdoZW4gInhvcnAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVy
YXRpb24ob3BlcmFuZHMsIDppbnQsICJeIikKKworICAgICAgICB3aGVuICJsc2hpZnRpIgorICAg
ICAgICAgICAgY2xvb3BFbWl0U2hpZnRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIjw8IikK
KyAgICAgICAgd2hlbiAibHNoaWZ0cCIKKyAgICAgICAgICAgIGNsb29wRW1pdFNoaWZ0T3BlcmF0
aW9uKG9wZXJhbmRzLCA6aW50LCAiPDwiKQorCisgICAgICAgIHdoZW4gInJzaGlmdGkiCisgICAg
ICAgICAgICBjbG9vcEVtaXRTaGlmdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiPj4iKQor
ICAgICAgICB3aGVuICJyc2hpZnRwIgorICAgICAgICAgICAgY2xvb3BFbWl0U2hpZnRPcGVyYXRp
b24ob3BlcmFuZHMsIDppbnQsICI+PiIpCisKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAg
ICAgICAgICBjbG9vcEVtaXRTaGlmdE9wZXJhdGlvbihvcGVyYW5kcywgOnVpbnQzMiwgIj4+IikK
KyAgICAgICAgd2hlbiAidXJzaGlmdHAiCisgICAgICAgICAgICBjbG9vcEVtaXRTaGlmdE9wZXJh
dGlvbihvcGVyYW5kcywgOnVpbnQsICI+PiIpCisKKyAgICAgICAgd2hlbiAibXVsaSIKKyAgICAg
ICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiKiIpCisgICAgICAg
IHdoZW4gIm11bHAiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDpp
bnQsICIqIikKKworICAgICAgICB3aGVuICJzdWJpIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICItIikKKyAgICAgICAgd2hlbiAic3VicCIKKyAgICAg
ICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludCwgIi0iKQorCisgICAgICAg
IHdoZW4gIm5lZ2kiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSg6aW50MzIpfSA9IC0je29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX07IgorICAgICAgICB3
aGVuICJuZWdwIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzBdLmNsVmFsdWUo
OmludCl9ID0gLSN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50KX07IgorCisgICAgICAgIHdoZW4g
Im5vdGkiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
MzIpfSA9ICEje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX07IgorCisgICAgICAgIHdoZW4g
ImxvYWRpIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmlu
dCl9ID0gI3tvcGVyYW5kc1swXS51aW50MzJNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAibG9hZGlz
IgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmludCl9ID0g
I3tvcGVyYW5kc1swXS5pbnQzMk1lbVJlZn07IgorICAgICAgICB3aGVuICJsb2FkcCIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDppbnQpfSA9ICN7b3BlcmFu
ZHNbMF0uaW50TWVtUmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlaSIKKyAgICAgICAgICAgICRh
c20ucHV0YyAiI3tvcGVyYW5kc1sxXS5pbnQzMk1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmNsVmFs
dWUoOmludDMyKX07IgorICAgICAgICB3aGVuICJzdG9yZXAiCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiN7b3BlcmFuZHNbMV0uaW50TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
KX07IgorICAgICAgICB3aGVuICJsb2FkYiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVy
YW5kc1sxXS5jbFZhbHVlKDppbnQpfSA9ICN7b3BlcmFuZHNbMF0udWludDhNZW1SZWZ9OyIKKyAg
ICAgICAgd2hlbiAibG9hZGJzIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFd
LmNsVmFsdWUoOmludCl9ID0gI3tvcGVyYW5kc1swXS5pbnQ4TWVtUmVmfTsiCisgICAgICAgIHdo
ZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sxXS51aW50OE1l
bVJlZn0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDgpfSIKKyAgICAgICAgd2hlbiAibG9h
ZGgiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0g
PSAje29wZXJhbmRzWzBdLnVpbnQxNk1lbVJlZn07IgorICAgICAgICB3aGVuICJsb2FkaHMiCisg
ICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29w
ZXJhbmRzWzBdLmludDE2TWVtUmVmfTsiCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAg
ICAgICRhc20ucHV0YyAiKiN7b3BlcmFuZHNbMV0udWludDE2TWVtUmVmfSA9ICN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSg6aW50MTYpfTsiCisgICAgICAgIHdoZW4gImxvYWRkIgorICAgICAgICAgICAg
JGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9ID0gI3tvcGVyYW5kc1sw
XS5kYmxNZW1SZWZ9OyIKKyAgICAgICAgd2hlbiAic3RvcmVkIgorICAgICAgICAgICAgJGFzbS5w
dXRjICIje29wZXJhbmRzWzFdLmRibE1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRv
dWJsZSl9OyIKKworICAgICAgICB3aGVuICJhZGRkIgorICAgICAgICAgICAgY2xvb3BFbWl0T3Bl
cmF0aW9uKG9wZXJhbmRzLCA6ZG91YmxlLCAiKyIpCisgICAgICAgIHdoZW4gImRpdmQiCisgICAg
ICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDpkb3VibGUsICIvIikKKyAgICAg
ICAgd2hlbiAic3ViZCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywg
OmRvdWJsZSwgIi0iKQorICAgICAgICB3aGVuICJtdWxkIgorICAgICAgICAgICAgY2xvb3BFbWl0
T3BlcmF0aW9uKG9wZXJhbmRzLCA6ZG91YmxlLCAiKiIpCisKKyAgICAgICAgIyBDb252ZXJ0IGFu
IGludCB2YWx1ZSB0byBpdHMgZG91YmxlIGVxdWl2YWxlbnQsIGFuZCBzdG9yZSBpdCBpbiBhIGRv
dWJsZSByZWdpc3Rlci4KKyAgICAgICAgd2hlbiAiY2kyZCIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiI3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1
ZSg6aW50MzIpfTsiCisgICAgICAgICAgICAKKyAgICAgICAgd2hlbiAiYmRlcSIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI9PSIpCisg
ICAgICAgIHdoZW4gImJkbmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5j
aChvcGVyYW5kcywgOmRvdWJsZSwgIiE9IikKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpkb3VibGUsICI+Iik7Cisg
ICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDpkb3VibGUsICI+PSIpOworICAgICAgICB3aGVuICJiZGx0IgorICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmRvdWJsZSwgIjwiKTsK
KyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJy
YW5jaChvcGVyYW5kcywgOmRvdWJsZSwgIjw9Iik7CisKKyAgICAgICAgd2hlbiAiYmRlcXVuIgor
ICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZURvdWJsZVdpdGhOYU5DaGVja0FuZEJyYW5jaChv
cGVyYW5kcywgIj09IikKKyAgICAgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVEb3VibGVXaXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsICIhPSIpCisg
ICAgICAgIHdoZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVEb3VibGVX
aXRoTmFOQ2hlY2tBbmRCcmFuY2gob3BlcmFuZHMsICI+IikKKyAgICAgICAgd2hlbiAiYmRndGVx
dW4iCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJh
bmNoKG9wZXJhbmRzLCAiPj0iKQorICAgICAgICB3aGVuICJiZGx0dW4iCisgICAgICAgICAgICBj
bG9vcEVtaXRDb21wYXJlRG91YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCAiPCIp
CisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZURv
dWJsZVdpdGhOYU5DaGVja0FuZEJyYW5jaChvcGVyYW5kcywgIjw9IikKKworICAgICAgICB3aGVu
ICJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmlu
dCl9ID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfTsiCisKKyAgICAgICAgd2hlbiAi
YmNkMmkiICAjIG9wZXJhbmRzOiBzcmNEYmwgZHN0SW50IHNsb3dQYXRoCisgICAgICAgICAgICAk
YXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICBkb3VibGUgZCA9ICN7b3Bl
cmFuZHNbMF0uY2xWYWx1ZSg6ZG91YmxlKX07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAg
Y29uc3QgaW50MzJfdCBhc0ludDMyID0gaW50MzJfdChkKTsiCisgICAgICAgICAgICAkYXNtLnB1
dGMgIiAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAmJiBzaWduYml0KGQpKSkgLy8g
dHJ1ZSBmb3IgLTAuMCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiICAgICAgICBnb3RvICAje29w
ZXJhbmRzWzJdLmNMYWJlbH07IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgI3tvcGVyYW5k
c1sxXS5jbFZhbHVlfSA9IGFzSW50MzI7IiAgICAgICAgICAgIAorICAgICAgICAgICAgJGFzbS5w
dXRjICJ9IgorCisgICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7
b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludCl9
OyIKKyAgICAgICAgd2hlbiAic3hpMnAiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFu
ZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludDMyKX07Igor
ICAgICAgICB3aGVuICJ6eGkycCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1sx
XS5jbFZhbHVlKDp1aW50KX0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOnVpbnQzMil9OyIKKyAg
ICAgICAgd2hlbiAibm9wIgorICAgICAgICAgICAgJGFzbS5wdXRjICIvLyBub3AiCisgICAgICAg
IHdoZW4gImJiZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJh
bmRzLCA6aW50OCwgIj09IikKKyAgICAgICAgd2hlbiAiYmllcSIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj09IikKKyAgICAgICAgd2hl
biAiYnBlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMs
IDppbnQsICI9PSIpCisKKyAgICAgICAgd2hlbiAiYmJuZXEiCisgICAgICAgICAgICBjbG9vcEVt
aXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIiE9IikKKyAgICAgICAgd2hlbiAi
YmluZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6
aW50MzIsICIhPSIpCisgICAgICAgIHdoZW4gImJwbmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0
Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIiE9IikKKworICAgICAgICB3aGVuICJi
YmEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWlu
dDgsICI+IikKKyAgICAgICAgd2hlbiAiYmlhIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQzMiwgIj4iKQorICAgICAgICB3aGVuICJicGEiCisg
ICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWludCwgIj4i
KQorCisgICAgICAgIHdoZW4gImJiYWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOnVpbnQ4LCAiPj0iKQorICAgICAgICB3aGVuICJiaWFlcSIKKyAg
ICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDp1aW50MzIsICI+
PSIpCisgICAgICAgIHdoZW4gImJwYWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFu
ZEJyYW5jaChvcGVyYW5kcywgOnVpbnQsICI+PSIpCisKKyAgICAgICAgd2hlbiAiYmJiIgorICAg
ICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQ4LCAiPCIp
CisgICAgICAgIHdoZW4gImJpYiIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFu
Y2gob3BlcmFuZHMsIDp1aW50MzIsICI8IikKKyAgICAgICAgd2hlbiAiYnBiIgorICAgICAgICAg
ICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOnVpbnQsICI8IikKKworICAg
ICAgICB3aGVuICJiYmJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDp1aW50OCwgIjw9IikKKyAgICAgICAgd2hlbiAiYmliZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6dWludDMyLCAiPD0iKQorICAg
ICAgICB3aGVuICJicGJlcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2go
b3BlcmFuZHMsIDp1aW50LCAiPD0iKQorCisgICAgICAgIHdoZW4gImJiZ3QiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50OCwgIj4iKQorICAgICAg
ICB3aGVuICJiaWd0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVy
YW5kcywgOmludDMyLCAiPiIpCisgICAgICAgIHdoZW4gImJwZ3QiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50LCAiPiIpCisKKyAgICAgICAgd2hl
biAiYmJndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5k
cywgOmludDgsICI+PSIpCisgICAgICAgIHdoZW4gImJpZ3RlcSIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQzMiwgIj49IikKKyAgICAgICAgd2hl
biAiYnBndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5k
cywgOmludCwgIj49IikKKworICAgICAgICB3aGVuICJiYmx0IgorICAgICAgICAgICAgY2xvb3BF
bWl0Q29tcGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludDgsICI8IikKKyAgICAgICAgd2hlbiAi
YmlsdCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDpp
bnQzMiwgIjwiKQorICAgICAgICB3aGVuICJicGx0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29t
cGFyZUFuZEJyYW5jaChvcGVyYW5kcywgOmludCwgIjwiKQorCisgICAgICAgIHdoZW4gImJibHRl
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQ4
LCAiPD0iKQorICAgICAgICB3aGVuICJiaWx0ZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21w
YXJlQW5kQnJhbmNoKG9wZXJhbmRzLCA6aW50MzIsICI8PSIpCisgICAgICAgIHdoZW4gImJwbHRl
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRCcmFuY2gob3BlcmFuZHMsIDppbnQs
ICI8PSIpCisKKyAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RB
bmRCcmFuY2hJZihvcGVyYW5kcywgOmludDgsICI9PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkK
KyAgICAgICAgd2hlbiAiYnRpeiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJ
ZihvcGVyYW5kcywgOmludDMyLCAiPT0gMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisgICAgICAg
IHdoZW4gImJ0cHoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFu
ZHMsIDppbnQsICI9PSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKworICAgICAgICB3aGVuICJi
dGJueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmlu
dDgsICIhPSAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpbnoiCisg
ICAgICAgICAgICBjbG9vcEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQzMiwgIiE9
IDAiLCBvcGVyYW5kc1stMV0uY0xhYmVsKQorICAgICAgICB3aGVuICJidHBueiIKKyAgICAgICAg
ICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJZihvcGVyYW5kcywgOmludCwgIiE9IDAiLCBvcGVy
YW5kc1stMV0uY0xhYmVsKQorCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBjbG9v
cEVtaXRUZXN0QW5kQnJhbmNoSWYob3BlcmFuZHMsIDppbnQ4LCAiPCAwIiwgb3BlcmFuZHNbLTFd
LmNMYWJlbCkKKyAgICAgICAgd2hlbiAiYnRpcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RB
bmRCcmFuY2hJZihvcGVyYW5kcywgOmludDMyLCAiPCAwIiwgb3BlcmFuZHNbLTFdLmNMYWJlbCkK
KyAgICAgICAgd2hlbiAiYnRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RBbmRCcmFuY2hJ
ZihvcGVyYW5kcywgOmludCwgIjwgMCIsIG9wZXJhbmRzWy0xXS5jTGFiZWwpCisKKyAgICAgICAg
IyBGb3Igam1wLCB3ZSBkbyBub3Qgd2FudCB0byBhc3N1bWUgdGhhdCB3ZSBoYXZlIENPTVBVVEVE
X0dPVE8gc3VwcG9ydC4KKyAgICAgICAgIyBGb3J0dW5hdGVseSwgdGhlIG9ubHkgdGltZXMgd2Ug
c2hvdWxkIGV2ZXIgZW5jb3VudGVyIGluZGlyZWN0IGptcHMgaXMKKyAgICAgICAgIyB3aGVuIHRo
ZSBqbXAgdGFyZ2V0IGlzIGEgQ0xvb3Agb3Bjb2RlIChieSBkZXNpZ24pLgorICAgICAgICAjCisg
ICAgICAgICMgSGVuY2UsIHdlIGNoZWNrIGlmIHRoZSBqbXAgdGFyZ2V0IGlzIGEga25vd24gbGFi
ZWwgcmVmZXJlbmNlLiBJZiBzbywKKyAgICAgICAgIyB3ZSBjYW4gZW1pdCBhIGdvdG8gZGlyZWN0
bHkuIElmIGl0IGlzIG5vdCBhIGtub3duIHRhcmdldCwgdGhlbiB3ZSBzZXQKKyAgICAgICAgIyB0
aGUgdGFyZ2V0IGluIHRoZSBvcGNvZGUsIGFuZCBkaXNwYXRjaCB0byBpdCB2aWEgd2hhdGV2ZXIg
ZGlzcGF0Y2gKKyAgICAgICAgIyBtZWNoYW5pc20gaXMgaW4gdXNlZC4KKyAgICAgICAgd2hlbiAi
am1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gTG9jYWxMYWJlbFJlZmVyZW5j
ZSBvciBvcGVyYW5kc1swXS5pc19hPyBMYWJlbFJlZmVyZW5jZQorICAgICAgICAgICAgICAgICMg
SGFuZGxlcyBqdW1wcyBsb2NhbCBvciBnbG9iYWwgbGFiZWxzLgorICAgICAgICAgICAgICAgICRh
c20ucHV0YyAiZ290byAje29wZXJhbmRzWzBdLmNMYWJlbH07IgorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICMgSGFuZGxlcyBqdW1wcyB0byBzb21lIGNvbXB1dGVkIHRhcmdldC4K
KyAgICAgICAgICAgICAgICAjIE5PVEU6IG11c3QgYmUgYW4gb3Bjb2RlIGhhbmRsZXIgb3IgYSBs
bGludCBnbHVlIGhlbHBlci4KKyAgICAgICAgICAgICAgICAkYXNtLnB1dGMgIm9wY29kZSA9ICN7
b3BlcmFuZHNbMF0uY2xWYWx1ZSg6b3Bjb2RlKX07IgorICAgICAgICAgICAgICAgICRhc20ucHV0
YyAiRElTUEFUQ0hfT1BDT0RFKCk7IgorICAgICAgICAgICAgZW5kCisKKyAgICAgICAgd2hlbiAi
Y2FsbCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiQ1JBU0goKTsgLy8gZ2VuZXJpYyBjYWxsIGlu
c3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgZGVzaWduISIKKyAgICAgICAgd2hlbiAiYnJlYWsi
CisgICAgICAgICAgICAkYXNtLnB1dGMgIkNSQVNIKCk7IC8vIGJyZWFrIGluc3RydWN0aW9uIG5v
dCBpbXBsZW1lbnRlZC4iCisgICAgICAgIHdoZW4gInJldCIKKyAgICAgICAgICAgICRhc20ucHV0
YyAiZ290byBkb1JldHVybkhlbHBlcjsiCisKKyAgICAgICAgd2hlbiAiY2JlcSIKKyAgICAgICAg
ICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50OCwgIj09IikKKyAgICAg
ICAgd2hlbiAiY2llcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFu
ZHMsIDp1aW50MzIsICI9PSIpCisgICAgICAgIHdoZW4gImNwZXEiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIj09IikKKworICAgICAgICB3aGVu
ICJjYm5lcSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1
aW50OCwgIiE9IikKKyAgICAgICAgd2hlbiAiY2luZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiIT0iKQorICAgICAgICB3aGVuICJjcG5l
cSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50LCAi
IT0iKQorCisgICAgICAgIHdoZW4gImNiYSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVB
bmRTZXQob3BlcmFuZHMsIDp1aW50OCwgIj4iKQorICAgICAgICB3aGVuICJjaWEiCisgICAgICAg
ICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDMyLCAiPiIpCisgICAg
ICAgIHdoZW4gImNwYSIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFu
ZHMsIDp1aW50LCAiPiIpCisKKyAgICAgICAgd2hlbiAiY2JhZXEiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDgsICI+PSIpCisgICAgICAgIHdoZW4g
ImNpYWVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVp
bnQzMiwgIj49IikKKyAgICAgICAgd2hlbiAiY3BhZXEiCisgICAgICAgICAgICBjbG9vcEVtaXRD
b21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIj49IikKKworICAgICAgICB3aGVuICJjYmIi
CisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludDgsICI8
IikKKyAgICAgICAgd2hlbiAiY2liIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNl
dChvcGVyYW5kcywgOnVpbnQzMiwgIjwiKQorICAgICAgICB3aGVuICJjcGIiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6dWludCwgIjwiKQorCisgICAgICAg
IHdoZW4gImNiYmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5k
cywgOnVpbnQ4LCAiPD0iKQorICAgICAgICB3aGVuICJjaWJlcSIKKyAgICAgICAgICAgIGNsb29w
RW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDp1aW50MzIsICI8PSIpCisgICAgICAgIHdoZW4g
ImNwYmVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVp
bnQsICI8PSIpCisKKyAgICAgICAgd2hlbiAiY2JndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENv
bXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQ4LCAiPiIpCisgICAgICAgIHdoZW4gImNpZ3QiCisg
ICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50MzIsICI+IikK
KyAgICAgICAgd2hlbiAiY3BndCIKKyAgICAgICAgICAgIGNsb29wRW1pdENvbXBhcmVBbmRTZXQo
b3BlcmFuZHMsIDppbnQsICI+IikKKworICAgICAgICB3aGVuICJjYmd0ZXEiCisgICAgICAgICAg
ICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50OCwgIj49IikKKyAgICAgICAg
d2hlbiAiY2lndGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5k
cywgOmludDMyLCAiPj0iKQorICAgICAgICB3aGVuICJjcGd0ZXEiCisgICAgICAgICAgICBjbG9v
cEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAiPj0iKQorCisgICAgICAgIHdoZW4g
ImNibHQiCisgICAgICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50
OCwgIjwiKQorICAgICAgICB3aGVuICJjaWx0IgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFy
ZUFuZFNldChvcGVyYW5kcywgOmludDMyLCAiPCIpCisgICAgICAgIHdoZW4gImNwbHQiCisgICAg
ICAgICAgICBjbG9vcEVtaXRDb21wYXJlQW5kU2V0KG9wZXJhbmRzLCA6aW50LCAiPCIpCisKKyAg
ICAgICAgd2hlbiAiY2JsdGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChv
cGVyYW5kcywgOmludDgsICI8PSIpCisgICAgICAgIHdoZW4gImNpbHRlcSIKKyAgICAgICAgICAg
IGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMsIDppbnQzMiwgIjw9IikKKyAgICAgICAg
d2hlbiAiY3BsdGVxIgorICAgICAgICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5k
cywgOmludCwgIjw9IikKKworICAgICAgICB3aGVuICJ0YnMiCisgICAgICAgICAgICBjbG9vcEVt
aXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50OCwgIjwgMCIpCisgICAgICAgIHdoZW4gInRpcyIKKyAg
ICAgICAgICAgIGNsb29wRW1pdFRlc3RTZXQob3BlcmFuZHMsIDppbnQzMiwgIjwgMCIpCisgICAg
ICAgIHdoZW4gInRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RTZXQob3BlcmFuZHMsIDpp
bnQsICI8IDAiKQorCisgICAgICAgIHdoZW4gInRieiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRl
c3RTZXQob3BlcmFuZHMsIDppbnQ4LCAiPT0gMCIpCisgICAgICAgIHdoZW4gInRpeiIKKyAgICAg
ICAgICAgIGNsb29wRW1pdFRlc3RTZXQob3BlcmFuZHMsIDppbnQzMiwgIj09IDAiKQorICAgICAg
ICB3aGVuICJ0cHoiCisgICAgICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50
LCAiPT0gMCIpCisKKyAgICAgICAgd2hlbiAidGJueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRl
c3RTZXQob3BlcmFuZHMsIDppbnQ4LCAiIT0gMCIpCisgICAgICAgIHdoZW4gInRpbnoiCisgICAg
ICAgICAgICBjbG9vcEVtaXRUZXN0U2V0KG9wZXJhbmRzLCA6aW50MzIsICIhPSAwIikKKyAgICAg
ICAgd2hlbiAidHBueiIKKyAgICAgICAgICAgIGNsb29wRW1pdFRlc3RTZXQob3BlcmFuZHMsIDpp
bnQsICIhPSAwIikKKworICAgICAgICAjIDY0LWJpdCBpbnN0cnVjdGlvbjogY2RxaSAoYmFzZWQg
b24gWDY0KQorICAgICAgICAjIFNpZ24gZXh0ZW5kcyB0aGUgbG93ZXIgMzIgYml0cyBvZiB0MCwg
YnV0IHB1dCB0aGUgc2lnbiBleHRlbnNpb24gaW50bworICAgICAgICAjIHRoZSBsb3dlciAzMiBi
aXRzIG9mIHQxLiBMZWF2ZSB0aGUgdXBwZXIgMzIgYml0cyBvZiB0MCBhbmQgdDEgdW5jaGFuZ2Vk
LgorICAgICAgICB3aGVuICJjZHFpIgorICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgorICAgICAg
ICAgICAgJGFzbS5wdXRjICIgICAgaW50NjRfdCB0ZW1wID0gdDAuaTMyOyAvLyBzaWduIGV4dGVu
ZCB0aGUgbG93IDMyYml0IgorICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgdDAuaTMyID0gdGVt
cDsgLy8gbG93IHdvcmQiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB0MS5pMzIgPSB1aW50
NjRfdCh0ZW1wKSA+PiAzMjsgLy8gaGlnaCB3b3JkIgorICAgICAgICAgICAgJGFzbS5wdXRjICJ9
IgorCisgICAgICAgICMgNjQtYml0IGluc3RydWN0aW9uOiBpZGl2aSBvcDEgKGJhc2VkIG9uIFg2
NCkKKyAgICAgICAgIyBEaXZpZGUgYSA2NC1iaXQgaW50ZWdlciBudW1lcmF0b3IgYnkgdGhlIHNw
ZWNpZmllZCBkZW5vbWluYXRvci4KKyAgICAgICAgIyBUaGUgbnVtZXJhdG9yIGlzIHNwZWNpZmll
ZCBpbiB0MCBhbmQgdDEgYXMgZm9sbG93czoKKyAgICAgICAgIyAgICAgMS4gbG93IDMyIGJpdHMg
b2YgdGhlIG51bWVyYXRvciBpcyBpbiB0aGUgbG93IDMyIGJpdHMgb2YgdDAuCisgICAgICAgICMg
ICAgIDIuIGhpZ2ggMzIgYml0cyBvZiB0aGUgbnVtZXJhdG9yIGlzIGluIHRoZSBsb3cgMzIgYml0
cyBvZiB0MS4KKyAgICAgICAgIworICAgICAgICAjIFRoZSByZXN1bHRhbnQgcXVvdGllbnQgaXMg
YSBzaWduZWQgMzItYml0IGludCwgYW5kIGlzIHRvIGJlIHN0b3JlZAorICAgICAgICAjIGluIHRo
ZSBsb3dlciAzMiBiaXRzIG9mIHQwLgorICAgICAgICAjIFRoZSByZXN1bHRhbnQgcmVtYWluZGVy
IGlzIGEgc2lnbmVkIDMyLWJpdCBpbnQsIGFuZCBpcyB0byBiZSBzdG9yZWQKKyAgICAgICAgIyBp
biB0aGUgbG93ZXIgMzIgYml0cyBvZiB0MS4KKyAgICAgICAgd2hlbiAiaWRpdmkiCisgICAgICAg
ICAgICAjIERpdmlkZSB0MSx0MCAoRURYLEVBWCkgYnkgdGhlIHNwZWNpZmllZCBhcmcsIGFuZCBz
dG9yZSB0aGUgcmVtYWluZGVyIGluIHQxLAorICAgICAgICAgICAgIyBhbmQgcXVvdGllbnQgaW4g
dDA6CisgICAgICAgICAgICAkYXNtLnB1dGMgInsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICBpbnQ2NF90IGRpdmlkZW5kID0gKGludDY0X3QodDEudTMyKSA8PCAzMikgfCB0MC51MzI7Igor
ICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgaW50NjRfdCBkaXZpc29yID0gI3tvcGVyYW5kc1sw
XS5jbFZhbHVlKDppbnQpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB0MS5pMzIgPSBk
aXZpZGVuZCAlIGRpdmlzb3I7IC8vIHJlbWFpbmRlciIKKyAgICAgICAgICAgICRhc20ucHV0YyAi
ICAgIHQwLmkzMiA9IGRpdmlkZW5kIC8gZGl2aXNvcjsgLy8gcXVvdGllbnQiCisgICAgICAgICAg
ICAkYXNtLnB1dGMgIn0iCisKKyAgICAgICAgIyAzMi1iaXQgaW5zdHJ1Y3Rpb246IGZpaTJkIGlu
dDMyTG9PcCBpbnQzMkhpT3AgZGJsT3AgKGJhc2VkIG9uIEFSTXY3KQorICAgICAgICAjIERlY29k
ZSAyIDMyLWJpdCBpbnRzIChsb3cgYW5kIGhpZ2gpIGludG8gYSA2NC1iaXQgZG91YmxlLgorICAg
ICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAgICAgICRhc20ucHV0YyAiI3tvcGVyYW5kc1syXS5j
bFZhbHVlKDpkb3VibGUpfSA9IEludHMyRG91YmxlKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6dWlu
dDMyKX0sICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dWludDMyKX0pOyIKKworICAgICAgICAjIDMy
LWJpdCBpbnN0cnVjdGlvbjogZjJkaWkgZGJsT3AgaW50MzJMb09wIGludDMySGlPcCAoYmFzZWQg
b24gQVJNdjcpCisgICAgICAgICMgRW5jb2RlIGEgNjQtYml0IGRvdWJsZSBpbnRvIDIgMzItYml0
IGludHMgKGxvdyBhbmQgaGlnaCkuCisgICAgICAgIHdoZW4gImZkMmlpIgorICAgICAgICAgICAg
JGFzbS5wdXRjICJEb3VibGUySW50cygje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLmNsVmFsdWV9LCAje29wZXJhbmRzWzJdLmNsVmFsdWV9KTsiCisKKyAgICAg
ICAgIyA2NC1iaXQgaW5zdHJ1Y3Rpb246IGZwMmQgaW50NjRPcCBkYmxPcCAoYmFzZWQgb24gWDY0
KQorICAgICAgICAjIENvcHkgYSBiaXQtZW5jb2RlZCBkb3VibGUgaW4gYSA2NC1iaXQgaW50IHJl
Z2lzdGVyIHRvIGEgZG91YmxlIHJlZ2lzdGVyLgorICAgICAgICB3aGVuICJmcDJkIgorICAgICAg
ICAgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9ID0gI3tvcGVy
YW5kc1swXS5jbFZhbHVlKDpjYXN0VG9Eb3VibGUpfTsiCisKKyAgICAgICAgIyA2NC1iaXQgaW5z
dHJ1Y3Rpb246IGZkMnAgZGJsT3AgaW50NjRPcCAoYmFzZWQgb24gWDY0IGluc3RydWN0aW9uIHNl
dCkKKyAgICAgICAgIyBDb3B5IGEgZG91YmxlIGFzIGEgYml0LWVuY29kZWQgZG91YmxlIGludG8g
YSA2NC1iaXQgaW50IHJlZ2lzdGVyLgorICAgICAgICB3aGVuICJmZDJwIgorICAgICAgICAgICAg
JGFzbS5wdXRjICIje29wZXJhbmRzWzFdLmNsVmFsdWUoOnZvaWRQdHIpfSA9ICN7b3BlcmFuZHNb
MF0uY2xWYWx1ZSg6Y2FzdFRvVm9pZFB0cil9OyIKKworICAgICAgICB3aGVuICJsZWFpIgorICAg
ICAgICAgICAgb3BlcmFuZHNbMF0uY2xvb3BFbWl0TGVhKG9wZXJhbmRzWzFdLCA6aW50MzIpCisg
ICAgICAgIHdoZW4gImxlYXAiCisgICAgICAgICAgICBvcGVyYW5kc1swXS5jbG9vcEVtaXRMZWEo
b3BlcmFuZHNbMV0sIDppbnQpCisKKyAgICAgICAgd2hlbiAiYmFkZGlvIgorICAgICAgICAgICAg
Y2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKyIsIDppbnQzMikKKyAg
ICAgICAgd2hlbiAiYnN1YmlvIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92
ZXJmbG93KG9wZXJhbmRzLCAiLSIsIDppbnQzMikKKyAgICAgICAgd2hlbiAiYm11bGlvIgorICAg
ICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCAiKiIsIDpp
bnQzMikKKworICAgICAgICB3aGVuICJiYWRkaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFu
ZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJiYWRk
aXoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50
MzIsICI9PSAwIikKKyAgICAgICAgd2hlbiAiYmFkZGlueiIKKyAgICAgICAgICAgIGNsb29wRW1p
dE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAiKyIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAgIHdo
ZW4gImJhZGRwcyIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5kQnJhbmNoKG9wZXJhbmRzLCAi
KyIsIDppbnQsICI8IDAiKQorICAgICAgICB3aGVuICJiYWRkcHoiCisgICAgICAgICAgICBjbG9v
cEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIisiLCA6aW50LCAiPT0gMCIpCisgICAgICAgIHdo
ZW4gImJhZGRwbnoiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywg
IisiLCA6aW50LCAiIT0gMCIpCisKKyAgICAgICAgd2hlbiAiYnN1YmlzIgorICAgICAgICAgICAg
Y2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFuZHMsICItIiwgOmludDMyLCAiPCAwIikKKyAgICAg
ICAgd2hlbiAiYnN1Yml6IgorICAgICAgICAgICAgY2xvb3BFbWl0T3BBbmRCcmFuY2gob3BlcmFu
ZHMsICItIiwgOmludDMyLCAiPT0gMCIpCisgICAgICAgIHdoZW4gImJzdWJpbnoiCisgICAgICAg
ICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgIi0iLCA6aW50MzIsICIhPSAwIikK
KworICAgICAgICB3aGVuICJib3JyaXMiCisgICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5j
aChvcGVyYW5kcywgInwiLCA6aW50MzIsICI8IDAiKQorICAgICAgICB3aGVuICJib3JyaXoiCisg
ICAgICAgICAgICBjbG9vcEVtaXRPcEFuZEJyYW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIsICI9
PSAwIikKKyAgICAgICAgd2hlbiAiYm9ycmlueiIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wQW5k
QnJhbmNoKG9wZXJhbmRzLCAifCIsIDppbnQzMiwgIiE9IDAiKQorCisgICAgICAgICMgQSBjb252
ZW5pZW5jZSBhbmQgY29tcGFjdCBjYWxsIHRvIGNyYXNoIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0
byB1c2UKKyAgICAgICAgIyB0aGUgZ2VuZXJpYyBsbGludCBjcmFzaCBtZWNoYW5pc20gd2hpY2gg
cmVsaWVzIG9uIHRoZSBhdmFpbGFiaWxpdHkKKyAgICAgICAgIyBvZiB0aGUgY2FsbCBpbnN0cnVj
dGlvbiAod2hpY2ggY2Fubm90IGJlIGltcGxlbWVudGVkIGluIGEgZ2VuZXJpYworICAgICAgICAj
IHdheSwgYW5kIGNhbiBiZSBhYnVzZWQgaWYgd2UgbWFkZSBpdCBqdXN0IHdvcmsgZm9yIHRoaXMg
c3BlY2lhbCBjYXNlKS4KKyAgICAgICAgIyBVc2luZyBhIHNwZWNpYWwgY2xvb3BDcmFzaCBpbnN0
cnVjdGlvbiBpcyBjbGVhbmVyLgorICAgICAgICB3aGVuICJjbG9vcENyYXNoIgorICAgICAgICAg
ICAgJGFzbS5wdXRjICJDUkFTSCgpOyIKKworICAgICAgICAjIFdlIGNhbid0IHJlbHkgb24gdGhl
IGxsaW50IEpTIGNhbGwgbWVjaGFuaXNtIHdoaWNoIGFjdHVhbGx5IG1ha2VzCisgICAgICAgICMg
dXNlIG9mIHRoZSBjYWxsIGluc3RydWN0aW9uLiBJbnN0ZWFkLCB3ZSBqdXN0IGltcGxlbWVudCBK
UyBjYWxscworICAgICAgICAjIGFzIGFuIG9wY29kZSBkaXNwYXRjaC4KKyAgICAgICAgd2hlbiAi
Y2xvb3BDYWxsSlNGdW5jdGlvbiIKKyAgICAgICAgICAgICRhc20ucHV0YyAib3Bjb2RlID0gI3tv
cGVyYW5kc1swXS5jbFZhbHVlKDpvcGNvZGUpfTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIkRJ
U1BBVENIX09QQ09ERSgpOyIKKworICAgICAgICAjIFdlIGNhbid0IGRvIGdlbmVyaWMgZnVuY3Rp
b24gY2FsbHMgd2l0aCBhbiBhcmJpdHJhcnkgc2V0IG9mIGFyZ3MsIGJ1dAorICAgICAgICAjIGZv
cnR1bmF0ZWx5IHdlIGRvbid0IGhhdmUgdG8gaGVyZS4gQWxsIG5hdGl2ZSBmdW5jdGlvbiBjYWxs
cyBhbHdheXMKKyAgICAgICAgIyBoYXZlIGEgZml4ZWQgcHJvdG90eXBlIG9mIDEgYXJnczogdGhl
IHBhc3NlZCBFeGVjU3RhdGUuCisgICAgICAgIHdoZW4gImNsb29wQ2FsbE5hdGl2ZSIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAibmF0aXZlRnVuYyA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6bmF0
aXZlRnVuYyl9OyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiZnVuY3Rpb25SZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShuYXRpdmVGdW5jKHQwLmV4ZWNTdGF0ZSkpOyIKKyAgICAgICAgICAg
ICRhc20ucHV0YyAiI2lmIFVTRShKU1ZBTFVFMzJfNjQpIgorICAgICAgICAgICAgJGFzbS5wdXRj
ICIgICAgdDEuaSA9IGZ1bmN0aW9uUmV0dXJuVmFsdWUudGFnKCk7IgorICAgICAgICAgICAgJGFz
bS5wdXRjICIgICAgdDAuaSA9IGZ1bmN0aW9uUmV0dXJuVmFsdWUucGF5bG9hZCgpOyIKKyAgICAg
ICAgICAgICRhc20ucHV0YyAiI2Vsc2UgLy8gVVNFX0pTVkFMVUU2NCkiCisgICAgICAgICAgICAk
YXNtLnB1dGMgIiAgICB0MC5lbmNvZGVkSlNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZShmdW5jdGlv
blJldHVyblZhbHVlKTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiNlbmRpZiAvLyBVU0VfSlNW
QUxVRTY0KSIgICAgICAgICAgICAKKworICAgICAgICAjIFdlIGNhbid0IGRvIGdlbmVyaWMgZnVu
Y3Rpb24gY2FsbHMgd2l0aCBhbiBhcmJpdHJhcnkgc2V0IG9mIGFyZ3MsIGJ1dAorICAgICAgICAj
IGZvcnR1bmF0ZWx5IHdlIGRvbid0IGhhdmUgdG8gaGVyZS4gQWxsIHNsb3cgcGF0aCBmdW5jdGlv
biBjYWxscyBhbHdheXMKKyAgICAgICAgIyBoYXZlIGEgZml4ZWQgcHJvdG90eXBlIHRvby4gU2Vl
IGNsb29wRW1pdENhbGxTbG93UGF0aCgpIGZvciBkZXRhaWxzLgorICAgICAgICB3aGVuICJjbG9v
cENhbGxTbG93UGF0aCIKKyAgICAgICAgICAgIGNsb29wRW1pdENhbGxTbG93UGF0aChvcGVyYW5k
cykKKworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb3dlckRlZmF1bHQKKyAgICAgICAgZW5k
CisgICAgZW5kCitlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDEyNzM2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkod29ya2luZyBjb3B5KQpAQCAtMjI3
LDcgKzIyNywxNSBAQCBBUk12N19JTlNUUlVDVElPTlMgPQogICAgICAib3JpcyIKICAgICBdCiAK
LUlOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBB
Uk12N19JTlNUUlVDVElPTlMKK0NYWF9JTlNUUlVDVElPTlMgPQorICAgIFsKKyAgICAgImNsb29w
Q3Jhc2giLCAgICAgICAgICAgIyBubyBvcGVyYW5kcworICAgICAiY2xvb3BDYWxsSlNGdW5jdGlv
biIsICAjIG9wZXJhbmRzOiBjYWxsZWUKKyAgICAgImNsb29wQ2FsbE5hdGl2ZSIsICAgICAgIyBv
cGVyYW5kczogY2FsbGVlCisgICAgICJjbG9vcENhbGxTbG93UGF0aCIsICAgICMgb3BlcmFuZHM6
IGNhbGxUYXJnZXQsIGN1cnJlbnRGcmFtZSwgY3VycmVudFBDCisgICAgXQorCitJTlNUUlVDVElP
TlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJV
Q1RJT05TICsgQ1hYX0lOU1RSVUNUSU9OUwogCiBJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24g
MTI3MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJTYW1wbGlu
Z1Rvb2wuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMjAxLDI4ICsyMDIsNDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KTsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJh
c2UsIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCk7CiAgICAgICAgIH0KLSNlbmRpZgorI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlRfQ19M
T09QKQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgaG9zdENvZGVFbnRyeUZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgICAgIHsKKyAgICAgICAgICAgICNpZiBFTkFC
TEUoSklUKQogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRk
cmVzc0ZvckNhbGwoKTsKKyAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICByZXR1cm4gTExJ
bnQ6OkNMb29wOjpob3N0Q29kZUVudHJ5Rm9yKGtpbmQpOworICAgICAgICAgICAgI2VuZGlmCiAg
ICAgICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIganNDb2RlRW50cnlGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgICAgICB7CisgICAgICAgICAgICAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQp
LmFkZHJlc3NGb3JDYWxsKCk7CisgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgcmV0dXJu
IExMSW50OjpDTG9vcDo6anNDb2RlRW50cnlGb3Ioa2luZCk7CisgICAgICAgICAgICAjZW5kaWYK
ICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBqc0NvZGVXaXRoQXJp
dHlDaGVja0VudHJ5Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKICAgICAgICAgewor
ICAgICAgICAgICAgI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVk
SklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICAgICAgI2Vsc2UKKyAgICAg
ICAgICAgIHJldHVybiBMTEludDo6Q0xvb3A6OmpzQ29kZUVudHJ5V2l0aEFyaXR5Q2hlY2tGb3Io
a2luZCk7CisgICAgICAgICAgICAjZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2
b2lkKiBjYXRjaFJvdXRpbmVGb3IoSGFuZGxlckluZm8qIGhhbmRsZXIsIEluc3RydWN0aW9uKiBj
YXRjaFBDRm9ySW50ZXJwcmV0ZXIpCiAgICAgICAgIHsKKyAgICAgICAgICAgICNpZiBFTkFCTEUo
SklUKQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGNhdGNoUENGb3JJbnRlcnByZXRlcik7CiAg
ICAgICAgICAgICByZXR1cm4gaGFuZGxlci0+bmF0aXZlQ29kZS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsK
KyAgICAgICAgICAgIHJldHVybiBMTEludDo6Q0xvb3A6OmNhdGNoUm91dGluZUZvcihjYXRjaFBD
Rm9ySW50ZXJwcmV0ZXIpOworICAgICAgICAgICAgI2VuZGlmCiAgICAgICAgIH0KKyNlbmRpZiAv
LyBFTkFCTEUoSklUIHx8IEVOQUJMRShMTElOVF9DX0xPT1ApCiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIEV4ZWN1dGFibGVCYXNlKiBtX3ByZXY7CkBAIC0yNTgsNyArMjc4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5j
YW5Vc2VKSVQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CShyZXZpc2lvbiAxMjczNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQogICAgIG5hbWVzcGFjZSBMTEludCB7Ci0gICAgICAgIGNsYXNzIERhdGE7
CisgICAgICAgIGNsYXNzIENMb29wOwogICAgIH0KKyNlbmRpZgogCiAgICAgc3RydWN0IENsYXNz
SW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC0xMjAsNiArMTIyLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21waWxlcjsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTExJTlRfQ19MT09QKQorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnQ6OkNMb29wOworI2Vu
ZGlmCiAKICAgICBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI5MCw2ICsyOTUs
MTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAqLwogICAgICAgICB1aW50MzJfdCB0YWco
KSBjb25zdDsKICAgICAgICAgaW50MzJfdCBwYXlsb2FkKCkgY29uc3Q7CisKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQorICAgICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhl
IExMSW50IEMgTG9vcCBpbnRlcnByZXRlciB3aG8gbmVlZHMKKyAgICAgICAgLy8gc3ludGhlc2l6
ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkCisg
ICAgICAgIC8vIHZhbHVlcy4KKyAgICAgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywg
aW50MzJfdCBwYXlsb2FkKTsKKyNlbmRpZgorCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICAvKgogICAgICAgICAgKiBPbiA2NC1iaXQgcGxhdGZvcm1zIFVTRShKU1ZBTFVFNjQpIHNob3Vs
ZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNlIGEgTmFOLWVuY29kZWQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAkocmV2
aXNpb24gMTI3MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlu
bGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNywxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdS5hc0JpdHMucGF5bG9hZCA9IGk7CiAgICAgfQogCisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRh
ZywgaW50MzJfdCBwYXlsb2FkKQorICAgIHsKKyAgICAgICAgdS5hc0JpdHMudGFnID0gdGFnOwor
ICAgICAgICB1LmFzQml0cy5wYXlsb2FkID0gcGF5bG9hZDsKKyAgICB9CisjZW5kaWYKKwogICAg
IGlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBpc0ludDMyKCkgfHwgaXNEb3VibGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMjczNjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEz
OCwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgIDsgLy8gRGVjb25mdXNlIGVk
aXRvcnMgdGhhdCBkbyBhdXRvIGluZGVudGF0aW9uCiAjZW5kaWYKICAgICAKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQorICAgIHVzZUpJVCgpID0gZmFsc2U7CisgICAgdXNlREZHSklUKCkgPSBm
YWxzZTsKKyNlbmRpZgorCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQg
bWFrZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9y
T3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0g
dGhyZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzM2OCkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDktMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIExMSW50
IEMgbG9vcCBiYWNrZW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEwNTIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgY29uZmlncyBmb3IgdGhlIGxsaW50IEMgbG9vcCBiYWNrZW5kLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTItMDgtMzEgIFByYXRpayBTb2xhbmtpICA8
cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3Vs
ZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJl
dmlzaW9uIDEyNzM2OCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk1NCwxMiArOTU0LDI3IEBACiAjZW5kaWYKIAogLyogRW5zdXJlIHRoYXQgZWl0aGVy
IHRoZSBKSVQgb3IgdGhlIGludGVycHJldGVyIGhhcyBiZWVuIGVuYWJsZWQuICovCi0jaWYgIWRl
ZmluZWQoRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKQorI2lmICFk
ZWZpbmVkKEVOQUJMRV9DTEFTU0lDX0lOVEVSUFJFVEVSKSAmJiAhRU5BQkxFKEpJVCkgJiYgIUVO
QUJMRShMTElOVCkKICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMQogI2VuZGlm
Ci0jaWYgIShFTkFCTEUoSklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikpCisKKy8q
IElmIHRoZSBqaXQgYW5kIGNsYXNzaWMgaW50ZXJwcmV0ZXIgaXMgbm90IGF2YWlsYWJsZSwgZW5h
YmxlIHRoZSBMTEludCBDIExvb3A6ICovCisjaWYgIUVOQUJMRShKSVQpICYmICFFTkFCTEUoQ0xB
U1NJQ19JTlRFUlBSRVRFUikKKyAgICAjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisgICAgI2RlZmlu
ZSBFTkFCTEVfTExJTlRfQ19MT09QIDEKKyAgICAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDAKKyNl
bmRpZgorCisvKiBEbyBhIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB3ZSBhdCBsZWFz
dCBoYXZlIG9uZSBleGVjdXRpb24gZW5naW5lIGluCisgICB1c2U6ICovCisjaWYgIShFTkFCTEUo
SklUKSB8fCBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKICNl
cnJvciBZb3UgaGF2ZSB0byBoYXZlIGF0IGxlYXN0IG9uZSBleGVjdXRpb24gbW9kZWwgZW5hYmxl
ZCB0byBidWlsZCBKU0MKICNlbmRpZgorLyogRG8gYSBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJl
IHRoYXQgd2UgZG9uJ3QgaGF2ZSBib3RoIHRoZSBjbGFzc2ljIGludGVycHJldGVyCisgICBhbmQg
dGhlIGxsaW50IEMgbG9vcCBpbiB1c2UgYXQgdGhlIHNhbWUgdGltZTogKi8KKyNpZiBFTkFCTEUo
Q0xBU1NJQ19JTlRFUlBSRVRFUikgJiYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyNlcnJvciBZb3Ug
Y2Fubm90IGJ1aWxkIGJvdGggdGhlIGNsYXNzaWMgaW50ZXJwcmV0ZXIgYW5kIHRoZSBsbGludCBD
IGxvb3AgdG9nZXRoZXIKKyNlbmRpZgogCiAvKiBDb25maWd1cmUgdGhlIEpJVCAqLwogI2lmIENQ
VShYODYpICYmIENPTVBJTEVSKE1TVkMpCkBAIC05NzgsNiArOTkzLDcgQEAKICNkZWZpbmUgRU5B
QkxFX0NPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUiAxCiAjZW5kaWYKIAorLyogRGV0
ZXJtaW5lIGlmIHdlIG5lZWQgdG8gZW5hYmxlIENvbXB1dGVkIEdvdG8gT3Bjb2RlcyBvciBub3Q6
ICovCiAjaWYgKEhBVkUoQ09NUFVURURfR09UTykgJiYgRU5BQkxFKExMSU5UKSkgfHwgRU5BQkxF
KENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICNkZWZpbmUgRU5BQkxFX0NPTVBV
VEVEX0dPVE9fT1BDT0RFUyAxCiAjZW5kaWYKQEAgLTk4Niw3ICsxMDAyLDcgQEAKICNkZWZpbmUg
RU5BQkxFX1JFR0VYUF9UUkFDSU5HIDAKIAogLyogWWV0IEFub3RoZXIgUmVnZXggUnVudGltZSAt
IHR1cm5lZCBvbiBieSBkZWZhdWx0IGZvciBKSVQgZW5hYmxlZCBwb3J0cy4gKi8KLSNpZiAhZGVm
aW5lZChFTkFCTEVfWUFSUl9KSVQpICYmIEVOQUJMRShKSVQpICYmICFQTEFURk9STShDSFJPTUlV
TSkKKyNpZiAhZGVmaW5lZChFTkFCTEVfWUFSUl9KSVQpICYmIChFTkFCTEUoSklUKSB8fCBFTkFC
TEUoTExJTlRfQ19MT09QKSkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBFTkFCTEVf
WUFSUl9KSVQgMQogCiAvKiBTZXR0aW5nIHRoaXMgZmxhZyBjb21wYXJlcyBKSVQgcmVzdWx0cyB3
aXRoIGludGVycHJldGVyIHJlc3VsdHMuICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>163231</attachid>
            <date>2012-09-10 15:28:18 -0700</date>
            <delta_ts>2012-09-10 15:28:18 -0700</delta_ts>
            <desc>Comparison of layout test results for C++ llint, ASM llint, and Classic interpreter.</desc>
            <filename>layout-test-results-compared.txt</filename>
            <type>text/plain</type>
            <size>30748</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">U3VtbWFyeSBvZiBsYXlvdXQgdGVzdCBydW5zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZhaWx1cmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb21tZW50cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gID09PT09PT09ClJlZ3Jlc3Npb25zOiBVbmV4cGVjdGVkIHRleHQgZmFpbHVy
ZXMgOiAoMTEpCiAgYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtbWVtb3J5LW1hbmFn
ZW1lbnQuaHRtbCAgICAgICAgICAgICAgICAgICBDKysgbGxpbnQgICAgICAgICAgICAgICAgICAg
Q2xhc3NpYyAgICAgQ29uc2lzdGVudGx5IGZhaWxzIHcvIDEwMCBpdGVyYXRpb25zLgogIGFuaW1h
dGlvbnMvcGxheS1zdGF0ZS1wYXVzZWQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWMKICBmYXN0L2V2
ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRyYWcuaHRtbCAgICAgICAgICAgICAg
ICAgICAgICAgIEMrKyBsbGludCAgICAgQVNNIGxsaW50ICAgICAgICAgICAgICAgICBDb25zaXN0
ZW50bHkgZmFpbHMgdy8gMTAwIGl0ZXJhdGlvbnMuCiAgZmFzdC9qcy9pbnRlZ2VyLWRpdmlzaW9u
LW5lZzJ0b3RoZTMyLWJ5LW5lZzEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpYwogIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtY29udGFpbmVyLXdoaXRlLXNwYWNlLmh0bWwgICAgICAgICAgICAgICAgICAgQysrIGxsaW50
ICAgICBBU00gbGxpbnQgICAgIENsYXNzaWMgICAgIENvbnNpc3RlbnRseSBmYWlscyB3LyAxMDAg
aXRlcmF0aW9ucy4KICBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1vdmVyZmxvdy1z
Y3JvbC1oaWRkZW4uaHRtbCAgICAgICAgICAgICAgIEMrKyBsbGludCAgICAgQVNNIGxsaW50ICAg
ICBDbGFzc2ljICAgICBDb25zaXN0ZW50bHkgZmFpbHMgdy8gMTAwIGl0ZXJhdGlvbnMuCiAgZmFz
dC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0bWwg
ICAgICAgICAgICAgICBDKysgbGxpbnQgICAgIEFTTSBsbGludCAgICAgQ2xhc3NpYyAgICAgQ29u
c2lzdGVudGx5IGZhaWxzIHcvIDEwMCBpdGVyYXRpb25zLgogIGZhc3Qvd29ya2Vycy93b3JrZXIt
Y2xvc2UtbW9yZS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQysr
IGxsaW50ICAgICBBU00gbGxpbnQgICAgIENsYXNzaWMgICAgIENvbnNpc3RlbnRseSBmYWlscy4K
ICBmYXN0L3dvcmtlcnMvd29ya2VyLWxpZmVjeWNsZS5odG1sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEMrKyBsbGludCAgICAgQVNNIGxsaW50ICAgICBDbGFzc2ljICAg
ICBQYXNzZXMgd2hlbiBydW4gYnkgaXRzZWxmLgogIGpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrIGxsaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWt5LiAgUGFzc2VzIHdoZW4gcnVuIGFs
b25lLgogIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGluZS1h
ZnRlci1hY2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQysrIGxsaW50ICAgICBBU00gbGxpbnQgICAgICAgICAgICAgICAgIENv
bnNpc3RlbnRseSBmYWlscyB3LyAxMDAgaXRlcmF0aW9ucy4KICBwbGF0Zm9ybS9tYWMvZmFzdC9s
b2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLTMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgIEMr
KyBsbGludCAgICAgQVNNIGxsaW50ICAgICBDbGFzc2ljICAgICBDb25zaXN0ZW50bHkgZmFpbHMg
dy8gMTAwIGl0ZXJhdGlvbnMuCiAgc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5
LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2xhc3NpYyAgICAgRmxha3kgb24gQysrIGxsaW50LgogIHN2Zy9hbmltYXRpb25z
L3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNlcy1ub0Jhc2VWYWxSZWYuc3ZnICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWMgICAgIEZsYWt5IG9uIEMrKyBs
bGludC4KICBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFz
c2ljICAgICBGbGFreSBvbiBDKysgbGxpbnQuCiAgc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVs
ZW1lbnRzLnN2ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2xhc3NpYyAgICAgRmxha3kgb24gQysrIGxsaW50LgogIHN2Zy90
ZXh0L25vbi1ibXAtcG9zaXRpb25pbmctbGlzdHMuc3ZnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQysrIGxsaW50ICAgICBBU00gbGxpbnQgICAgIENsYXNzaWMgICAgIENvbnNp
c3RlbnRseSBmYWlscyB3LyAxMDAgaXRlcmF0aW9ucy4KClJlZ3Jlc3Npb25zOiBVbmV4cGVjdGVk
IGNyYXNoZXMgOiAoMikKICBmYXN0L2pzL3JlZ2V4cC1ub24tZ3JlZWR5LXBhcmVudGhlc2VzLmh0
bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDbGFzc2ljCiAgZmFzdC9wcm9maWxlci9wcm9maWxlLWNhbGxzLWluLWluY2x1ZGVkLWZp
bGUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2xhc3NpYwogIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRp
b24uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgQysrIGxsaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZsYWt5IHdoZW4gcnVuIGFsb25lIHcvIDEwMCBpdGVyYXRpb25zLgogIGZh
c3QvcmVnZXgvcGFyZW50aGVzZXMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWMKICBpbnNw
ZWN0b3IvZGVidWdnZXIvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxv
YWQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2ljCiAgaW5zcGVj
dG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTTSBsbGludAogIGluc3BlY3Rvci9leHRlbnNpb25z
L2V4dGVuc2lvbnMtZXZhbC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQysr
IGxsaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NlcyB3aGVuIHJ1biBhbG9u
ZSB3LyAxMDAgaXRlcmF0aW9ucy4KICBpbnNwZWN0b3IvdGFiYmVkLXBhbmUtbWF4LXRhYi13aWR0
aC1jYWxjdWxhdGlvbi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNN
IGxsaW50CgpSZWdyZXNzaW9uczogVW5leHBlY3RlZCB0aW1lb3V0cyA6ICgxKQogIGZhc3QvanMv
cmFuZG9tLWFycmF5LWdjLXN0cmVzcy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQysrIGxsaW50ICAgICBBU00gbGxpbnQgICAgIENsYXNzaWMgICAgIFBhc3NlcyBv
biBKSVQgYnVpbGQgb3Igd2hlbiB0aW1lb3V0IGlzIHJlbW92ZWQuCgoKVW5leHBlY3RlZCBmbGFr
aW5lc3M6IHRleHQgZmFpbHVyZXMgKDEzKQogIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlv
bi1ub3JtYWwuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU00gbGxpbnQKICBhbmltYXRpb25zL2FuaW1hdGlvbi1kaXJlY3Rpb24tcmV2ZXJzZS5odG1s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDbGFzc2ljCiAgYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLmh0bWwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2xhc3NpYwogIGFuaW1hdGlvbnMvY29tYm8tdHJhbnNmb3JtLXRyYW5zbGF0ZStzY2FsZS5odG1s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENs
YXNzaWMKICBjb21wb3NpdGluZy9pZnJhbWVzL292ZXJsYXBwZWQtbmVzdGVkLWlmcmFtZXMuaHRt
bCAgICAgICAgICAgICAgICAgICAgICAgIEMrKyBsbGludAogIGVkaXRpbmcvc3BlbGxpbmcvZ3Jh
bW1hci5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQysr
IGxsaW50ICAgICBBU00gbGxpbnQgICAgIENsYXNzaWMKICBlZGl0aW5nL3NwZWxsaW5nL21hcmtl
cnMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMrKyBs
bGludCAgICAgQVNNIGxsaW50ICAgICBDbGFzc2ljCiAgZmFzdC9ldmVudHMvcGFnZWhpZGUteGhy
LW9wZW4uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpYwogIGZhc3QvaGlzdG9yeS9oaXN0b3J5LXN1YmZy
YW1lLXdpdGgtbmFtZS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU00gbGxpbnQKICBmYXN0L3BhcnNlci9wYXJzZXIteWllbGQtdGltaW5nLmh0bWwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDbGFzc2ljCiAgaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW9yaWdp
bi1hZGQuaHRtbCAgICAgICAgICAgICAgICAgICAgICBDKysgbGxpbnQgICAgIEFTTSBsbGludCAg
ICAgQ2xhc3NpYwogIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9z
ZS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgQysrIGxsaW50ICAgICBBU00gbGxpbnQKICBp
bnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtbmV0d29yay1yZWNlaXZlZC1kYXRhLmh0bWwgICAg
ICAgICAgICAgICAgICAgIEMrKyBsbGludAogIGpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU00gbGxpbnQKICBqcXVlcnkvb2Zmc2V0Lmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNNIGxsaW50CiAg
bWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0bWwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDKysgbGxpbnQKICBtZWRpYS92aWRlby1zaXplLmh0bWwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMrKyBsbGludAog
IG1lZGlhL3ZpZGVvLXpvb20uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWMKICBw
bGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1ibG9ja3F1b3RlLWNy
YXNoLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2ljCiAgc3Zn
L2FuaW1hdGlvbnMvcmVpbnNlcnRpbmctc3ZnLWludG8tZG9jdW1lbnQuaHRtbCAgICAgICAgICAg
ICAgICAgICAgICAgICBDKysgbGxpbnQKICBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZHluYW1p
Y2FsbHktYWRkZWQtZWxlbWVudC1pbnN0YW5jZXMuc3ZnICAgICAgICAgIEMrKyBsbGludAogIHN2
Zy9hbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNlcy1ub0Jhc2VWYWxSZWYuc3Zn
ICAgICAgICAgICAgICAgQysrIGxsaW50CiAgc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1l
bnQtaW5zdGFuY2VzLnN2ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDKysgbGxpbnQKICBz
dmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudHMuc3ZnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEMrKyBsbGludAogIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3Jp
cHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLnN2ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENsYXNzaWMKICB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVu
dC10cmFuc2Zvcm0uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNNIGxsaW50CgpVbmV4cGVjdGVkIGZsYWtpbmVzczogaW1hZ2Utb25seSBmYWlsdXJlcyAoMSkK
ICBmYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEMrKyBsbGludCAgICAgICAgICAgICAgICAgICBDbGFzc2ljCgpV
bmV4cGVjdGVkIGZsYWtpbmVzczogdGltZW91dHMgKDYpCiAgZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtNS5odG1sICAgICAgICAgICAgICAgICBDKysg
bGxpbnQgICAgICAgICAgICAgICAgICAgQ2xhc3NpYwogIGZhc3QvY2FudmFzL3dlYmdsL3VuaW5p
dGlhbGl6ZWQtdGVzdC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrIGxs
aW50ICAgICBBU00gbGxpbnQKICBzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzEx
LjEwX0JpbmFyeV9CaXR3aXNlX09wZXJhdG9ycy8xMS4xMC4yX1hPUl9PcGVyYXRvci9TMTEuMTAu
Ml9BM19UMS4zLmh0bWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDbGFzc2ljCiAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfMjE4L1M3LjZfQTUuM19UMS5o
dG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDKysgbGxpbnQgICAgICAgICAgICAgICAg
ICAgQ2xhc3NpYwogIHNwdXRuaWsvVW5pY29kZS9Vbmljb2RlXzMyMC9TNy42X0EzLjEuaHRtbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrIGxsaW50CiAgc3B1dG5pay9Vbmljb2Rl
L1VuaWNvZGVfNDEwL1M3LjZfQTMuMS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDKysgbGxpbnQKICBzcHV0bmlrL1VuaWNvZGUvVW5pY29kZV81MDAvUzcuNl9BMy4xLmh0bWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMrKyBsbGludAoKCgoKCgoKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkMrKyBsbGludDoKCi9Wb2x1bWVzL1NvdXJjZS93cy9PcGVuU291cmNlJCAu
L1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cyAtLWRlYnVnClVzaW5nIHBvcnQgJ21hYy1t
b3VudGFpbmxpb24nClRlc3QgY29uZmlndXJhdGlvbjogPG1vdW50YWlubGlvbiwgeDg2XzY0LCBk
ZWJ1Zz4KUGxhY2luZyB0ZXN0IHJlc3VsdHMgaW4gTm9uZQpCYXNlbGluZSBzZWFyY2ggcGF0aDog
bWFjIC0+IGdlbmVyaWMKVXNpbmcgRGVidWcgYnVpbGQKUGl4ZWwgdGVzdHMgZGlzYWJsZWQKUmVn
dWxhciB0aW1lb3V0OiAzNTAwMCwgc2xvdyB0ZXN0IHRpbWVvdXQ6IDE3NTAwMApDb21tYW5kIGxp
bmU6IC9Wb2x1bWVzL1NvdXJjZS93cy9PcGVuU291cmNlL1dlYktpdEJ1aWxkL0RlYnVnL0R1bXBS
ZW5kZXJUcmVlIC0KCkZvdW5kIDMxMTc0IHRlc3RzOyBydW5uaW5nIDI4OTY3LCBza2lwcGluZyAy
MjA3LgpSdW5uaW5nIDggRHVtcFJlbmRlclRyZWVzIGluIHBhcmFsbGVsIG92ZXIgNzY0IHNoYXJk
cyAoMSBsb2NrZWQpLgoKWzE2LzI4OTY3XSBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9k
ZS1tZW1vcnktbWFuYWdlbWVudC5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikK
WzMxNS8yODk2N10gY29tcG9zaXRpbmcvaWZyYW1lcy9vdmVybGFwcGVkLW5lc3RlZC1pZnJhbWVz
Lmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQogIGNzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1ibGVuZC1tb2Rlcy5odG1sIC0+IHJlZiB0ZXN0IGhhc2hlcyBkaWRu
J3QgbWF0Y2ggYnV0IGRpZmYgcGFzc2VkCls2NzE3LzI4OTY3XSBlZGl0aW5nL3NwZWxsaW5nL2dy
YW1tYXIuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAgICAgICAgICAg
ICAgICAgICAgICAKWzY3NTQvMjg5NjddIGVkaXRpbmcvc3BlbGxpbmcvbWFya2Vycy5odG1sIGZh
aWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzExNDA2LzI4OTY3XSBmYXN0L2V2ZW50cy9y
ZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRyYWcuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5
ICh0ZXh0IGRpZmYpICAgICAgICAgICAgICAgICAgClsxMTg1OC8yODk2N10gZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtNS5odG1sIHRpbWVkIG91dCB1
bmV4cGVjdGVkbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBmYXN0L2Nzcy93b3JkLXNw
YWNpbmctY2hhcmFjdGVycy1jb21wbGV4LXRleHQuaHRtbCAtPiByZWYgdGVzdCBoYXNoZXMgZGlk
bid0IG1hdGNoIGJ1dCBkaWZmIHBhc3NlZApbMTM3MjEvMjg5NjddIGZhc3QvcmVnaW9ucy9mbG9h
dC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAoaW1hZ2UgZGlm
ZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgClsxNDQzMi8yODk2N10gZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250
YWluZXItd2hpdGUtc3BhY2UuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAg
ICAgIApbMTQ0NDQvMjg5NjddIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LW92ZXJm
bG93LXNjcm9sLWhpZGRlbi5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE0
NTgzLzI4OTY3XSBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBw
ZWQtYXJlYXMuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsxNTU0My8yODk2
N10gZmFzdC9jYW52YXMvd2ViZ2wvdW5pbml0aWFsaXplZC10ZXN0Lmh0bWwgdGltZWQgb3V0IHVu
ZXhwZWN0ZWRseSAgICAgICAgICAgICAgICAgICAgICAgICAgIApbMTYyOTQvMjg5NjddIGZhc3Qv
d29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQg
ZGlmZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClsxNjc0NC8yODk2N10gZmFzdC93
b3JrZXJzL3dvcmtlci1saWZlY3ljbGUuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRp
ZmYpICAgICAgICAgICAgICAgICAgICAgIApbMTY5NzAvMjg5NjddIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc2FuZGJveGVkLWlmcmFtZS1vcmlnaW4tYWRkLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAo
dGV4dCBkaWZmKSAgICAgICAgICAgICAgICAgICAKWzE4MjgyLzI4OTY3XSBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5
ICh0ZXh0IGRpZmYpICAgICAgICAgICAgICAgICAgICAgICAgClsxODg4NC8yODk2N10gaW5zcGVj
dG9yL3RpbWVsaW5lL3RpbWVsaW5lLW5ldHdvcmstcmVjZWl2ZWQtZGF0YS5odG1sIGZhaWxlZCB1
bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAgIApbMTkxMzkvMjg5NjddIGpx
dWVyeS9tYW5pcHVsYXRpb24uaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApbMTkxNDAvMjg5NjddIG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLXJlbmRlcmluZy5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikK
WzE5MzYzLzI4OTY3XSBtZWRpYS92aWRlby1zaXplLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAo
dGV4dCBkaWZmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClsxOTQxNy8y
ODk2N10gcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvcmVtb3ZpbmctdW5kZXJsaW5lLWFm
dGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVhdGlvbi5odG1sIGZhaWxl
ZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE5NDc1LzI4OTY3XSBwbGF0Zm9ybS9tYWMvZmFz
dC9sb2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLTMuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0
ZXh0IGRpZmYpICAgIApbMjQxNTYvMjg5NjddIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20t
YS1uZXN0ZWQtbG9jYXRpb24uaHRtbCBjcmFzaGVkIHVuZXhwZWN0ZWRseSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApbMjU1ODkvMjg5
NjddIHNwdXRuaWsvVW5pY29kZS9Vbmljb2RlXzIxOC9TNy42X0E1LjNfVDEuaHRtbCB0aW1lZCBv
dXQgdW5leHBlY3RlZGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKWzI3MTA1LzI4OTY3XSBzdmcvdGV4dC9ub24tYm1wLXBvc2l0aW9u
aW5nLWxpc3RzLnN2ZyBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAgICAgICAg
ICAgICAgICAgClsyNzY3MC8yODk2N10gaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1l
dmFsLmh0bWwgY3Jhc2hlZCB1bmV4cGVjdGVkbHkgICAgICAgICAgICAgICAgICAgICAgICAgClsy
ODUwNi8yODk2N10gc3ZnL2FuaW1hdGlvbnMvcmVpbnNlcnRpbmctc3ZnLWludG8tZG9jdW1lbnQu
aHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAgICAgICAgClsyODY1NC8y
ODk2N10gc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5LWFkZGVkLWVsZW1lbnQt
aW5zdGFuY2VzLnN2ZyBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsyODY1OS8yODk2
N10gc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLW5vQmFzZVZhbFJl
Zi5zdmcgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjg2NjIvMjg5NjddIHN2Zy9h
bmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNlcy5zdmcgZmFpbGVkIHVuZXhwZWN0
ZWRseSAodGV4dCBkaWZmKQpbMjg2NjcvMjg5NjddIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1l
bGVtZW50cy5zdmcgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjg3MTkvMjg5Njdd
IHNwdXRuaWsvVW5pY29kZS9Vbmljb2RlXzUwMC9TNy42X0EzLjEuaHRtbCB0aW1lZCBvdXQgdW5l
eHBlY3RlZGx5ClsyODcyMS8yODk2N10gZmFzdC9qcy9yYW5kb20tYXJyYXktZ2Mtc3RyZXNzLmh0
bWwgdGltZWQgb3V0IHVuZXhwZWN0ZWRseQpzdG9wcGluZyBEdW1wUmVuZGVyVHJlZSB0aW1lZCBv
dXQsIGtpbGxpbmcgaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKa2lsbGVk
ClsyODkzMC8yODk2N10gc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfNDEwL1M3LjZfQTMuMS5odG1s
IHRpbWVkIG91dCB1bmV4cGVjdGVkbHkKWzI4OTMxLzI4OTY3XSBzcHV0bmlrL1VuaWNvZGUvVW5p
Y29kZV8zMjAvUzcuNl9BMy4xLmh0bWwgdGltZWQgb3V0IHVuZXhwZWN0ZWRseQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIApSZXRyeWluZyAzNCB1bmV4cGVjdGVkIGZhaWx1cmUocykgLi4uCgpSdW5uaW5nIDEgRHVt
cFJlbmRlclRyZWUgb3ZlciAyNCBzaGFyZHMuCgpbMy8zNF0gYWNjZXNzaWJpbGl0eS9hY2Nlc3Np
YmlsaXR5LW5vZGUtbWVtb3J5LW1hbmFnZW1lbnQuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0
ZXh0IGRpZmYpCls5LzM0XSBmYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWlu
LWRyYWcuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsxMC8zNF0gZmFzdC9q
cy9yYW5kb20tYXJyYXktZ2Mtc3RyZXNzLmh0bWwgdGltZWQgb3V0IHVuZXhwZWN0ZWRseQpbMTMv
MzRdIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LW92ZXJmbG93LXNjcm9sLWhpZGRl
bi5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE0LzM0XSBmYXN0L3NwYXRp
YWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRhaW5lci13aGl0ZS1zcGFjZS5odG1sIGZhaWxlZCB1bmV4
cGVjdGVkbHkgKHRleHQgZGlmZikKWzE1LzM0XSBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0
IGRpZmYpClsxNi8zNF0gZmFzdC93b3JrZXJzL3dvcmtlci1jbG9zZS1tb3JlLmh0bWwgZmFpbGVk
IHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMTcvMzRdIGZhc3Qvd29ya2Vycy93b3JrZXItbGlm
ZWN5Y2xlLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjAvMzRdIGpxdWVy
eS9tYW5pcHVsYXRpb24uaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAK
WzIzLzM0XSBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUt
YWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwgZmFp
bGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjQvMzRdIHBsYXRmb3JtL21hYy9mYXN0L2xv
YWRlci9maWxlLXVybC1taW1ldHlwZXMtMy5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQg
ZGlmZikKWzM0LzM0XSBzdmcvdGV4dC9ub24tYm1wLXBvc2l0aW9uaW5nLWxpc3RzLnN2ZyBmYWls
ZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpIAoKMjg5MzMgdGVzdHMgcmFuIGFzIGV4cGVjdGVk
LCAzNCBkaWRuJ3Q6CgoKVW5leHBlY3RlZCBmbGFraW5lc3M6IHRleHQgZmFpbHVyZXMgKDEzKQog
IGNvbXBvc2l0aW5nL2lmcmFtZXMvb3ZlcmxhcHBlZC1uZXN0ZWQtaWZyYW1lcy5odG1sID0gVEVY
VCBQQVNTCiAgZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLmh0bWwgPSBURVhUIFBBU1MKICBlZGl0
aW5nL3NwZWxsaW5nL21hcmtlcnMuaHRtbCA9IFRFWFQgUEFTUwogIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc2FuZGJveGVkLWlmcmFtZS1vcmlnaW4tYWRkLmh0bWwgPSBURVhUIFBBU1MKICBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbCA9IFRFWFQgUEFTUwog
IGluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1uZXR3b3JrLXJlY2VpdmVkLWRhdGEuaHRtbCA9
IFRFWFQgUEFTUwogIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gVEVYVCBQ
QVNTCiAgbWVkaWEvdmlkZW8tc2l6ZS5odG1sID0gVEVYVCBQQVNTCiAgc3ZnL2FuaW1hdGlvbnMv
cmVpbnNlcnRpbmctc3ZnLWludG8tZG9jdW1lbnQuaHRtbCA9IFRFWFQgUEFTUwogIHN2Zy9hbmlt
YXRpb25zL3NtaWwtbGVhay1keW5hbWljYWxseS1hZGRlZC1lbGVtZW50LWluc3RhbmNlcy5zdmcg
PSBURVhUIFBBU1MKICBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMt
bm9CYXNlVmFsUmVmLnN2ZyA9IFRFWFQgUEFTUwogIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1l
bGVtZW50LWluc3RhbmNlcy5zdmcgPSBURVhUIFBBU1MKICBzdmcvYW5pbWF0aW9ucy9zbWlsLWxl
YWstZWxlbWVudHMuc3ZnID0gVEVYVCBQQVNTCgpVbmV4cGVjdGVkIGZsYWtpbmVzczogaW1hZ2Ut
b25seSBmYWlsdXJlcyAoMSkKICBmYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5n
ZS5odG1sID0gSU1BR0UgUEFTUwoKVW5leHBlY3RlZCBmbGFraW5lc3M6IHRpbWVvdXRzICg2KQog
IGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1jcmFzaC10ZXN0LTUuaHRt
bCA9IFRJTUVPVVQgUEFTUwogIGZhc3QvY2FudmFzL3dlYmdsL3VuaW5pdGlhbGl6ZWQtdGVzdC5o
dG1sID0gVElNRU9VVCBQQVNTCiAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfMjE4L1M3LjZfQTUu
M19UMS5odG1sID0gVElNRU9VVCBQQVNTCiAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfMzIwL1M3
LjZfQTMuMS5odG1sID0gVElNRU9VVCBQQVNTCiAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfNDEw
L1M3LjZfQTMuMS5odG1sID0gVElNRU9VVCBQQVNTCiAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVf
NTAwL1M3LjZfQTMuMS5odG1sID0gVElNRU9VVCBQQVNTCgoKUmVncmVzc2lvbnM6IFVuZXhwZWN0
ZWQgdGV4dCBmYWlsdXJlcyA6ICgxMSkKICBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9k
ZS1tZW1vcnktbWFuYWdlbWVudC5odG1sID0gVEVYVAogIGZhc3QvZXZlbnRzL3JlbW92ZS10YXJn
ZXQtd2l0aC1zaGFkb3ctaW4tZHJhZy5odG1sID0gVEVYVAogIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtY29udGFpbmVyLXdoaXRlLXNwYWNlLmh0bWwgPSBURVhUCiAgZmFzdC9zcGF0aWFs
LW5hdmlnYXRpb24vc25hdi1kaXYtb3ZlcmZsb3ctc2Nyb2wtaGlkZGVuLmh0bWwgPSBURVhUCiAg
ZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0
bWwgPSBURVhUCiAgZmFzdC93b3JrZXJzL3dvcmtlci1jbG9zZS1tb3JlLmh0bWwgPSBURVhUCiAg
ZmFzdC93b3JrZXJzL3dvcmtlci1saWZlY3ljbGUuaHRtbCA9IFRFWFQKICBqcXVlcnkvbWFuaXB1
bGF0aW9uLmh0bWwgPSBURVhUCiAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvcmVtb3Zp
bmctdW5kZXJsaW5lLWFmdGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVh
dGlvbi5odG1sID0gVEVYVAogIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1l
dHlwZXMtMy5odG1sID0gVEVYVAogIHN2Zy90ZXh0L25vbi1ibXAtcG9zaXRpb25pbmctbGlzdHMu
c3ZnID0gVEVYVAoKUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQgY3Jhc2hlcyA6ICgyKQogIGZhc3Qv
cHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24uaHRtbCA9IENSQVNICiAg
aW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1ldmFsLmh0bWwgPSBDUkFTSAoKUmVncmVz
c2lvbnM6IFVuZXhwZWN0ZWQgdGltZW91dHMgOiAoMSkKICBmYXN0L2pzL3JhbmRvbS1hcnJheS1n
Yy1zdHJlc3MuaHRtbCA9IFRJTUVPVVQKCkZhaWxlZCB0byBleGVjdXRlIFRvb2xzL1NjcmlwdHMv
bmV3LXJ1bi13ZWJraXQtdGVzdHMgYXQgLi9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMg
bGluZSAxMjQuCi9Wb2x1bWVzL1NvdXJjZS93cy9PcGVuU291cmNlJCAKCgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQVNNIGxsaW50OgoKL1ZvbHVtZXMvU291cmNlL29zcy93ZWJraXQyJCAuL1Rvb2xz
L1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cyAtLWRlYnVnClVzaW5nIHBvcnQgJ21hYy1tb3VudGFp
bmxpb24nClRlc3QgY29uZmlndXJhdGlvbjogPG1vdW50YWlubGlvbiwgeDg2XzY0LCBkZWJ1Zz4K
UGxhY2luZyB0ZXN0IHJlc3VsdHMgaW4gTm9uZQpCYXNlbGluZSBzZWFyY2ggcGF0aDogbWFjIC0+
IGdlbmVyaWMKVXNpbmcgRGVidWcgYnVpbGQKUGl4ZWwgdGVzdHMgZGlzYWJsZWQKUmVndWxhciB0
aW1lb3V0OiAzNTAwMCwgc2xvdyB0ZXN0IHRpbWVvdXQ6IDE3NTAwMApDb21tYW5kIGxpbmU6IC9W
b2x1bWVzL1NvdXJjZS9vc3Mvd2Via2l0Mi9XZWJLaXRCdWlsZC9EZWJ1Zy9EdW1wUmVuZGVyVHJl
ZSAtCgpGb3VuZCAzMTE3NCB0ZXN0czsgcnVubmluZyAyODk2Nywgc2tpcHBpbmcgMjIwNy4KUnVu
bmluZyA4IER1bXBSZW5kZXJUcmVlcyBpbiBwYXJhbGxlbCBvdmVyIDc2NCBzaGFyZHMgKDEgbG9j
a2VkKS4KClsyMTgvMjg5NjddIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwu
aHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpCiAgY3NzMy9maWx0ZXJzL2N1c3Rv
bS9jdXN0b20tZmlsdGVyLWJsZW5kLW1vZGVzLmh0bWwgLT4gcmVmIHRlc3QgaGFzaGVzIGRpZG4n
dCBtYXRjaCBidXQgZGlmZiBwYXNzZWQKWzY2ODQvMjg5NjddIGVkaXRpbmcvc3BlbGxpbmcvZ3Jh
bW1hci5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKWzY3MjcvMjg5NjddIGVkaXRpbmcvc3BlbGxpbmcvbWFya2Vycy5odG1s
IGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAgIApbMTE1OTMv
Mjg5NjddIGZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtd2l0aC1zaGFkb3ctaW4tZHJhZy5odG1s
IGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAgICAgICAgClsx
MTk1My8yODk2N10gZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLmh0bWwg
ZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKSAgICAgICAgICAgICAgClsxNDQ1MS8yODk2
N10gZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250YWluZXItd2hpdGUtc3BhY2UuaHRt
bCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAgICAgICAgIApbMTQ0NjYvMjg5
NjddIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LW92ZXJmbG93LXNjcm9sLWhpZGRl
bi5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE0NjYyLzI4OTY3XSBmYXN0
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMuaHRtbCBm
YWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsxNjEyNi8yODk2N10gZmFzdC93b3JrZXJz
L3dvcmtlci1jbG9zZS1tb3JlLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKWzE2NTIwLzI4OTY3XSBmYXN0L3dvcmtlcnMv
d29ya2VyLWxpZmVjeWNsZS5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAg
ICAgICAgICAgICAgICAgICAgICAgIApbMTY5NTkvMjg5NjddIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c2FuZGJveGVkLWlmcmFtZS1vcmlnaW4tYWRkLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4
dCBkaWZmKQpbMTgzODYvMjg5NjddIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKWzE4NDYwLzI4OTY3XSBmYXN0L2NhbnZhcy93ZWJnbC91
bmluaXRpYWxpemVkLXRlc3QuaHRtbCB0aW1lZCBvdXQgdW5leHBlY3RlZGx5ICAgICAgICAgICAg
ICAgICAgICAgICAgIApbMTg5ODIvMjg5NjddIGpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCBmYWls
ZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKWzE5MDM1LzI4OTY3XSBqcXVlcnkvb2Zmc2V0Lmh0bWwgZmFpbGVk
IHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKWzE5NDMwLzI4OTY3XSBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9yZW1v
dmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0aW9uLXVzaW5nLXB1bmN0
dWF0aW9uLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMTk0NjUvMjg5Njdd
IHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMtMy5odG1sIGZhaWxl
ZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzI2ODE3LzI4OTY3XSBzdmcvdGV4dC9ub24tYm1w
LXBvc2l0aW9uaW5nLWxpc3RzLnN2ZyBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKc3RvcHBpbmcgRHVtcFJlbmRlclRyZWUgdGltZWQgb3V0LCBraWxsaW5nIGl0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmtpbGxl
ZApzdG9wcGluZyBEdW1wUmVuZGVyVHJlZSB0aW1lZCBvdXQsIGtpbGxpbmcgaXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKa2lsbGVkClsyODQzNC8yODk2N10gdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtdHJhbnNmb3JtLmh0bWwgZmFpbGVkIHVuZXhwZWN0
ZWRseSAodGV4dCBkaWZmKQpzdG9wcGluZyBEdW1wUmVuZGVyVHJlZSB0aW1lZCBvdXQsIGtpbGxp
bmcgaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApr
aWxsZWQKWzI4NjY0LzI4OTY3XSBmYXN0L2pzL3JhbmRvbS1hcnJheS1nYy1zdHJlc3MuaHRtbCB0
aW1lZCBvdXQgdW5leHBlY3RlZGx5ICAgICAgICAgICAgICAgICAgICAgICAKWzI4Nzc5LzI4OTY3
XSBpbnNwZWN0b3IvdGFiYmVkLXBhbmUtbWF4LXRhYi13aWR0aC1jYWxjdWxhdGlvbi5odG1sIGNy
YXNoZWQgdW5leHBlY3RlZGx5ClsyODc4My8yODk2N10gaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXByb3RvLXByb3BlcnR5Lmh0bWwgY3Jhc2hlZCB1bmV4cGVjdGVkbHkKc3RvcHBpbmcgRHVt
cFJlbmRlclRyZWUgdGltZWQgb3V0LCBraWxsaW5nIGl0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKa2lsbGVkCnN0b3BwaW5nIER1bXBSZW5kZXJUcmVlIHRpbWVkIG91dCwg
a2lsbGluZyBpdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmtpbGxlZAoKUmV0
cnlpbmcgMjIgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLgoKUnVubmluZyAxIER1bXBSZW5kZXJU
cmVlIG92ZXIgMTYgc2hhcmRzLgoKWzcvMjJdIGZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtd2l0
aC1zaGFkb3ctaW4tZHJhZy5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzkv
MjJdIGZhc3QvanMvcmFuZG9tLWFycmF5LWdjLXN0cmVzcy5odG1sIHRpbWVkIG91dCB1bmV4cGVj
dGVkbHkKWzEwLzIyXSBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1vdmVyZmxvdy1z
Y3JvbC1oaWRkZW4uaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsxMS8yMl0g
ZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250YWluZXItd2hpdGUtc3BhY2UuaHRtbCBm
YWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsxMi8yMl0gZmFzdC9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0bWwgZmFpbGVkIHVuZXhwZWN0
ZWRseSAodGV4dCBkaWZmKQpbMTMvMjJdIGZhc3Qvd29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5o
dG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE0LzIyXSBmYXN0L3dvcmtlcnMv
d29ya2VyLWxpZmVjeWNsZS5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE5
LzIyXSBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0
ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwgZmFpbGVk
IHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjAvMjJdIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRl
ci9maWxlLXVybC1taW1ldHlwZXMtMy5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlm
ZikKWzIxLzIyXSBzdmcvdGV4dC9ub24tYm1wLXBvc2l0aW9uaW5nLWxpc3RzLnN2ZyBmYWlsZWQg
dW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpCgoyODk0NSB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQsIDIy
IGRpZG4ndDoKCgpVbmV4cGVjdGVkIGZsYWtpbmVzczogdGV4dCBmYWlsdXJlcyAoOSkKICBhbmlt
YXRpb25zL2FuaW1hdGlvbi1kaXJlY3Rpb24tbm9ybWFsLmh0bWwgPSBURVhUIFBBU1MKICBlZGl0
aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRtbCA9IFRFWFQgUEFTUwogIGVkaXRpbmcvc3BlbGxpbmcv
bWFya2Vycy5odG1sID0gVEVYVCBQQVNTCiAgZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUt
d2l0aC1uYW1lLmh0bWwgPSBURVhUIFBBU1MKICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hl
ZC1pZnJhbWUtb3JpZ2luLWFkZC5odG1sID0gVEVYVCBQQVNTCiAgaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgPSBURVhUIFBBU1MKICBqcXVlcnkvbWFu
aXB1bGF0aW9uLmh0bWwgPSBURVhUIFBBU1MKICBqcXVlcnkvb2Zmc2V0Lmh0bWwgPSBURVhUIFBB
U1MKICB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC10cmFuc2Zvcm0uaHRtbCA9IFRF
WFQgUEFTUwoKVW5leHBlY3RlZCBmbGFraW5lc3M6IHRpbWVvdXRzICgxKQogIGZhc3QvY2FudmFz
L3dlYmdsL3VuaW5pdGlhbGl6ZWQtdGVzdC5odG1sID0gVElNRU9VVCBQQVNTCgoKUmVncmVzc2lv
bnM6IFVuZXhwZWN0ZWQgdGV4dCBmYWlsdXJlcyA6ICg5KQogIGZhc3QvZXZlbnRzL3JlbW92ZS10
YXJnZXQtd2l0aC1zaGFkb3ctaW4tZHJhZy5odG1sID0gVEVYVAogIGZhc3Qvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtY29udGFpbmVyLXdoaXRlLXNwYWNlLmh0bWwgPSBURVhUCiAgZmFzdC9zcGF0
aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtb3ZlcmZsb3ctc2Nyb2wtaGlkZGVuLmh0bWwgPSBURVhU
CiAgZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFz
Lmh0bWwgPSBURVhUCiAgZmFzdC93b3JrZXJzL3dvcmtlci1jbG9zZS1tb3JlLmh0bWwgPSBURVhU
CiAgZmFzdC93b3JrZXJzL3dvcmtlci1saWZlY3ljbGUuaHRtbCA9IFRFWFQKICBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1
dG9jb3JyZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwgPSBURVhUCiAgcGxhdGZvcm0vbWFj
L2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy0zLmh0bWwgPSBURVhUCiAgc3ZnL3RleHQv
bm9uLWJtcC1wb3NpdGlvbmluZy1saXN0cy5zdmcgPSBURVhUCgpSZWdyZXNzaW9uczogVW5leHBl
Y3RlZCBjcmFzaGVzIDogKDIpCiAgaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXByb3RvLXBy
b3BlcnR5Lmh0bWwgPSBDUkFTSAogIGluc3BlY3Rvci90YWJiZWQtcGFuZS1tYXgtdGFiLXdpZHRo
LWNhbGN1bGF0aW9uLmh0bWwgPSBDUkFTSAoKUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQgdGltZW91
dHMgOiAoMSkKICBmYXN0L2pzL3JhbmRvbS1hcnJheS1nYy1zdHJlc3MuaHRtbCA9IFRJTUVPVVQK
CkZhaWxlZCB0byBleGVjdXRlIFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMgYXQg
Li9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMgbGluZSAxMjQuCi9Wb2x1bWVzL1NvdXJj
ZS9vc3Mvd2Via2l0MiQgCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNsYXNzaWM6CgovVm9sdW1l
cy9Tb3VyY2Uvb3NzL3dlYmtpdDMkIC4vVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIC0t
ZGVidWcKVXNpbmcgcG9ydCAnbWFjLW1vdW50YWlubGlvbicKVGVzdCBjb25maWd1cmF0aW9uOiA8
bW91bnRhaW5saW9uLCB4ODZfNjQsIGRlYnVnPgpQbGFjaW5nIHRlc3QgcmVzdWx0cyBpbiBOb25l
CkJhc2VsaW5lIHNlYXJjaCBwYXRoOiBtYWMgLT4gZ2VuZXJpYwpVc2luZyBEZWJ1ZyBidWlsZApQ
aXhlbCB0ZXN0cyBkaXNhYmxlZApSZWd1bGFyIHRpbWVvdXQ6IDM1MDAwLCBzbG93IHRlc3QgdGlt
ZW91dDogMTc1MDAwCkNvbW1hbmQgbGluZTogL1ZvbHVtZXMvU291cmNlL29zcy93ZWJraXQzL1dl
YktpdEJ1aWxkL0RlYnVnL0R1bXBSZW5kZXJUcmVlIC0KCkZvdW5kIDMxMTc0IHRlc3RzOyBydW5u
aW5nIDI4OTY3LCBza2lwcGluZyAyMjA3LgpSdW5uaW5nIDggRHVtcFJlbmRlclRyZWVzIGluIHBh
cmFsbGVsIG92ZXIgNzY0IHNoYXJkcyAoMSBsb2NrZWQpLgoKWzIyLzI4OTY3XSBhY2Nlc3NpYmls
aXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdlbWVudC5odG1sIGZhaWxlZCB1bmV4
cGVjdGVkbHkgKHRleHQgZGlmZikKWzM3Ny8yODk2N10gYW5pbWF0aW9ucy9hbmltYXRpb24tZGly
ZWN0aW9uLXJldmVyc2UuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgICAg
ICAgICAKWzY1Ni8yODk2N10gYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLmh0bWwgZmFpbGVk
IHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKSAgICAgICAgICAgICAgICAgCls3NzUvMjg5NjddIGFu
aW1hdGlvbnMvY29tYm8tdHJhbnNmb3JtLXRyYW5zbGF0ZStzY2FsZS5odG1sIGZhaWxlZCB1bmV4
cGVjdGVkbHkgKHRleHQgZGlmZikKICBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXIt
YmxlbmQtbW9kZXMuaHRtbCAtPiByZWYgdGVzdCBoYXNoZXMgZGlkbid0IG1hdGNoIGJ1dCBkaWZm
IHBhc3NlZApbMTU1NC8yODk2N10gYW5pbWF0aW9ucy9wbGF5LXN0YXRlLXBhdXNlZC5odG1sIGZh
aWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAKWzY4NDYvMjg5NjddIGVkaXRpbmcvc3Bl
bGxpbmcvZ3JhbW1hci5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCls2ODczLzI4OTY3XSBlZGl0aW5nL3NwZWxsaW5nL21hcmtl
cnMuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAgIApbMTE1MDMvMjg5Njdd
IGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXhoci1vcGVuLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAo
dGV4dCBkaWZmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClsx
Mjg3NC8yODk2N10gZmFzdC9sb2FkZXIvbG9jYXRpb24tcG9ydC5odG1sIGZhaWxlZCB1bmV4cGVj
dGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApbMTM1MjIvMjg5
NjddIGZhc3QvcGFyc2VyL3BhcnNlci15aWVsZC10aW1pbmcuaHRtbCBmYWlsZWQgdW5leHBlY3Rl
ZGx5ICh0ZXh0IGRpZmYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClsxMzY5Ni8yODk2N10gZmFzdC9yZWdpb25z
L2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5IChpbWFn
ZSBkaWZmKSAgClsxNDM0NC8yODk2N10gZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250
YWluZXItd2hpdGUtc3BhY2UuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpICAg
ICAgICAgICAKWzE0MzUyLzI4OTY3XSBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1v
dmVyZmxvdy1zY3JvbC1oaWRkZW4uaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYp
ClsxNDQ0OS8yODk2N10gZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVy
bGFwcGVkLWFyZWFzLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMTU1NTUv
Mjg5NjddIGZhc3Qvd29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5odG1sIGZhaWxlZCB1bmV4cGVj
dGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAgICAgICAgICAgClsxNjM4Mi8yODk2N10g
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtNS5odG1s
IHRpbWVkIG91dCB1bmV4cGVjdGVkbHkgICAgICAgICAgICAgICAgICAgICAKWzE2NTY4LzI4OTY3
XSBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtb3JpZ2luLWFkZC5odG1sIGZh
aWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE4NDAwLzI4OTY3XSBmYXN0L2pzL2ludGVn
ZXItZGl2aXNpb24tbmVnMnRvdGhlMzItYnktbmVnMS5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkg
KHRleHQgZGlmZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCltbWzE5MjMwLzI4
OTY3XSBtZWRpYS92aWRlby16b29tLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZm
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApbMTkzNTQvMjg5
NjddIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWJsb2NrcXVv
dGUtY3Jhc2guaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsxOTM4Ni8yODk2
N10gZmFzdC9yZWdleC9wYXJlbnRoZXNlcy5odG1sIGNyYXNoZWQgdW5leHBlY3RlZGx5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApb
MTk0NDMvMjg5NjddIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMt
My5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzE5NzI4LzI4OTY3XSBmYXN0
L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS5odG1sIGNyYXNoZWQgdW5l
eHBlY3RlZGx5ICAgICAgICAgICAgICAgICAgClsyMjc3MS8yODk2N10gZmFzdC9qcy9yYW5kb20t
YXJyYXktZ2Mtc3RyZXNzLmh0bWwgdGltZWQgb3V0IHVuZXhwZWN0ZWRseSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgClsyMzM4OS8yODk2N10gc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS4x
MF9CaW5hcnlfQml0d2lzZV9PcGVyYXRvcnMvMTEuMTAuMl9YT1JfT3BlcmF0b3IvUzExLjEwLjJf
QTNfVDEuMy5odG1sIHRpbWVkIG91dCB1bmV4cGVjdGVkbHkKWzI1OTc5LzI4OTY3XSBzdmcvYW5p
bWF0aW9ucy9zbWlsLWxlYWstZHluYW1pY2FsbHktYWRkZWQtZWxlbWVudC1pbnN0YW5jZXMuc3Zn
IGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgClsyNTk4NS8yODk2N10gc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQt
aW5zdGFuY2VzLW5vQmFzZVZhbFJlZi5zdmcgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZm
KQpbMjU5OTkvMjg5NjddIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNl
cy5zdmcgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjYwMDkvMjg5NjddIHN2Zy9h
bmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50cy5zdmcgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4
dCBkaWZmKQpbMjYxNzcvMjg5NjddIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9h
ZC1hbmQtZXJyb3ItZXZlbnRzLnN2ZyBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsy
Njc1NS8yODk2N10gc3ZnL3RleHQvbm9uLWJtcC1wb3NpdGlvbmluZy1saXN0cy5zdmcgZmFpbGVk
IHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKSAgICAgICAgICAgICAgICAgICAgCnN0b3BwaW5nIER1
bXBSZW5kZXJUcmVlIHRpbWVkIG91dCwga2lsbGluZyBpdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmtpbGxlZApzdG9wcGluZyBE
dW1wUmVuZGVyVHJlZSB0aW1lZCBvdXQsIGtpbGxpbmcgaXQKa2lsbGVkClsyODY0NC8yODk2N10g
aW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24t
cmVsb2FkLmh0bWwgY3Jhc2hlZCB1bmV4cGVjdGVkbHkKc3RvcHBpbmcgRHVtcFJlbmRlclRyZWUg
dGltZWQgb3V0LCBraWxsaW5nIGl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIApraWxsZWQKWzI4ODU0LzI4OTY3XSBzcHV0bmlrL1VuaWNvZGUv
VW5pY29kZV8yMTgvUzcuNl9BNS4zX1QxLmh0bWwgdGltZWQgb3V0IHVuZXhwZWN0ZWRseQpbMjg4
NTYvMjg5NjddIGZhc3QvanMvcmVnZXhwLW5vbi1ncmVlZHktcGFyZW50aGVzZXMuaHRtbCBjcmFz
aGVkIHVuZXhwZWN0ZWRseQpzdG9wcGluZyBEdW1wUmVuZGVyVHJlZSB0aW1lZCBvdXQsIGtpbGxp
bmcgaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKa2lsbGVkCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKUmV0cnlpbmcgMzQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLgoKUnVubmluZyAxIER1bXBS
ZW5kZXJUcmVlIG92ZXIgMjMgc2hhcmRzLgoKWzIvMzRdIGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJp
bGl0eS1ub2RlLW1lbW9yeS1tYW5hZ2VtZW50Lmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4
dCBkaWZmKQpbMy8zNF0gYW5pbWF0aW9ucy9wbGF5LXN0YXRlLXBhdXNlZC5odG1sIGZhaWxlZCB1
bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzExLzM0XSBmYXN0L2pzL2ludGVnZXItZGl2aXNpb24t
bmVnMnRvdGhlMzItYnktbmVnMS5odG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikK
WzEyLzM0XSBmYXN0L2pzL3JlZ2V4cC1ub24tZ3JlZWR5LXBhcmVudGhlc2VzLmh0bWwgY3Jhc2hl
ZCB1bmV4cGVjdGVkbHkKWzEzLzM0XSBmYXN0L2pzL3JhbmRvbS1hcnJheS1nYy1zdHJlc3MuaHRt
bCB0aW1lZCBvdXQgdW5leHBlY3RlZGx5ClsxNy8zNF0gZmFzdC9yZWdleC9wYXJlbnRoZXNlcy5o
dG1sIGNyYXNoZWQgdW5leHBlY3RlZGx5ClsxOS8zNF0gZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24v
c25hdi1kaXYtb3ZlcmZsb3ctc2Nyb2wtaGlkZGVuLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAo
dGV4dCBkaWZmKQpbMjAvMzRdIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGFpbmVy
LXdoaXRlLXNwYWNlLmh0bWwgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjEvMzRd
IGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy5o
dG1sIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzIyLzM0XSBmYXN0L3dvcmtlcnMv
d29ya2VyLWNsb3NlLW1vcmUuaHRtbCBmYWlsZWQgdW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpClsy
Ni8zNF0gcGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy0zLmh0bWwg
ZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMjkvMzRdIHN2Zy9hbmltYXRpb25zL3Nt
aWwtbGVhay1keW5hbWljYWxseS1hZGRlZC1lbGVtZW50LWluc3RhbmNlcy5zdmcgZmFpbGVkIHVu
ZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMzAvMzRdIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1l
bGVtZW50cy5zdmcgZmFpbGVkIHVuZXhwZWN0ZWRseSAodGV4dCBkaWZmKQpbMzEvMzRdIHN2Zy9h
bmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNlcy1ub0Jhc2VWYWxSZWYuc3ZnIGZh
aWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlmZikKWzMyLzM0XSBzdmcvYW5pbWF0aW9ucy9zbWls
LWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnIGZhaWxlZCB1bmV4cGVjdGVkbHkgKHRleHQgZGlm
ZikKWzM0LzM0XSBzdmcvdGV4dC9ub24tYm1wLXBvc2l0aW9uaW5nLWxpc3RzLnN2ZyBmYWlsZWQg
dW5leHBlY3RlZGx5ICh0ZXh0IGRpZmYpCgoyODkzMyB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQsIDM0
IGRpZG4ndDoKCgpVbmV4cGVjdGVkIGZsYWtpbmVzczogdGV4dCBmYWlsdXJlcyAoMTIpCiAgYW5p
bWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLXJldmVyc2UuaHRtbCA9IFRFWFQgUEFTUwogIGFu
aW1hdGlvbnMvY2hhbmdlLWtleWZyYW1lcy5odG1sID0gVEVYVCBQQVNTCiAgYW5pbWF0aW9ucy9j
b21iby10cmFuc2Zvcm0tdHJhbnNsYXRlK3NjYWxlLmh0bWwgPSBURVhUIFBBU1MKICBlZGl0aW5n
L3NwZWxsaW5nL2dyYW1tYXIuaHRtbCA9IFRFWFQgUEFTUwogIGVkaXRpbmcvc3BlbGxpbmcvbWFy
a2Vycy5odG1sID0gVEVYVCBQQVNTCiAgZmFzdC9ldmVudHMvcGFnZWhpZGUteGhyLW9wZW4uaHRt
bCA9IFRFWFQgUEFTUwogIGZhc3QvbG9hZGVyL2xvY2F0aW9uLXBvcnQuaHRtbCA9IFRFWFQgUEFT
UwogIGZhc3QvcGFyc2VyL3BhcnNlci15aWVsZC10aW1pbmcuaHRtbCA9IFRFWFQgUEFTUwogIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1vcmlnaW4tYWRkLmh0bWwgPSBURVhU
IFBBU1MKICBtZWRpYS92aWRlby16b29tLmh0bWwgPSBURVhUIFBBU1MKICBwbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1ibG9ja3F1b3RlLWNyYXNoLmh0bWwgPSBU
RVhUIFBBU1MKICBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9y
LWV2ZW50cy5zdmcgPSBURVhUIFBBU1MKClVuZXhwZWN0ZWQgZmxha2luZXNzOiBpbWFnZS1vbmx5
IGZhaWx1cmVzICgxKQogIGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0
bWwgPSBJTUFHRSBQQVNTCgpVbmV4cGVjdGVkIGZsYWtpbmVzczogdGltZW91dHMgKDMpCiAgZWRp
dGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtNS5odG1sID0g
VElNRU9VVCBQQVNTCiAgc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS4xMF9C
aW5hcnlfQml0d2lzZV9PcGVyYXRvcnMvMTEuMTAuMl9YT1JfT3BlcmF0b3IvUzExLjEwLjJfQTNf
VDEuMy5odG1sID0gVElNRU9VVCBQQVNTCiAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfMjE4L1M3
LjZfQTUuM19UMS5odG1sID0gVElNRU9VVCBQQVNTCgoKUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQg
dGV4dCBmYWlsdXJlcyA6ICgxMykKICBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1t
ZW1vcnktbWFuYWdlbWVudC5odG1sID0gVEVYVAogIGFuaW1hdGlvbnMvcGxheS1zdGF0ZS1wYXVz
ZWQuaHRtbCA9IFRFWFQKICBmYXN0L2pzL2ludGVnZXItZGl2aXNpb24tbmVnMnRvdGhlMzItYnkt
bmVnMS5odG1sID0gVEVYVAogIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGFpbmVy
LXdoaXRlLXNwYWNlLmh0bWwgPSBURVhUCiAgZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1k
aXYtb3ZlcmZsb3ctc2Nyb2wtaGlkZGVuLmh0bWwgPSBURVhUCiAgZmFzdC9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0bWwgPSBURVhUCiAgZmFzdC93
b3JrZXJzL3dvcmtlci1jbG9zZS1tb3JlLmh0bWwgPSBURVhUCiAgcGxhdGZvcm0vbWFjL2Zhc3Qv
bG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy0zLmh0bWwgPSBURVhUCiAgc3ZnL2FuaW1hdGlvbnMv
c21pbC1sZWFrLWR5bmFtaWNhbGx5LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZyA9IFRFWFQK
ICBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMtbm9CYXNlVmFsUmVm
LnN2ZyA9IFRFWFQKICBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMu
c3ZnID0gVEVYVAogIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50cy5zdmcgPSBURVhU
CiAgc3ZnL3RleHQvbm9uLWJtcC1wb3NpdGlvbmluZy1saXN0cy5zdmcgPSBURVhUCgpSZWdyZXNz
aW9uczogVW5leHBlY3RlZCBjcmFzaGVzIDogKDQpCiAgZmFzdC9qcy9yZWdleHAtbm9uLWdyZWVk
eS1wYXJlbnRoZXNlcy5odG1sID0gQ1JBU0gKICBmYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMt
aW4taW5jbHVkZWQtZmlsZS5odG1sID0gQ1JBU0gKICBmYXN0L3JlZ2V4L3BhcmVudGhlc2VzLmh0
bWwgPSBDUkFTSAogIGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3Qt
YWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sID0gQ1JBU0gKClJlZ3Jlc3Npb25zOiBVbmV4cGVjdGVk
IHRpbWVvdXRzIDogKDEpCiAgZmFzdC9qcy9yYW5kb20tYXJyYXktZ2Mtc3RyZXNzLmh0bWwgPSBU
SU1FT1VUCgpGYWlsZWQgdG8gZXhlY3V0ZSBUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXRl
c3RzIGF0IC4vVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGxpbmUgMTI0LgovVm9sdW1l
cy9Tb3VyY2Uvb3NzL3dlYmtpdDMkICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>