<?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>161710</bug_id>
          
          <creation_ts>2016-09-07 13:27:32 -0700</creation_ts>
          <short_desc>Add support for WASM Memory.</short_desc>
          <delta_ts>2016-10-18 10:10:17 -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>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159775</blocked>
    
    <blocked>162976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1227327</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-07 13:27:32 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233516</commentid>
    <comment_count>1</comment_count>
      <attachid>289843</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-26 12:29:29 -0700</bug_when>
    <thetext>Created attachment 289843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233518</commentid>
    <comment_count>2</comment_count>
      <attachid>289843</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-26 12:34:52 -0700</bug_when>
    <thetext>Comment on attachment 289843
Patch

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

&gt; Source/JavaScriptCore/testWASM.cpp:385
&gt; +        Vector&lt;uint8_t&gt; vector = {
&gt; +            0x00, 0x61, 0x73, 0x6d, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x87, 0x80, 0x80, 0x80, 0x00, 0x01, 0x40,
&gt; +            0x03, 0x01, 0x01, 0x01, 0x00, 0x03, 0x82, 0x80, 0x80, 0x80, 0x00, 0x01, 0x00, 0x05, 0x83, 0x80,
&gt; +            0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x07, 0x8f, 0x80, 0x80, 0x80, 0x00, 0x01, 0x0b, 0x77, 0x72,
&gt; +            0x69, 0x74, 0x65, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x00, 0x0a, 0xaf, 0x80, 0x80, 0x80,
&gt; +            0x00, 0x01, 0xa9, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x15, 0x03, 0x01, 0x00,
&gt; +            0x02, 0x00, 0x14, 0x03, 0x14, 0x02, 0x56, 0x07, 0x01, 0x14, 0x01, 0x14, 0x03, 0x40, 0x14, 0x00,
&gt; +            0x2e, 0x00, 0x00, 0x10, 0x01, 0x14, 0x03, 0x40, 0x15, 0x03, 0x06, 0x00, 0x0f, 0x0f, 0x09, 0x0f
&gt; +        };
&gt; +

Oh man, we should figure out a better way of writing these test cases!

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:344
&gt; +    // We need to make sure that we add the memoryOffset to the pointer with a 32bit add
&gt; +    // so if it overflows we stay within our mapped memory.
&gt; +    pointer = m_currentBlock-&gt;appendNew&lt;Value&gt;(m_proc, Add, Origin(), pointer, memoryOffset);
&gt; +
&gt; +    PatchpointValue* patchpoint = m_currentBlock-&gt;appendNew&lt;PatchpointValue&gt;(m_proc, typeForLoad(op), Origin());
&gt; +    patchpoint-&gt;appendSomeRegister(pointer);
&gt; +    patchpoint-&gt;numGPScratchRegisters++;
&gt; +    patchpoint-&gt;setGenerator([=] (CCallHelpers&amp; jit, const StackmapGenerationParams&amp; params) {
&gt; +        GPRReg scratch = params.gpScratch(0);
&gt; +        GPRReg result = params[0].gpr();
&gt; +        GPRReg ptr = params[1].gpr();
&gt; +
&gt; +        jit.load32(bitwise_cast&lt;char*&gt;(&amp;m_memory) + ModuleMemoryInformation::offsetOfSize(), scratch);
&gt; +        CCallHelpers::Jump invalid = jit.branch32(CCallHelpers::AboveOrEqual, ptr, scratch);
&gt; +
&gt; +        jit.move(CCallHelpers::ImmPtr(m_memory.memory()), scratch);
&gt; +        loadForOp(jit, op, MacroAssembler::BaseIndex(scratch, ptr, MacroAssembler::Scale::TimesOne), result);
&gt; +        CCallHelpers::Jump done = jit.jump();
&gt; +
&gt; +        invalid.link(&amp;jit);
&gt; +        // Right now we crash; In the future we should do the trapping thing.
&gt; +        jit.breakpoint();
&gt; +        done.link(&amp;jit);
&gt; +    });
&gt; +
&gt; +    result = patchpoint;

Whoa!!!  Why not just use B3 32-bit load followed by B3 32-&gt;64 sign extend or zero extend?

If this results in bad code, you could easily add B3 instruction selection rules for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233897</commentid>
    <comment_count>3</comment_count>
      <attachid>289954</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-27 09:25:37 -0700</bug_when>
    <thetext>Created attachment 289954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233899</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 09:27:49 -0700</bug_when>
    <thetext>Attachment 289954 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMOps.h:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/wasm/WASMOps.h:114:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 12 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>1233987</commentid>
    <comment_count>5</comment_count>
      <attachid>289954</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-27 11:31:11 -0700</bug_when>
    <thetext>Comment on attachment 289954
Patch

Via offline discussion with pizlo I think we are going to change how this works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236330</commentid>
    <comment_count>6</comment_count>
      <attachid>290637</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-04 13:07:37 -0700</bug_when>
    <thetext>Created attachment 290637
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236521</commentid>
    <comment_count>7</comment_count>
      <attachid>290687</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-04 19:32:45 -0700</bug_when>
    <thetext>Created attachment 290687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236605</commentid>
    <comment_count>8</comment_count>
      <attachid>290687</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-10-05 05:14:25 -0700</bug_when>
    <thetext>Comment on attachment 290687
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:861
&gt; +    wasm/WASMMMemory.cpp

typo: WASMMMemory.cpp -&gt; WASMMemory.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236660</commentid>
    <comment_count>9</comment_count>
      <attachid>290687</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 09:26:17 -0700</bug_when>
    <thetext>Comment on attachment 290687
Patch

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

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:861
&gt;&gt; +    wasm/WASMMMemory.cpp
&gt; 
&gt; typo: WASMMMemory.cpp -&gt; WASMMemory.cpp

Whoops, fixed. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236661</commentid>
    <comment_count>10</comment_count>
      <attachid>290714</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 09:27:00 -0700</bug_when>
    <thetext>Created attachment 290714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236664</commentid>
    <comment_count>11</comment_count>
      <attachid>290714</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-05 09:39:03 -0700</bug_when>
    <thetext>Comment on attachment 290714
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:42
&gt; +        // Try again with a different number.
&gt; +        result = mmap(nullptr, maxPageNum, PROT_NONE, MAP_PRIVATE | MAP_ANON, 0, 0);

Drive by comment: How is this different from the try above?  The comment said to try with a different number, but it appears we&apos;re using the same numbers here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236667</commentid>
    <comment_count>12</comment_count>
      <attachid>290714</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 09:45:43 -0700</bug_when>
    <thetext>Comment on attachment 290714
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:42
&gt;&gt; +        result = mmap(nullptr, maxPageNum, PROT_NONE, MAP_PRIVATE | MAP_ANON, 0, 0);
&gt; 
&gt; Drive by comment: How is this different from the try above?  The comment said to try with a different number, but it appears we&apos;re using the same numbers here.

Whoops, that should be maxSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236669</commentid>
    <comment_count>13</comment_count>
      <attachid>290716</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 09:46:30 -0700</bug_when>
    <thetext>Created attachment 290716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236675</commentid>
    <comment_count>14</comment_count>
      <attachid>290716</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-05 09:57:21 -0700</bug_when>
    <thetext>Comment on attachment 290716
Patch

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

Haven&apos;t gone through everything, LMK when ready to review for real.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:310
&gt; +        break;

This can be auto-generated from the JSON file&apos;s &quot;return&quot;.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:390
&gt; +        return 8;

Ditto.

&gt; JSTests/stress/wasm/generate-wasmops-header.js:42
&gt; +    ...opcodeMacroizer(op =&gt; (op.category === &quot;store&quot;)),

(discussed on IRC) it&apos;s probably better to look at &quot;return&quot; to distinguish load / store instead of changing the category, because atomics like cmpxchg will make this weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236687</commentid>
    <comment_count>15</comment_count>
      <attachid>290716</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 10:18:37 -0700</bug_when>
    <thetext>Comment on attachment 290716
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:310
&gt;&gt; +        break;
&gt; 
&gt; This can be auto-generated from the JSON file&apos;s &quot;return&quot;.

I&apos;m not sure I see how since the return field only states the WASM type of the return not the number of bytes being read from memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236688</commentid>
    <comment_count>16</comment_count>
      <attachid>290716</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 10:19:04 -0700</bug_when>
    <thetext>Comment on attachment 290716
Patch

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

&gt;&gt; JSTests/stress/wasm/generate-wasmops-header.js:42
&gt;&gt; +    ...opcodeMacroizer(op =&gt; (op.category === &quot;store&quot;)),
&gt; 
&gt; (discussed on IRC) it&apos;s probably better to look at &quot;return&quot; to distinguish load / store instead of changing the category, because atomics like cmpxchg will make this weird.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236691</commentid>
    <comment_count>17</comment_count>
      <attachid>290716</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-05 10:20:47 -0700</bug_when>
    <thetext>Comment on attachment 290716
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:310
&gt;&gt;&gt; +        break;
&gt;&gt; 
&gt;&gt; This can be auto-generated from the JSON file&apos;s &quot;return&quot;.
&gt; 
&gt; I&apos;m not sure I see how since the return field only states the WASM type of the return not the number of bytes being read from memory.

Oh right. We could add it to the file then? Later patch, I&apos;m happy to do that :-)
Seems like we&apos;ll want that info for tests, and for other ops like atomics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236702</commentid>
    <comment_count>18</comment_count>
      <attachid>290723</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-05 10:37:46 -0700</bug_when>
    <thetext>Created attachment 290723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236731</commentid>
    <comment_count>19</comment_count>
      <attachid>290723</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-05 11:24:50 -0700</bug_when>
    <thetext>Comment on attachment 290723
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:404
&gt; +        FALLTHROUGH;

Is i64 trunk + 32-bit value stored into 8-bit a b3-ism? Seems odd.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:657
&gt; +    // Return the result, if neeeded.

typo

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:680
&gt; +    std::unique_ptr&lt;FunctionCompilation&gt; result = std::make_unique&lt;FunctionCompilation&gt;();

Just my style, but I prefer: auto result(std::make_unique&lt;FunctionCompilation&gt;());

&gt; Source/JavaScriptCore/wasm/WASMFunctionParser.h:158
&gt; +        // TODO: What do I do with this?

It&apos;s just a int which can be ignored. Could determine whether to split ops on ARM, doesn&apos;t seem useful on x86 (movdqa / movdqu isn&apos;t a thing anymore AFAIK). I assume that would just be taught to B3, passed from here.

I think you need to validate the alignment though (power of 2, no more than natural). Note that alignment is on base+imm, not just base.

This seems missing from the design repo... https://github.com/WebAssembly/spec/issues/217 and https://github.com/WebAssembly/spec/issues/302
I&apos;ll fix the design repo.

&gt; Source/JavaScriptCore/wasm/WASMFunctionParser.h:176
&gt; +        // TODO: What do I do with this?

Same.

&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:39
&gt; +    void* result = mmap(nullptr, maxPageNum, PROT_NONE, MAP_PRIVATE | MAP_ANON, 0, 0);

Shouldn&apos;t this be maxPageNum * pageSize?

&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:48
&gt; +        munmap(result, maxSize);

maxSize may not have been what you allocated above.

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:64
&gt; +            munmap(m_memory, m_maxSize);

This is also wrong if you retried allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241001</commentid>
    <comment_count>20</comment_count>
      <attachid>291830</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 10:28:52 -0700</bug_when>
    <thetext>Created attachment 291830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241071</commentid>
    <comment_count>21</comment_count>
      <attachid>291830</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-17 11:41:45 -0700</bug_when>
    <thetext>Comment on attachment 291830
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:306
&gt; +    RELEASE_ASSERT_NOT_REACHED();

This could be auto-generated from the JSON file.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:388
&gt; +    RELEASE_ASSERT_NOT_REACHED();

Same.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:646
&gt; +            for (unsigned i = 0; i &lt; sizes.size(); ++i)

Can you use a range-based for loop?

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.h:80
&gt; +        unsigned stackArgumentCount = arguments.size() &lt; m_registerArguments.size() ? 0 : arguments.size() - m_registerArguments.size();

Vector::size returns a size_t, seems like a better fit here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241154</commentid>
    <comment_count>22</comment_count>
      <attachid>291830</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-17 14:13:06 -0700</bug_when>
    <thetext>Comment on attachment 291830
Patch

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

r=me with a bunch of things to fix

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        size. Currently, B3 only barely works with pinned values because
&gt; +        we cannot change the size of memory.

Is this still true? I think this has changed.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:218
&gt; +    // FIXME: We should support more than one size register. see: https://bugs.webkit.org/show_bug.cgi?id=162952

I don&apos;t think you need this comment here -- we have a record in bugzilla. You should add in buzilla commentary about how this is a proposed optimization.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:231
&gt; +        // FIXME: We should support more than one size register. see: https://bugs.webkit.org/show_bug.cgi?id=162952

Ditto.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:233
&gt; +        m_proc.pinRegister(m_memorySizeGPR);

This should be a loop to pin all registers in the vector.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:238
&gt; +        // FIXME: Change this when we add trapping. See: https://bugs.webkit.org/show_bug.cgi?id=163351

I think this fixme is too vague since it doesn&apos;t say what we want to change to. I would say something about turning traps into exceptions rather than crashing.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:280
&gt; +    // FIXME: We should support more than one size register. see: https://bugs.webkit.org/show_bug.cgi?id=162952

Ditto.

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:306
&gt;&gt; +    default:
&gt;&gt; +        break;
&gt;&gt; +    }
&gt;&gt; +    RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; This could be auto-generated from the JSON file.

Does the JSON file indicate how many bytes per memory op? Maybe you&apos;re proposing adding that to the JSON file?

It&apos;s better to leave the default case out because that way the compiler will do static checking for case exhaustion. If you want to leave the assert in, just in case, that&apos;s cool with me.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:309
&gt; +// FIXME: B3 should support Int64 small loads and 16-bit unsigned loads.

Same comment as below.

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:388
&gt;&gt; +    RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; Same.

It&apos;s better to leave the default case out because that way the compiler will do static checking for case exhaustion. If you want to leave the assert in, just in case, that&apos;s cool with me.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:392
&gt; +// FIXME: We should just support an Int64 store8.

I think this comment might be misleading because it suggests that something is wrong with this function and also that the change to Int64 store8 would be trivial. I would just remove this comment. If you added a bug URL, you could say &quot;http://blah, we might be able to optimize this by adding an implicitly truncating store8 of an Int64.&quot;

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:607
&gt; +    // FIXME: Is this supposed to trap if less than expected number of arguments?

Let&apos;s pick a behavior we like and raise an issue in the spec. I&apos;d suggest throwing an exception.

&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:49
&gt; +        if (!result)
&gt; +            return;

mmap returns MAP_FAILED on error, no NULL! :P

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:41
&gt; +struct PinnedRegisterInfo {

This is a good place to explain that you&apos;re planning on experimenting with holding different offsets. That would explain why this data type is a vector and not just a single entry.

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:47
&gt; +constexpr uint32_t maxPageNum = static_cast&lt;uint32_t&gt;((1ull &lt;&lt; 32) / pageSize);

Let&apos;s call this maxPageCount. We try to avoid abbreviation in WebKit style.

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:74
&gt; +    bool growMemory(uint32_t newSize)

Let&apos;s call this &quot;grow&quot;. It already resides in a class name &quot;memory&quot;.

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:90
&gt; +    uint32_t m_maxBytes { 0 };

Let&apos;s call this m_capacity.

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:91
&gt; +    uint64_t m_mappedBytes { 0 };

Let&apos;s call this m_mappedCapacity.

&gt; Source/JavaScriptCore/wasm/WASMModuleParser.cpp:180
&gt; +    max *= 64 * KB;
&gt; +    size *= 64 * KB;

This should use pageSize and the &quot;size&quot; and &quot;capacity&quot; naming scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241211</commentid>
    <comment_count>23</comment_count>
      <attachid>291886</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 15:44:58 -0700</bug_when>
    <thetext>Created attachment 291886
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241213</commentid>
    <comment_count>24</comment_count>
      <attachid>291887</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 15:47:09 -0700</bug_when>
    <thetext>Created attachment 291887
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241230</commentid>
    <comment_count>25</comment_count>
      <attachid>291887</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 16:11:11 -0700</bug_when>
    <thetext>Comment on attachment 291887
Patch for landing

Rejecting attachment 291887 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ta/EWS/WebKit/Source/JavaScriptCore/yarr/YarrCanonicalizeUCS2.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/YarrCanonicalizeUCS2.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/WASMB3IRGenerator.o wasm/WASMB3IRGenerator.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/2307387</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241232</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 16:21:10 -0700</bug_when>
    <thetext>Attachment 291887 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:394:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 20 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>1241233</commentid>
    <comment_count>27</comment_count>
      <attachid>291892</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 16:22:59 -0700</bug_when>
    <thetext>Created attachment 291892
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241242</commentid>
    <comment_count>28</comment_count>
      <attachid>291895</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 16:30:50 -0700</bug_when>
    <thetext>Created attachment 291895
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241249</commentid>
    <comment_count>29</comment_count>
      <attachid>291830</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 16:52:25 -0700</bug_when>
    <thetext>Comment on attachment 291830
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:646
&gt;&gt; +            for (unsigned i = 0; i &lt; sizes.size(); ++i)
&gt; 
&gt; Can you use a range-based for loop?

Not really since I need the index to access sizeRegisters[i].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241300</commentid>
    <comment_count>30</comment_count>
      <attachid>291895</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 19:05:31 -0700</bug_when>
    <thetext>Comment on attachment 291895
Patch for landing

Clearing flags on attachment: 291895

Committed r207453: &lt;http://trac.webkit.org/changeset/207453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241301</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 19:05:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241390</commentid>
    <comment_count>32</comment_count>
      <attachid>291895</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-18 02:33:47 -0700</bug_when>
    <thetext>Comment on attachment 291895
Patch for landing

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

&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:43
&gt; +    void* result = mmap(nullptr, m_mappedCapacity, PROT_NONE, MAP_PRIVATE | MAP_ANON, 0, 0);

I thought mmap should pass -1 for file descriptor argument for these use cases?

&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:52
&gt; +    if (mprotect(result, startingSize, PROT_READ | PROT_WRITE)) {

Nit: maybe it&apos;s worth asserting that m_mappedCapaxity &lt; startingSize?

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:42
&gt; +// entry. Specifically an extry where the sizeOffset == 0. If we have more than one size register,

Typo: extry =&gt; entry

&gt; Source/JavaScriptCore/wasm/WASMMemory.h:49
&gt; +constexpr uint32_t pageSize = 64 * KB;

Doesn&apos;t WTF expose this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241473</commentid>
    <comment_count>33</comment_count>
      <attachid>291895</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-18 10:10:17 -0700</bug_when>
    <thetext>Comment on attachment 291895
Patch for landing

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

Since this patch already landed I&apos;m putting the changes in another bug https://bugs.webkit.org/show_bug.cgi?id=163601

&gt;&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:43
&gt;&gt; +    void* result = mmap(nullptr, m_mappedCapacity, PROT_NONE, MAP_PRIVATE | MAP_ANON, 0, 0);
&gt; 
&gt; I thought mmap should pass -1 for file descriptor argument for these use cases?

I thought it just ignored the file descriptor. But it looks like for MAP_ANON mmap uses the file descriptor for Mach flags so we should use -1. I&apos;ll also add a FIXME for getting a VM tag too: https://bugs.webkit.org/show_bug.cgi?id=163600.

&gt;&gt; Source/JavaScriptCore/wasm/WASMMemory.cpp:52
&gt;&gt; +    if (mprotect(result, startingSize, PROT_READ | PROT_WRITE)) {
&gt; 
&gt; Nit: maybe it&apos;s worth asserting that m_mappedCapaxity &lt; startingSize?

Sure, I&apos;ll change that.

&gt;&gt; Source/JavaScriptCore/wasm/WASMMemory.h:42
&gt;&gt; +// entry. Specifically an extry where the sizeOffset == 0. If we have more than one size register,
&gt; 
&gt; Typo: extry =&gt; entry

Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WASMMemory.h:49
&gt;&gt; +constexpr uint32_t pageSize = 64 * KB;
&gt; 
&gt; Doesn&apos;t WTF expose this?

Nope. It exposes the system page size, which is different than the Wasm page size.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289843</attachid>
            <date>2016-09-26 12:29:29 -0700</date>
            <delta_ts>2016-09-27 09:25:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20160926122629.patch</filename>
            <type>text/plain</type>
            <size>35036</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MWVmNjdmODVmMWJmNzE0YjJkMDM3OWU5ZjEzZTkyMzA2ZDY1YTE3Li5jMzg4YzdmM2NkZTdhMjli
MWIxNDM5Y2ZjYTliYzlmMDJkNzAwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNi0wOS0yNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgKiB0ZXN0V0FTTS5jcHA6CisgICAgICAgIChydW5XQVNN
VGVzdHMpOgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpXQVNNOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlTWVtb3J5SW5mb3JtYXRpb246Ok1vZHVsZU1lbW9yeUluZm9ybWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlTWVtb3J5SW5mb3JtYXRpb246On5Nb2R1bGVNZW1vcnlJ
bmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZU1lbW9yeUluZm9ybWF0aW9u
OjptZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbjo6
c2l6ZSk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZU1lbW9yeUluZm9ybWF0aW9uOjpncm93
TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlTWVtb3J5SW5mb3JtYXRpb246Om9m
ZnNldE9mU2l6ZSk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBhcnNl
cjo6cGFyc2VNZW1vcnkpOgorICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAg
ICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OmZ1bmN0aW9uSW5mb3JtYXRpb24pOgorICAg
ICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6Om1lbW9yeSk6CisgICAgICAgICogd2FzbS9X
QVNNT3BzLmg6CisgICAgICAgICogd2FzbS9XQVNNUGxhbi5jcHA6CisgICAgICAgIChKU0M6OldB
U006OlBsYW46OlBsYW4pOgorICAgICAgICAqIHdhc20vV0FTTVBsYW4uaDoKKyAgICAgICAgKiB3
YXNtL1dBU01TZWN0aW9ucy5oOgorCiAyMDE2LTA5LTI2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAYW0uc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gQWxsb3cgZml4ZWRFeGVjdXRhYmxl
TWVtb3J5UG9vbFNpemUgdG8gYmUgc2V0IGR1cmluZyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
V0FTTS5jcHAKaW5kZXggZDllZDkxZmUxODRkZWFiMTE3Njk5NWM4YmQ2NjljZmM5ZDhlNGM2ZC4u
ZmE4MGQ0MjQ4MGY4MjMwYTczNTVhY2FmMzkwZWQ0NTdmMTQzYjhjOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdFdBU00uY3BwCkBAIC0yNDIsOCArMjQyLDIzOCBAQCBzdGF0aWMgdm9pZCBydW5XQVNN
VGVzdHMoKQogewogICAgIHsKICAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8v
IChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBv
cnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0
IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2Nh
bCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkp
CisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwg
MHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsIDB4
ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAs
CisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAw
eDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAg
ICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1Ziwg
MHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAg
ICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQs
IDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAw
eDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAg
UGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAh
PSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUg
ZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMTApIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAgICAg
IC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIp
IChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8v
ICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAv
LyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAgICkK
KyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAg
ICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAg
ICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIsIDB4
NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAs
IDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAw
eDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAweDAw
LCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgwMiwg
MHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZl
Y3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1
bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxl
IGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDIpIH0p
LCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5l
cmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9y
eSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0g
JHggaTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIp
CisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAv
LyAgICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAg
KGJyX2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQor
ICAgICAgICAvLyAgICAgICAgKGkzMi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMy
Lm11bCAoZ2V0X2xvY2FsICRpKSAoaTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAg
ICAgIC8vICAgICAgICAoc2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9s
b2NhbCAkaSkpKQorICAgICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICAp
CisgICAgICAgIC8vICAgICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAv
LyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
ciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAs
CisgICAgICAgICAgICAweDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAg
ICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4Ziwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAg
ICAgIDB4NjksIDB4NzQsIDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4Nzks
IDB4MDAsIDB4MDAsIDB4MGEsIDB4YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAw
eDAwLCAweDAxLCAweGFjLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAx
LCAweDEwLCAweDAwLCAweDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwg
MHgwMCwgMHgxNCwgMHgwMywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgw
MSwgMHgxNCwgMHgwMywgMHgxMCwgMHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQs
IDB4MDAsIDB4MzMsIDB4MDIsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4
MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBm
CisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
aWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1v
cnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVv
Zih1aW50MzJfdCk7CisgICAgICAgIHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KHBsYW4ubWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAg
ICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9y
eVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVu
Z3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAg
ICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goNSksIGJveChvZmZz
ZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7
CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENI
RUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtp
ICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZy
b206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAg
ICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikg
KHBhcmFtICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAg
ICAvLyAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAo
YmxvY2sKKyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAx
IChpMzIuZ2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAg
Ly8gICAgICAgIChpMzIuc3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwg
JGkpKSAoZ2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkz
Mi5hZGQgKGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAo
YnIgMCkKKyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAv
LyAgICAgIChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAg
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwg
MHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDBiLCAweDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2
MSwgMHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwg
MHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEs
IDB4MDAsCisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAw
eDU2LCAweDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAw
LAorICAgICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywg
MHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAg
ICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChw
bGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5z
aXplKCkpOworCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAg
ICB1aW50OF90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1l
bW9yeSgpKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAw
KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVDS19FUShtZW1vcnlb
b2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0
aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAg
ICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zmc2V0ID0gNTsKKyAgICAgICAgaW52b2tlPHZvaWQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsK
KyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hF
Q0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kg
KyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJv
bToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAg
ICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAo
cGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4
IChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVy
biAoaTMyLmxvYWQ4X3MgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAg
ICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAg
ICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAg
IDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1
ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwg
MHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4
OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAs
IDB4MmUsIDB4MDAsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAw
eDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVj
dG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3Vs
dFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUg
Y29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBB
U1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNu
J3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEwMCkgfSks
IDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAg
IC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAg
IChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIp
CisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGkzMi5jb25zdCA4KSAoZ2V0X2xvY2FsICRp
KSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhfcyAoaTMyLmNvbnN0IDgpKSkK
KyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBj
LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4
MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwg
MHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4
OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsIDB4MzIs
CisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAw
eDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLCAweDAwLAorICAg
ICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxMCwg
MHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwKKyAgICAgICAg
ICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQ
bGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9
IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBm
YWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCkgfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCkgfSks
IDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206
CiAgICAgICAgIC8vICAgIChtb2R1bGUKLSAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImR1
bWItZXEiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAg
ICAgLy8gICAgIChmdW5jICJkdW1iLWVxIiAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAo
cmVzdWx0IGkzMikKICAgICAgICAgLy8gICAgICAoaWYgKGkzMi5lcSAoZ2V0X2xvY2FsICR4KSAo
Z2V0X2xvY2FsICR5KSkKICAgICAgICAgLy8gICAgICAgKHRoZW4gKGJyIDApKQogICAgICAgICAv
LyAgICAgICAoZWxzZSAocmV0dXJuIChpMzIuY29uc3QgMSkpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwYjcxYzFhZmFhOTQ0
NjE2YmExN2ZlYmZjOTVlZGJjYWM2MGQzY2I0Li45Mjc1NGRjMzhjZWFjMTY0ZjFhYWZjOWRhNjEz
MDk3OTE2ZGUzZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKQEAgLTE2NSwxOCArMTY2
LDI1IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxWYXJpYWJsZSosIDE+IFJlc3VsdExp
c3Q7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJlc3Npb24g
PSBudWxscHRyOwogCi0gICAgQjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKKyAgICBCM0lSR2Vu
ZXJhdG9yKGNvbnN0IE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uJiwgUHJvY2VkdXJlJik7CiAKICAg
ICB2b2lkIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mKTsKICAgICB2b2lkIGFkZExv
Y2FsKFR5cGUsIHVpbnQzMl90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBl
LCB1aW50NjRfdCk7CiAKKyAgICAvLyBMb2NhbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Np
b25UeXBlIHZhbHVlKTsKIAorICAgIC8vIE1lbW9yeQorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVU
VVJOIGxvYWQoTG9hZE9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2lu
dGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBzdG9yZShTdG9yZU9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2lu
dGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisKKyAgICAvLyBCYXNpYyBvcGVyYXRvcnMKICAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJlc3Np
b25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBFeHBy
ZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCisgICAgLy8gQ29udHJv
bCBmbG93CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEJsb2NrKFR5cGUg
c2lnbmF0dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9vcChU
eXBlIHNpZ25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZElm
KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgVHlwZSBzaWduYXR1cmUpOwpAQCAtMTk0LDEzICsy
MDIsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVuaWZ5KFZhcmlhYmxlKiB0YXJnZXQsIGNvbnN0
IEV4cHJlc3Npb25UeXBlIHNvdXJjZSk7CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9jayhj
b25zdCBFeHByZXNzaW9uTGlzdCYgcmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNrKTsKIAor
ICAgIGNvbnN0IE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uJiBtX21lbW9yeTsKICAgICBQcm9jZWR1
cmUmIG1fcHJvYzsKICAgICBCYXNpY0Jsb2NrKiBtX2N1cnJlbnRCbG9jazsKICAgICBWZWN0b3I8
VmFyaWFibGUqPiBtX2xvY2FsczsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3Io
UHJvY2VkdXJlJiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVy
YXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5
LCBQcm9jZWR1cmUmIHByb2NlZHVyZSkKKyAgICA6IG1fbWVtb3J5KG1lbW9yeSkKKyAgICAsIG1f
cHJvYyhwcm9jZWR1cmUpCiB7CiAgICAgbV9jdXJyZW50QmxvY2sgPSBtX3Byb2MuYWRkQmxvY2so
KTsKIH0KQEAgLTIyNCwyMCArMjM0LDE3NCBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZEFyZ3Vt
ZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mIHR5cGVzKQogICAgICAgICB9KTsKIH0KIAotYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCitib29sIEIzSVJHZW5lcmF0b3I6OmdldExvY2FsKHVp
bnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIEFTU0VSVChtX2xv
Y2Fsc1tpbmRleF0pOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFy
aWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVy
YXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKQorYm9v
bCBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpTZXQsIE9yaWdpbigpLCBt
X2xvY2Fsc1tpbmRleF0sIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIEIz
OjpUeXBlIHR5cGVGb3JMb2FkKExvYWRPcFR5cGUgb3ApCit7CisgICAgc3dpdGNoIChvcCkgewor
ICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMy
TG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDoKKyAgICAgICAgcmV0dXJuIElu
dDMyOworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhTOgorICAgIGNhc2UgTG9hZE9wVHlw
ZTo6STY0TG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzoKKyAgICBjYXNl
IExvYWRPcFR5cGU6Okk2NExvYWQxNlU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJT
OgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyVToKKyAgICBjYXNlIExvYWRPcFR5cGU6
Okk2NExvYWQ6CisgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLy8g
V2UgZG9uJ3QgaGF2ZSBhcHByb3ByaWF0ZSBzaWduIGV4dGVuZCBmb3IgdGhlIDY0IGJpdCBzbWFs
bCBsb2Fkcy4KK2lubGluZSB2b2lkIGxvYWRGb3JPcChDQ2FsbEhlbHBlcnMmIGppdCwgTG9hZE9w
VHlwZSBvcCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCBhZGRyZXNzLCBHUFJSZWcgZGVzdCkK
K3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6Cisg
ICAgICAgIGppdC5sb2FkOFNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4UzoKKyAgICAgICAgaml0Lmxv
YWQ4U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsKKyAgICAgICAgaml0LnNpZ25FeHRl
bmQzMlRvUHRyKGRlc3QsIGRlc3QpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMb2FkT3BU
eXBlOjpJMzJMb2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6CisgICAgICAg
IGppdC5sb2FkOChhZGRyZXNzLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9h
ZE9wVHlwZTo6STMyTG9hZDE2UzoKKyAgICAgICAgaml0LmxvYWQxNlNpZ25lZEV4dGVuZFRvMzIo
YWRkcmVzcywgZGVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQxNlM6CisgICAgICAgIGppdC5sb2FkMTZTaWduZWRFeHRlbmRUbzMyKGFkZHJlc3MsIGRl
c3QpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIoZGVzdCwgZGVzdCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlU6CisgICAgY2FzZSBMb2Fk
T3BUeXBlOjpJNjRMb2FkMTZVOgorICAgICAgICBqaXQubG9hZDE2KGFkZHJlc3MsIGRlc3QpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOgorICAgIGNhc2Ug
TG9hZE9wVHlwZTo6STY0TG9hZDMyVToKKyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNzLCBkZXN0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyUzoKKyAg
ICAgICAgaml0LmxvYWQzMihhZGRyZXNzLCBkZXN0KTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQz
MlRvUHRyKGRlc3QsIGRlc3QpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJNjRMb2FkOgorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3MsIGRlc3QpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jv
b2wgQjNJUkdlbmVyYXRvcjo6bG9hZChMb2FkT3BUeXBlIG9wLCB1aW50MzJfdCBvZmZzZXQsIEV4
cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCit7CisgICAgQVNT
RVJUKHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisKKyAgICBWYWx1ZSogbWVtb3J5T2Zmc2V0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIElu
dDMyLCBvZmZzZXQpOworCisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBhZGQg
dGhlIG1lbW9yeU9mZnNldCB0byB0aGUgcG9pbnRlciB3aXRoIGEgMzJiaXQgYWRkCisgICAgLy8g
c28gaWYgaXQgb3ZlcmZsb3dzIHdlIHN0YXkgd2l0aGluIG91ciBtYXBwZWQgbWVtb3J5LgorICAg
IHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwg
T3JpZ2luKCksIHBvaW50ZXIsIG1lbW9yeU9mZnNldCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
bV9wcm9jLCB0eXBlRm9yTG9hZChvcCksIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIocG9pbnRlcik7CisgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzKys7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdCA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHB0ciA9IHBhcmFtc1sxXS5n
cHIoKTsKKworICAgICAgICBqaXQubG9hZDMyKGJpdHdpc2VfY2FzdDxjaGFyKj4oJm1fbWVtb3J5
KSArIE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uOjpvZmZzZXRPZlNpemUoKSwgc2NyYXRjaCk7Cisg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBpbnZhbGlkID0gaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwdHIsIHNjcmF0Y2gpOworCisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6SW1tUHRyKG1fbWVtb3J5Lm1lbW9yeSgpKSwgc2NyYXRjaCk7CisgICAgICAg
IGxvYWRGb3JPcChqaXQsIG9wLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHB0
ciwgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlOjpUaW1lc09uZSksIHJlc3VsdCk7CisgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKKworICAgICAgICBpbnZhbGlkLmxp
bmsoJmppdCk7CisgICAgICAgIC8vIFJpZ2h0IG5vdyB3ZSBjcmFzaDsgSW4gdGhlIGZ1dHVyZSB3
ZSBzaG91bGQgZG8gdGhlIHRyYXBwaW5nIHRoaW5nLgorICAgICAgICBqaXQuYnJlYWtwb2ludCgp
OworICAgICAgICBkb25lLmxpbmsoJmppdCk7CisgICAgfSk7CisKKyAgICByZXN1bHQgPSBwYXRj
aHBvaW50OworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCBzdG9yZUZvck9wKEND
YWxsSGVscGVycyYgaml0LCBTdG9yZU9wVHlwZSBvcCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eCBhZGRyZXNzLCBHUFJSZWcgdmFsdWUpCit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2Ug
U3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTg6
CisgICAgICAgIGppdC5zdG9yZTgodmFsdWUsIGFkZHJlc3MpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJ
NjRTdG9yZTE2OgorICAgICAgICBqaXQuc3RvcmUxNih2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZToKKyAgICBjYXNlIFN0b3Jl
T3BUeXBlOjpJNjRTdG9yZTMyOgorICAgICAgICBqaXQuc3RvcmUzMih2YWx1ZSwgYWRkcmVzcyk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZToKKyAgICAg
ICAgaml0LnN0b3JlNjQodmFsdWUsIGFkZHJlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRv
cjo6c3RvcmUoU3RvcmVPcFR5cGUgb3AsIHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUg
cG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUpCit7CisgICAgQVNTRVJUKHBvaW50ZXItPnR5
cGUoKSA9PSBJbnQzMik7CisKKyAgICBWYWx1ZSogbWVtb3J5T2Zmc2V0ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIEludDMyLCBvZmZzZXQpOwor
CisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBhZGQgdGhlIG1lbW9yeU9mZnNl
dCB0byB0aGUgcG9pbnRlciB3aXRoIGEgMzJiaXQgYWRkCisgICAgLy8gc28gaWYgaXQgb3ZlcmZs
b3dzIHdlIHN0YXkgd2l0aGluIG91ciBtYXBwZWQgbWVtb3J5LgorICAgIHBvaW50ZXIgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgT3JpZ2luKCksIHBvaW50
ZXIsIG1lbW9yeU9mZnNldCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCBCMzo6Vm9p
ZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwb2ludGVy
KTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWUpOworICAgIHBhdGNo
cG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycysrOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2go
MCk7CisgICAgICAgIEdQUlJlZyBwdHIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyB2YWwgPSBwYXJhbXNbMV0uZ3ByKCk7CisKKyAgICAgICAgaml0LmxvYWQzMihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KCZtX21lbW9yeSkgKyBNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbjo6b2Zmc2V0T2ZT
aXplKCksIHNjcmF0Y2gpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaW52YWxpZCA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHRyLCBzY3JhdGNoKTsKKwor
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OkltbVB0cihtX21lbW9yeS5tZW1vcnkoKSks
IHNjcmF0Y2gpOworICAgICAgICBzdG9yZUZvck9wKGppdCwgb3AsIE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc2NyYXRjaCwgcHRyLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGU6OlRpbWVzT25lKSwg
dmFsKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOworCisg
ICAgICAgIGludmFsaWQubGluaygmaml0KTsKKyAgICAgICAgLy8gUmlnaHQgbm93IHdlIGNyYXNo
OyBpbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBkbyB0aGUgdHJhcHBpbmcgdGhpbmcuCisgICAgICAg
IGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGRvbmUubGluaygmaml0KTsKKyAgICB9KTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEIzSVJHZW5lcmF0b3I6OnVuYXJ5T3AoVW5hcnlP
cFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsK
ICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRv
QjNPcChvcCksIE9yaWdpbigpLCBhcmcpOwpAQCAtNDAzLDEwICs1NjcsMTAgQEAgdm9pZCBCM0lS
R2VuZXJhdG9yOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sVHlwZT4mIGNvbnRyb2xTdGFjaywg
Y29uc3QgRXhwcmVzc2kKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0ZDo6dW5pcXVl
X3B0cjxDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+
JiBzb3VyY2UsIEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCitz
dGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rv
cjx1aW50OF90PiYgc291cmNlLCBjb25zdCBNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5
LCBGdW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQogewogICAgIFBy
b2NlZHVyZSBwcm9jZWR1cmU7Ci0gICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KHByb2NlZHVyZSk7
CisgICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KG1lbW9yeSwgcHJvY2VkdXJlKTsKICAgICBGdW5j
dGlvblBhcnNlcjxCM0lSR2VuZXJhdG9yPiBwYXJzZXIoY29udGV4dCwgc291cmNlLCBpbmZvKTsK
ICAgICBpZiAoIXBhcnNlci5wYXJzZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9y
LmgKaW5kZXggOTUxOTZkYmU1NzdkYWFmYWJhOTc4YTU2MDRjOTA2Y2Q2NTViZmM4My4uYjg0Y2Uw
NDUwY2UxODVkZmVmYzBmY2YwMzliNGZhZTljNmI0ODI3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCkBAIC0zNSw3ICszNSw3IEBAIGV4dGVy
biAiQyIgdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqKTsKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBXQVNNIHsKIAotc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gcGFyc2VBbmRD
b21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+JiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWdu
ZWQgb3B0TGV2ZWwgPSAxKTsKK3N0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IHBhcnNl
QW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IE1vZHVsZU1lbW9yeUluZm9y
bWF0aW9uJiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZvcm1hdC5oCmluZGV4IDdhMDQxMzdlM2M3MGYxODI0NzEwYWNkOTg4NDdmNzIxNTYyNGQwMWQu
LjAwYzViOWE3NGVjNDg4Mzk0NzQ5NWJiNTljOGFlODMyYzNmNDIzNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTEyMCw2ICsxMjAsNTQgQEAgc3RydWN0IEZ1
bmN0aW9uUG9pbnRlclRhYmxlIHsKICAgICBWZWN0b3I8SlNGdW5jdGlvbio+IGZ1bmN0aW9uczsK
IH07CiAKK2NsYXNzIE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbik7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgCisgICAgTW9kdWxlTWVtb3J5SW5mb3JtYXRpb24oKSA9IGRl
ZmF1bHQ7CisgICAgTW9kdWxlTWVtb3J5SW5mb3JtYXRpb24odWludDMyX3Qgc3RhcnRpbmdTaXpl
LCB1aW50MzJfdCBtYXhTaXplKQorICAgICAgICA6IG1fc2l6ZShzdGFydGluZ1NpemUpCisgICAg
ICAgICwgbV9tYXhTaXplKG1heFNpemUpCisgICAgeworICAgICAgICAvLyBQZXJoYXBzIHdlIHNo
b3VsZCB0cnkgTUFQXzMyQklUIG9uIFg4Ni02NCBzaW5jZSB0aGF0IG1pZ2h0IGFsbG93IEIzIHRv
IGVtaXQgYmV0dGVyIExvYWRzL1N0b3Jlcy4KKyAgICAgICAgdm9pZCogcmVzdWx0ID0gbW1hcChu
dWxscHRyLCBtYXhTaXplLCBQUk9UX05PTkUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIDAsIDAp
OworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAobXByb3RlY3QocmVzdWx0LCBzdGFydGluZ1NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp
KSB7CisgICAgICAgICAgICBtdW5tYXAocmVzdWx0LCBtYXhTaXplKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBtX21lbW9yeSA9IHJlc3VsdDsKKyAgICB9CisKKyAg
ICB+TW9kdWxlTWVtb3J5SW5mb3JtYXRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKG1fbWVtb3J5
KQorICAgICAgICAgICAgbXVubWFwKG1fbWVtb3J5LCBtX21heFNpemUpOworICAgIH0KKworICAg
IHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5OyB9CisgICAgdWludDMyX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgYm9vbCBncm93TWVtb3J5KHVp
bnQzMl90IG5ld1NpemUpCisgICAgeworICAgICAgICBBU1NFUlQobV9tZW1vcnkpOworICAgICAg
ICBpZiAobmV3U2l6ZSA+IG1fbWF4U2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICByZXR1cm4gIW1wcm90ZWN0KG1fbWVtb3J5LCBuZXdTaXplLCBQUk9UX1JFQUQgfCBQ
Uk9UX1dSSVRFKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbiwgbV9zaXpl
KTsgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fbWVtb3J5IHsgbnVsbHB0ciB9OworICAgIHVp
bnQzMl90IG1fc2l6ZSB7IDAgfTsKKyAgICB1aW50MzJfdCBtX21heFNpemUgeyAwIH07Cit9Owor
CiBzdHJ1Y3QgRnVuY3Rpb25JbmZvcm1hdGlvbiB7CiAgICAgU2lnbmF0dXJlKiBzaWduYXR1cmU7
CiAgICAgc2l6ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25QYXJzZXIuaAppbmRleCBhYjgyYmU5ODAyNWFkMmY1NWJlMjBmMmUwMzNhNjFmYWU0
YWNkOGU1Li44MzI2YmIyM2UxM2U0YWEzNWIzNmJkZTAzNjY4M2U4OTY0ZGJlMmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsK
IAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IHRydWU7CiAKICAgICBib29sIFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZUJsb2NrKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VF
eHByZXNzaW9uKE9wVHlwZSk7CkBAIC0xNTQsNiArMTU0LDM5IEBAIGJvb2wgRnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AoQ1JFQVRFX0NB
U0UpIHsKKyAgICAgICAgLy8gVE9ETzogV2hhdCBkbyBJIGRvIHdpdGggdGhpcz8KKyAgICAgICAg
dWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFsaWdubWVu
dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0
OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9IG1fZXhwcmVzc2lv
blN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKKyAgICAg
ICAgaWYgKCFtX2NvbnRleHQubG9hZChzdGF0aWNfY2FzdDxMb2FkT3BUeXBlPihvcCksIG9mZnNl
dCwgcG9pbnRlciwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
bV9leHByZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKSB7
CisgICAgICAgIC8vIFRPRE86IFdoYXQgZG8gSSBkbyB3aXRoIHRoaXM/CisgICAgICAgIHVpbnQz
Ml90IGFsaWdubWVudDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihhbGlnbm1lbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQzMl90IG9mZnNldDsKKyAg
ICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIHZhbHVlID0gbV9leHByZXNzaW9uU3RhY2su
dGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9IG1fZXhwcmVzc2lv
blN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuc3RvcmUoc3RhdGlj
X2Nhc3Q8U3RvcmVPcFR5cGU+KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCB2YWx1ZSk7CisgICAgfQor
CiAgICAgY2FzZSBPcFR5cGU6OkkzMkNvbnN0OiB7CiAgICAgICAgIHVpbnQzMl90IGNvbnN0YW50
OwogICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvbnN0YW50KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKaW5kZXggNWUwNTNhNWE3OTAz
YTU0ZWI4NjQ1NjQ2ODJlM2U5ZDE3MTBiMjE2NC4uYzRlZGUyYTdkN2MxMjM4NGU2MjQ0MTkyZjQw
OTQ3YTY1N2ViZTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1v
ZHVsZVBhcnNlci5jcHAKQEAgLTI4LDEwICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCisjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiV0FTTUZvcm1hdC5o
IgogI2luY2x1ZGUgIldBU01PcHMuaCIKICNpbmNsdWRlICJXQVNNU2VjdGlvbnMuaCIKIAorI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+CisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAK
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTYyLDE1ICs2NSwxNSBAQCBi
b29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgdG8gcGFyc2UgbmV4dCBzZWN0aW9uIGF0IG9mZnNldDog
IiwgbV9vZmZzZXQpOwogCi0gICAgICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rpb24gPSBTZWN0
aW9uczo6VW5rbm93bjsKICAgICAgICAgdWludDhfdCBzZWN0aW9uQnl0ZTsKICAgICAgICAgaWYg
KCFwYXJzZVVJbnQ3KHNlY3Rpb25CeXRlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgICAgICBkYXRhTG9nTG4oIlNlY3Rpb24gYnl0ZTogIiwgc2VjdGlvbkJ5dGUpOworCisgICAg
ICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93bjsKICAgICAg
ICAgaWYgKHNlY3Rpb25CeXRlKSB7Ci0gICAgICAgICAgICBpZiAoc2VjdGlvbkJ5dGUgPj0gU2Vj
dGlvbnM6OlVua25vd24pCi0gICAgICAgICAgICAgICAgc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtu
b3duOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHNlY3Rpb25CeXRlIDwgU2Vj
dGlvbnM6OlVua25vd24pCiAgICAgICAgICAgICAgICAgc2VjdGlvbiA9IHN0YXRpY19jYXN0PFNl
Y3Rpb25zOjpTZWN0aW9uPihzZWN0aW9uQnl0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICB1aW50MzJfdCBzZWN0aW9uTmFtZUxlbmd0aDsKQEAgLTk2LDYgKzk5LDE1IEBAIGJvb2wg
TW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fb2Zmc2V0ICsg
c2VjdGlvbkxlbmd0aDsKIAogICAgICAgICBzd2l0Y2ggKHNlY3Rpb24pIHsKKworICAgICAgICBj
YXNlIFNlY3Rpb25zOjpNZW1vcnk6IHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyBNZW1vcnkuIik7CisgICAgICAgICAgICBpZiAo
IXBhcnNlTWVtb3J5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFNlY3Rpb25zOjpGdW5jdGlvblR5
cGVzOiB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
TG4oIlBhcnNpbmcgdHlwZXMuIik7CkBAIC0xNDMsNiArMTU1LDM0IEBAIGJvb2wgTW9kdWxlUGFy
c2VyOjpwYXJzZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTW9kdWxlUGFyc2VyOjpw
YXJzZU1lbW9yeSgpCit7CisgICAgdWludDMyX3QgbWF4UGFnZU51bSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDMyX3Q+OjptYXgoKSAvIDY0IC8gS0I7CisgICAgdWludDhfdCBmbGFnczsKKyAg
ICBpZiAoIXBhcnNlVmFyVUludDEoZmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICB1aW50MzJfdCBzaXplOworICAgIGlmICghcGFyc2VWYXJVSW50MzIoc2l6ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2l6ZSA+IG1heFBhZ2VOdW0pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHVpbnQzMl90IG1heCA9IG1heFBhZ2VOdW07CisgICAgaWYgKGZsYWdz
KSB7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIobWF4KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKHNpemUgPiBtYXggfHwgbWF4ID4gbWF4UGFnZU51bSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtYXggKj0gNjQgKiBLQjsKKyAg
ICBzaXplICo9IDY0ICogS0I7CisKKyAgICBtX21lbW9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9k
dWxlTWVtb3J5SW5mb3JtYXRpb24+KHNpemUsIG1heCk7CisgICAgcmV0dXJuIG1fbWVtb3J5LT5t
ZW1vcnkoKTsKK30KKwogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlcygpCiB7
CiAgICAgdWludDMyX3QgY291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNTW9kdWxlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
TW9kdWxlUGFyc2VyLmgKaW5kZXggNDYwYmU4ZmJiMzZmMDJmYWY0YWQ1MzhiMWNlNTJiMmVkNTEy
NTRmZC4uZmZmOTQ1Mjc0MjNmZDgwNjk0MDBlZDMzZGY4Njc5OGYzYTIyOGQ4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApAQCAtNDUsMTggKzQ1
LDE5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAK
LSAgICBjb25zdCBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9uSW5mb3JtYXRp
b24oKSB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxGdW5jdGlvbklu
Zm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rp
b25zOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uPiYgbWVt
b3J5KCkgeyByZXR1cm4gbV9tZW1vcnk7IH0KIAogcHJpdmF0ZToKKyAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZU1lbW9yeSgpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRnVuY3Rpb25UeXBlcygpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVu
Y3Rpb25TaWduYXR1cmVzKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5j
dGlvbkRlZmluaXRpb25zKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5j
dGlvbkRlZmluaXRpb24odWludDMyX3QgbnVtYmVyKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFeHBy
ZXNzaW9uKE9wVHlwZSk7CiAKICAgICBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4gbV9mdW5j
dGlvbnM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9zaWduYXR1cmVzOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbj4gbV9tZW1vcnk7CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU9wcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCmluZGV4
IDMwYWVjZTU5OTg0NmJhYzg5YmY5M2ZlZmQ0OWZkMjU3OWMxYjZmYzMuLjNiN2I3N2MxMTMzYzEy
NzRjODAyYjI3YTZmMWYyNWVjZmUyYmJmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01PcHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
T3BzLmgKQEAgLTEwMywxMSArMTAzLDM4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FT
TSB7CiAgICAgbWFjcm8oSTY0TGVVLCAweDZkLCBCZWxvd0VxdWFsKSBcCiAKIAorI2RlZmluZSBG
T1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1hY3JvKSBcCisgICAgbWFjcm8oSTMyTG9hZDhT
LCAweDIwLCBOQSkgXAorICAgIG1hY3JvKEkzMkxvYWQ4VSwgMHgyMSwgTkEpIFwKKyAgICBtYWNy
byhJMzJMb2FkMTZTLCAweDIyLCBOQSkgXAorICAgIG1hY3JvKEkzMkxvYWQxNlUsIDB4MjMsIE5B
KSBcCisgICAgbWFjcm8oSTY0TG9hZDhTLCAweDI0LCBOQSkgXAorICAgIG1hY3JvKEk2NExvYWQ4
VSwgMHgyNSwgTkEpIFwKKyAgICBtYWNybyhJNjRMb2FkMTZTLCAweDI2LCBOQSkgXAorICAgIG1h
Y3JvKEk2NExvYWQxNlUsIDB4MjcsIE5BKSBcCisgICAgbWFjcm8oSTY0TG9hZDMyUywgMHgyOCwg
TkEpIFwKKyAgICBtYWNybyhJNjRMb2FkMzJVLCAweDI5LCBOQSkgXAorICAgIG1hY3JvKEkzMkxv
YWQsIDB4MmEsIE5BKSBcCisgICAgbWFjcm8oSTY0TG9hZCwgMHgyYiwgTkEpIFwKKworCisjZGVm
aW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKSBcCisgICAgbWFjcm8oSTMy
U3RvcmU4LCAweDJlLCBOQSkgXAorICAgIG1hY3JvKEkzMlN0b3JlMTYsIDB4MmYsIE5BKSBcCisg
ICAgbWFjcm8oSTY0U3RvcmU4LCAweDMwLCBOQSkgXAorICAgIG1hY3JvKEk2NFN0b3JlMTYsIDB4
MzEsIE5BKSBcCisgICAgbWFjcm8oSTY0U3RvcmUzMiwgMHgzMiwgTkEpIFwKKyAgICBtYWNybyhJ
MzJTdG9yZSwgMHgzMywgTkEpIFwKKyAgICBtYWNybyhJNjRTdG9yZSwgMHgzNCwgTkEpIFwKKwor
CiAjZGVmaW5lIEZPUl9FQUNIX1dBU01fT1AobWFjcm8pIFwKICAgICBGT1JfRUFDSF9XQVNNX1NQ
RUNJQUxfT1AobWFjcm8pIFwKICAgICBGT1JfRUFDSF9XQVNNX0NPTlRST0xfRkxPV19PUChtYWNy
bykgXAogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AobWFjcm8pIFwKLSAgICBGT1JfRUFDSF9X
QVNNX0JJTkFSWV9PUChtYWNybykKKyAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykg
XAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AobWFjcm8pIFwKKyAgICBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxV
RShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCkBAIC0xMjMsNiArMTUwLDE0IEBAIGVudW0g
Y2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09Q
KENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBjbGFzcyBMb2FkT3BUeXBlIDogdWludDhf
dCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkK
K307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9X
QVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKICN1bmRlZiBDUkVB
VEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9vbCBpc0NvbnRyb2xPcChPcFR5cGUgb3ApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKaW5kZXggN2JkNjBkMjNmMTFhMjlhY2Ux
ZTM3YTYxODc1ZmU0YjVjZjBkYmNiOS4uNGIzNTg1OTI5M2QyODQwMDdjNjFhYTIwMTNjN2IyYTRk
NTVjNWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcApAQCAtNTMs
OCArNTMsOSBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAg
ICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVu
Y3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQs
ICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBh
cnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBpbmZvKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
cGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2UsICptb2R1bGVQYXJzZXIubWVtb3J5KCksIGluZm8p
KTsKICAgICB9CisgICAgbWVtb3J5ID0gV1RGTW92ZShtb2R1bGVQYXJzZXIubWVtb3J5KCkpOwog
fQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01QbGFuLmgKaW5kZXggZDNjOWUyMmE1YWJhMTcyNjQzZjM3OTE2MGMzOGI4ZTRiNDkyYjE4Yy4u
ZTA3YjVhZjZjZjIyNzMyMzY1YWMwMWU0ZTYyMjEzMmY5NzNiODA1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNUGxhbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb21w
aWxhdGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV0FTTUZvcm1hdC5o
IgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNDYsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgUGxhbihWTSYsIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpOwogCiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+PiByZXN1bHQ7CisgICAgc3RkOjp1bmlxdWVfcHRy
PE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uPiBtZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNl
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAppbmRl
eCA1M2U5MzU2ZTIzOGZhNDJjNWI1ODcxMDk5MzZiNTcwMDhlN2M2Nzk5Li4wN2M3MmQ0MWQzYmVl
ZGNkMTcyMzhhOGMyMDA0MjMyNzUxM2I0NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNU2VjdGlvbnMuaApAQCAtMzMsNiArMzMsNyBAQCBzdHJ1Y3QgU2VjdGlvbnMgewogICAg
IGVudW0gU2VjdGlvbiA6IHVpbnQ4X3QgewogICAgICAgICBGdW5jdGlvblR5cGVzID0gMSwKICAg
ICAgICAgU2lnbmF0dXJlcyA9IDMsCisgICAgICAgIE1lbW9yeSA9IDUsCiAgICAgICAgIERlZmlu
aXRpb25zID0gMTAsCiAgICAgICAgIFVua25vd24KICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289954</attachid>
            <date>2016-09-27 09:25:37 -0700</date>
            <delta_ts>2016-10-04 13:07:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20160927092238.patch</filename>
            <type>text/plain</type>
            <size>36001</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MWVmNjdmODVmMWJmNzE0YjJkMDM3OWU5ZjEzZTkyMzA2ZDY1YTE3Li5jMzg4YzdmM2NkZTdhMjli
MWIxNDM5Y2ZjYTliYzlmMDJkNzAwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNi0wOS0yNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgKiB0ZXN0V0FTTS5jcHA6CisgICAgICAgIChydW5XQVNN
VGVzdHMpOgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpXQVNNOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlTWVtb3J5SW5mb3JtYXRpb246Ok1vZHVsZU1lbW9yeUluZm9ybWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlTWVtb3J5SW5mb3JtYXRpb246On5Nb2R1bGVNZW1vcnlJ
bmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZU1lbW9yeUluZm9ybWF0aW9u
OjptZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbjo6
c2l6ZSk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZU1lbW9yeUluZm9ybWF0aW9uOjpncm93
TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlTWVtb3J5SW5mb3JtYXRpb246Om9m
ZnNldE9mU2l6ZSk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBhcnNl
cjo6cGFyc2VNZW1vcnkpOgorICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAg
ICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OmZ1bmN0aW9uSW5mb3JtYXRpb24pOgorICAg
ICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6Om1lbW9yeSk6CisgICAgICAgICogd2FzbS9X
QVNNT3BzLmg6CisgICAgICAgICogd2FzbS9XQVNNUGxhbi5jcHA6CisgICAgICAgIChKU0M6OldB
U006OlBsYW46OlBsYW4pOgorICAgICAgICAqIHdhc20vV0FTTVBsYW4uaDoKKyAgICAgICAgKiB3
YXNtL1dBU01TZWN0aW9ucy5oOgorCiAyMDE2LTA5LTI2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAYW0uc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gQWxsb3cgZml4ZWRFeGVjdXRhYmxl
TWVtb3J5UG9vbFNpemUgdG8gYmUgc2V0IGR1cmluZyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
V0FTTS5jcHAKaW5kZXggZDllZDkxZmUxODRkZWFiMTE3Njk5NWM4YmQ2NjljZmM5ZDhlNGM2ZC4u
Y2RhYjE1NTNlYzczNmMyM2Y1ZWM5ZjViOWFiMzI2NmU1MTI4MTM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdFdBU00uY3BwCkBAIC0yNDIsOCArMjQyLDIzOSBAQCBzdGF0aWMgdm9pZCBydW5XQVNN
VGVzdHMoKQogewogICAgIHsKICAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8v
IChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBv
cnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0
IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2Nh
bCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkp
CisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwg
MHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsIDB4
ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAs
CisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAw
eDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAg
ICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1Ziwg
MHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAg
ICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQs
IDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAw
eDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAg
UGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAh
PSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUg
ZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMTApIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgtMTIpLCBib3gocGxhbi5tZW1v
cnktPnNpemUoKSAtIHNpemVvZih1aW50NjRfdCkpIH0pLCAtMTIpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAg
Ly8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikg
KHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8g
ICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8v
ICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQor
ICAgICAgICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAg
ICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAg
IDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1
ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwg
MHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4
OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAs
IDB4MzMsIDB4MDIsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAyLCAw
eDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVj
dG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3Vs
dFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUg
Y29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMikgfSks
IDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVy
YXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5
IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAk
eCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2FsICRpIGkzMikK
KyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisgICAgICAgIC8v
ICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8vICAgICAgICAo
YnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVuZ3RoKSkpCisg
ICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChpMzIu
bXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkpKSAoZ2V0X2xvY2FsICR4KSkKKyAgICAg
ICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5jb25zdCAxKSAoZ2V0X2xv
Y2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAgICAgLy8gICAgICAgICkK
KyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1cm4pCisgICAgICAgIC8v
ICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
ID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwK
KyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MDMsIDB4ODIsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAg
ICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAweDcyLAorICAgICAgICAg
ICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwg
MHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4
MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEs
IDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAgICAgICAgICAweDAyLCAw
eDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAweDAxLCAweDE0LCAweDAx
LCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAorICAgICAgICAgICAgMHg0MCwgMHgxNCwg
MHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgx
NSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAgICAgICAgIDB4MGYsIDB4MDksIDB4MGYK
KyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBp
ZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAg
ICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7Cisg
ICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1lbW9y
eS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc2l6ZW9m
KHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFu
LnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAg
ICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5n
dGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAg
ICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3QpOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCg1KSwgYm94KG9mZnNl
dCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsK
KyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hF
Q0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kg
KyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJv
bToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAg
ICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAo
cGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAg
IC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChi
bG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEg
KGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAv
LyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGdldF9sb2NhbCAk
aSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAkaSAoaTMy
LmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8gICAgICAgIChi
ciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAgICAgIC8v
ICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAw
eDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgwMSwgMHgwMSwg
MHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
MCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAweDVmLCAweDYx
LCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGFmLCAweDgwLCAw
eDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwMywgMHgwMSwg
MHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQsIDB4MDIsIDB4
NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTQsIDB4MDAs
CisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAw
eDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAweDA5LCAweDBmCisgICAg
ICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBs
YW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNp
emUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDE7CisgICAgICAg
IHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwbGFuLm1lbW9yeS0+bWVt
b3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDAp
LCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3Ro
XSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAg
IGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZva2U8dm9pZD4o
KnBsYW4ucmVzdWx0WzBdLCB7IGJveCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOwor
ICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVD
S19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSAr
IG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9t
OgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAg
ICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChw
YXJhbSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTgg
KGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJu
IChpMzIubG9hZDhfcyAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAg
ICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAg
ICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAg
MHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVm
LCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAw
eDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4
ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwg
MHgyZSwgMHgwMCwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4
MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0
b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0
WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBj
b3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMTAwKSB9KSwg
MSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAg
Ly8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAg
KGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikK
KyAgICAgICAgLy8gICAgICAoaTMyLnN0b3JlOCAoaTMyLmNvbnN0IDgpIChnZXRfbG9jYWwgJGkp
KQorICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChpMzIuY29uc3QgOCkpKQor
ICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgy
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4
ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywgMHgzMiwK
KyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4
NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsCisgICAg
ICAgICAgICAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDEwLCAw
eDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDA4LAorICAgICAgICAg
ICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0g
MSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZh
aWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSB9KSwg
MTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToK
ICAgICAgICAgLy8gICAgKG1vZHVsZQotICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiZHVt
Yi1lcSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKQorICAgICAg
ICAvLyAgICAgKGZ1bmMgImR1bWItZXEiIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChy
ZXN1bHQgaTMyKQogICAgICAgICAvLyAgICAgIChpZiAoaTMyLmVxIChnZXRfbG9jYWwgJHgpIChn
ZXRfbG9jYWwgJHkpKQogICAgICAgICAvLyAgICAgICAodGhlbiAoYnIgMCkpCiAgICAgICAgIC8v
ICAgICAgIChlbHNlIChyZXR1cm4gKGkzMi5jb25zdCAxKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBiNzFjMWFmYWE5NDQ2
MTZiYTE3ZmViZmM5NWVkYmNhYzYwZDNjYjQuLjViZDIzOTU4NDAyNjNhYzM2NDk1MGE5OGJkYTE1
YjU4NmU5NDk2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01C
M0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJ
UkdlbmVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDb25zdFB0
clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNpbmNsdWRlICJCM1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKQEAgLTE2NSwxOCArMTY3LDI1
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxWYXJpYWJsZSosIDE+IFJlc3VsdExpc3Q7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJlc3Npb24gPSBu
dWxscHRyOwogCi0gICAgQjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKKyAgICBCM0lSR2VuZXJh
dG9yKGNvbnN0IE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uJiwgUHJvY2VkdXJlJik7CiAKICAgICB2
b2lkIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mKTsKICAgICB2b2lkIGFkZExvY2Fs
KFR5cGUsIHVpbnQzMl90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBlLCB1
aW50NjRfdCk7CiAKKyAgICAvLyBMb2NhbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBn
ZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgYm9v
bCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25U
eXBlIHZhbHVlKTsKIAorICAgIC8vIE1lbW9yeQorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IGxvYWQoTG9hZE9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVy
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBz
dG9yZShTdG9yZU9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVy
LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisKKyAgICAvLyBCYXNpYyBvcGVyYXRvcnMKICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJlc3Npb25U
eXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
ICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBFeHByZXNz
aW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCisgICAgLy8gQ29udHJvbCBm
bG93CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEJsb2NrKFR5cGUgc2ln
bmF0dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9vcChUeXBl
IHNpZ25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZElmKEV4
cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgVHlwZSBzaWduYXR1cmUpOwpAQCAtMTkxLDE2ICsyMDAs
MjIgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBj
b250cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9uU3RhY2spOwogCiBw
cml2YXRlOgorICAgIEV4cHJlc3Npb25UeXBlIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHVp
bnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgc2l6ZU9mT3Ap
OworICAgIEV4cHJlc3Npb25UeXBlIGVtaXRMb2FkT3AoTG9hZE9wVHlwZSwgT3JpZ2luLCBFeHBy
ZXNzaW9uVHlwZSBwb2ludGVyKTsKKyAgICB2b2lkIGVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlLCBP
cmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKwog
ICAgIHZvaWQgdW5pZnkoVmFyaWFibGUqIHRhcmdldCwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291
cmNlKTsKICAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0IEV4cHJlc3Npb25MaXN0
JiByZXN1bHRTdGFjaywgUmVzdWx0TGlzdCYgc3RhY2spOwogCisgICAgY29uc3QgTW9kdWxlTWVt
b3J5SW5mb3JtYXRpb24mIG1fbWVtb3J5OwogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJh
c2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxz
OwogfTsKIAotQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmIHByb2NlZHVy
ZSkKLSAgICA6IG1fcHJvYyhwcm9jZWR1cmUpCitCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KGNvbnN0IE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2Vk
dXJlKQorICAgIDogbV9tZW1vcnkobWVtb3J5KQorICAgICwgbV9wcm9jKHByb2NlZHVyZSkKIHsK
ICAgICBtX2N1cnJlbnRCbG9jayA9IG1fcHJvYy5hZGRCbG9jaygpOwogfQpAQCAtMjI0LDIwICsy
MzksMTgzIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxU
eXBlPiYgdHlwZXMpCiAgICAgICAgIH0pOwogfQogCi1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBC
M0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAg
cmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2Ms
IEIzOjpHZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tpbmRleF0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpCitib29sIEIzSVJHZW5lcmF0b3I6OnNl
dExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkKIHsKICAgICBBU1NF
UlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlh
YmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgT3JpZ2luKCksIG1fbG9jYWxzW2luZGV4XSwgdmFs
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6
OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5
cGUgcG9pbnRlciwgdWludDMyX3Qgc2l6ZU9mT3BlcmF0aW9uKQoreworICAgIC8vIFdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRoYXQgd2UgYWRkIHRoZSBtZW1vcnlPZmZzZXQgdG8gdGhlIHBvaW50ZXIg
d2l0aCBhIDMyYml0IGFkZAorICAgIC8vIHNvIGlmIGl0IG92ZXJmbG93cyB3ZSBzdGF5IHdpdGhp
biBvdXIgbWFwcGVkIG1lbW9yeS4KKyAgICBWYWx1ZSogbWVtb3J5T2Zmc2V0ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIEludDMyLCBvZmZzZXQp
OworICAgIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEFkZCwgT3JpZ2luKCksIHBvaW50ZXIsIG1lbW9yeU9mZnNldCk7CisKKworICAgIFZhbHVlKiBz
aXplT2ZWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9y
aWdpbigpLCBJbnQzMiwgc2l6ZU9mT3BlcmF0aW9uKTsKKyAgICBWYWx1ZSogbGFzdEJ5dGUgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgT3JpZ2luKCksIHBv
aW50ZXIsIHNpemVPZlZhbHVlKTsKKyAgICBWYWx1ZSogbW9kdWxlTWVtb3J5U2l6ZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0
d2lzZV9jYXN0PGNoYXIqPigmbV9tZW1vcnkpICsgTW9kdWxlTWVtb3J5SW5mb3JtYXRpb246Om9m
ZnNldE9mU2l6ZSgpKTsKKyAgICBWYWx1ZSogbWVtb3J5U2l6ZSA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBtb2R1
bGVNZW1vcnlTaXplKTsKKyAgICBWYWx1ZSogb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFib3ZlLCBPcmlnaW4oKSwgbGFzdEJ5dGUsIG1lbW9y
eVNpemUpOworICAgIENoZWNrVmFsdWUqIGJvdW5kc0NoZWNrID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZCb3VuZHMp
OworICAgIGJvdW5kc0NoZWNrLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5icmVha3BvaW50
KCk7CisgICAgfSk7CisKKyAgICBWYWx1ZSogbWVtb3J5U3RhcnQgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIG1fbWVtb3J5Lm1lbW9y
eSgpKTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIE9yaWdpbigpLCBtZW1vcnlTdGFy
dCwgcG9pbnRlcik7CisgICAgcmV0dXJuIHBvaW50ZXI7Cit9CisKK2lubGluZSB1aW50MzJfdCBz
aXplT2ZMb2FkT3AoTG9hZE9wVHlwZSBvcCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFU6
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJ
NjRMb2FkOFU6CisgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9h
ZDE2UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlM6CisgICAgICAgIHJldHVybiAy
OworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQzMlM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJVOgorICAgICAgICByZXR1
cm4gNDsKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ6CisgICAgICAgIHJldHVybiA4Owor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCisvLyBGSVhNRTog
QjMgc2hvdWxkIHN1cHBvcnQgSW50NjQgc21hbGwgbG9hZHMgYW5kIDE2LWJpdCB1bnNpZ25lZCBs
b2Fkcy4KK2lubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdExvYWRPcChMb2FkT3BUeXBl
IG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyKQoreworICAgIHN3aXRj
aCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogeworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMs
IG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRM
b2FkOFM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMsIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAg
ICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQz
Miwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2Fk
OFU6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4sIHBvaW50ZXIsIDApOworICAgIH0KKworICAgIGNh
c2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4s
IHBvaW50ZXIsIDApOworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBaRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2Ug
TG9hZE9wVHlwZTo6STMyTG9hZDE2UzogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkMTZTLCBvcmlnaW4sIHBvaW50ZXIs
IDApOworICAgIH0KKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlM6IHsKKyAgICAgICAg
VmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkMTZTLCBvcmlnaW4sIHBvaW50ZXIsIDApOworICAgICAgICByZXR1cm4gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUp
OworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDogeworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJ
bnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQzMlU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsK
KyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
WkV4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQzMlM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsK
KyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
U0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQ6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgfQorICAg
IH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEIzSVJHZW5l
cmF0b3I6OmxvYWQoTG9hZE9wVHlwZSBvcCwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQoreworICAgIEFTU0VSVChwb2ludGVy
LT50eXBlKCkgPT0gSW50MzIpOworCisgICAgcmVzdWx0ID0gZW1pdExvYWRPcChvcCwgT3JpZ2lu
KCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKG9mZnNldCwgcG9pbnRlciwgc2l6ZU9mTG9h
ZE9wKG9wKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdWludDMyX3Qgc2l6ZU9m
U3RvcmVPcChTdG9yZU9wVHlwZSBvcCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBT
dG9yZU9wVHlwZTo6STMyU3RvcmU4OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlODoK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmUxNjoKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTE2OgorICAgICAgICByZXR1cm4gMjsKKyAgICBj
YXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9y
ZTMyOgorICAgICAgICByZXR1cm4gNDsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZToK
KyAgICAgICAgcmV0dXJuIDg7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKKworLy8gRklYTUU6IFdlIHNob3VsZCBqdXN0IHN1cHBvcnQgYW4gSW50NjQgc3Rv
cmU4LgoraW5saW5lIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5cGUg
b3AsIE9yaWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBl
IHZhbHVlKQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRT
dG9yZTg6CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU4OgorICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlOCwgb3JpZ2luLCB2YWx1ZSwgcG9p
bnRlcik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3Jl
MTY6CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisgICAg
Y2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmUxNjoKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTE2LCBvcmlnaW4sIHZhbHVlLCBwb2lu
dGVyKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUz
MjoKKyAgICAgICAgdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIFRydW5jLCBvcmlnaW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisKKyAgICBj
YXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9y
ZToKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9j
LCBTdG9yZSwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJh
dG9yOjpzdG9yZShTdG9yZU9wVHlwZSBvcCwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+
dHlwZSgpID09IEludDMyKTsKKworICAgIGVtaXRTdG9yZU9wKG9wLCBPcmlnaW4oKSwgZW1pdENo
ZWNrQW5kUHJlcGFyZVBvaW50ZXIob2Zmc2V0LCBwb2ludGVyLCBzaXplT2ZTdG9yZU9wKG9wKSks
IHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFy
eU9wKFVuYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCB0b0IzT3Aob3ApLCBPcmlnaW4oKSwgYXJnKTsKQEAgLTQwMywxMCArNTgxLDEwIEBA
IHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250
cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3NpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rv
cjx1aW50OF90PiYgc291cmNlLCBGdW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9w
dExldmVsKQorc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0m
IHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgY29uc3QgTW9kdWxlTWVtb3J5SW5mb3JtYXRp
b24mIG1lbW9yeSwgRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkK
IHsKICAgICBQcm9jZWR1cmUgcHJvY2VkdXJlOwotICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChw
cm9jZWR1cmUpOworICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChtZW1vcnksIHByb2NlZHVyZSk7
CiAgICAgRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGNvbnRleHQsIHNvdXJj
ZSwgaW5mbyk7CiAgICAgaWYgKCFwYXJzZXIucGFyc2UoKSkKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01CM0lSR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJ
UkdlbmVyYXRvci5oCmluZGV4IDk1MTk2ZGJlNTc3ZGFhZmFiYTk3OGE1NjA0YzkwNmNkNjU1YmZj
ODMuLmI4NGNlMDQ1MGNlMTg1ZGZlZmMwZmNmMDM5YjRmYWU5YzZiNDgyN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaApAQCAtMzUsNyArMzUs
NyBAQCBleHRlcm4gIkMiIHZvaWQgZHVtcFByb2NlZHVyZSh2b2lkKik7CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+
IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIEZ1bmN0aW9uSW5mb3JtYXRp
b24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CitzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0
aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBNb2R1bGVN
ZW1vcnlJbmZvcm1hdGlvbiYsIEZ1bmN0aW9uSW5mb3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVs
ID0gMSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCA3YTA0MTM3ZTNjNzBmMTgyNDcxMGFjZDk4ODQ3Zjcy
MTU2MjRkMDFkLi4wMGM1YjlhNzRlYzQ4ODM5NDc0OTViYjU5YzhhZTgzMmMzZjQyMzczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCkBAIC0xMjAsNiArMTIwLDU0IEBA
IHN0cnVjdCBGdW5jdGlvblBvaW50ZXJUYWJsZSB7CiAgICAgVmVjdG9yPEpTRnVuY3Rpb24qPiBm
dW5jdGlvbnM7CiB9OwogCitjbGFzcyBNb2R1bGVNZW1vcnlJbmZvcm1hdGlvbiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlTWVtb3J5SW5mb3JtYXRpb24pOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIAorICAgIE1vZHVsZU1lbW9yeUluZm9ybWF0
aW9uKCkgPSBkZWZhdWx0OworICAgIE1vZHVsZU1lbW9yeUluZm9ybWF0aW9uKHVpbnQzMl90IHN0
YXJ0aW5nU2l6ZSwgdWludDMyX3QgbWF4U2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc3RhcnRpbmdT
aXplKQorICAgICAgICAsIG1fbWF4U2l6ZShtYXhTaXplKQorICAgIHsKKyAgICAgICAgLy8gUGVy
aGFwcyB3ZSBzaG91bGQgdHJ5IE1BUF8zMkJJVCBvbiBYODYtNjQgc2luY2UgdGhhdCBtaWdodCBh
bGxvdyBCMyB0byBlbWl0IGJldHRlciBMb2Fkcy9TdG9yZXMuCisgICAgICAgIHZvaWQqIHJlc3Vs
dCA9IG1tYXAobnVsbHB0ciwgbWF4U2l6ZSwgUFJPVF9OT05FLCBNQVBfUFJJVkFURSB8IE1BUF9B
Tk9OLCAwLCAwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKG1wcm90ZWN0KHJlc3VsdCwgc3RhcnRpbmdTaXplLCBQUk9UX1JFQUQgfCBQ
Uk9UX1dSSVRFKSkgeworICAgICAgICAgICAgbXVubWFwKHJlc3VsdCwgbWF4U2l6ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9tZW1vcnkgPSByZXN1bHQ7Cisg
ICAgfQorCisgICAgfk1vZHVsZU1lbW9yeUluZm9ybWF0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
IChtX21lbW9yeSkKKyAgICAgICAgICAgIG11bm1hcChtX21lbW9yeSwgbV9tYXhTaXplKTsKKyAg
ICB9CisKKyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeTsgfQorICAg
IHVpbnQzMl90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworICAgIGJvb2wgZ3Jv
d01lbW9yeSh1aW50MzJfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5
KTsKKyAgICAgICAgaWYgKG5ld1NpemUgPiBtX21heFNpemUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgcmV0dXJuICFtcHJvdGVjdChtX21lbW9yeSwgbmV3U2l6ZSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTW9kdWxlTWVtb3J5SW5mb3JtYXRp
b24sIG1fc2l6ZSk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX21lbW9yeSB7IG51bGxwdHIg
fTsKKyAgICB1aW50MzJfdCBtX3NpemUgeyAwIH07CisgICAgdWludDMyX3QgbV9tYXhTaXplIHsg
MCB9OworfTsKKwogc3RydWN0IEZ1bmN0aW9uSW5mb3JtYXRpb24gewogICAgIFNpZ25hdHVyZSog
c2lnbmF0dXJlOwogICAgIHNpemVfdCBzdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggYWI4MmJlOTgwMjVhZDJmNTViZTIwZjJl
MDMzYTYxZmFlNGFjZDhlNS4uYWJiYmNlMDJmMDBiMmU4YTJlNjYyMjgzNWZkZmRjMDMzNjgzM2Zj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2Vy
LmgKQEAgLTE1NCw2ICsxNTQsMzkgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisg
ICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfQ0FTRSkgeworICAgICAgICAv
LyBUT0RPOiBXaGF0IGRvIEkgZG8gd2l0aCB0aGlzPworICAgICAgICB1aW50MzJfdCBhbGlnbm1l
bnQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICgh
cGFyc2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3Qo
KTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAgICAgICBpZiAoIW1fY29udGV4
dC5sb2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCByZXN1
bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2V4cHJlc3Npb25TdGFj
ay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRk9S
X0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpIHsKKyAgICAgICAgLy8gVE9E
TzogV2hhdCBkbyBJIGRvIHdpdGggdGhpcz8KKyAgICAgICAgdWludDMyX3QgYWxpZ25tZW50Owor
ICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNl
VmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
RXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOworICAg
ICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3Qo
KTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5zdG9yZShzdGF0aWNfY2FzdDxTdG9yZU9wVHlw
ZT4ob3ApLCBvZmZzZXQsIHBvaW50ZXIsIHZhbHVlKTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlw
ZTo6STMyQ29uc3Q6IHsKICAgICAgICAgdWludDMyX3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICgh
cGFyc2VWYXJVSW50MzIoY29uc3RhbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmNwcAppbmRleCA1ZTA1M2E1YTc5MDNhNTRlYjg2NDU2NDY4MmUz
ZTlkMTcxMGIyMTY0Li5jNGVkZTJhN2Q3YzEyMzg0ZTYyNDQxOTJmNDA5NDdhNjU3ZWJlOTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApA
QCAtMjgsMTAgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRl
ICJKU1dBU01Nb2R1bGUuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSAiV0FT
TU9wcy5oIgogI2luY2x1ZGUgIldBU01TZWN0aW9ucy5oIgogCisjaW5jbHVkZSA8c3lzL21tYW4u
aD4KKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKIAogc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAtNjIsMTUgKzY1LDE1IEBAIGJvb2wgTW9kdWxlUGFyc2Vy
OjpwYXJzZSgpCiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJT
dGFydGluZyB0byBwYXJzZSBuZXh0IHNlY3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNldCk7CiAK
LSAgICAgICAgU2VjdGlvbnM6OlNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwog
ICAgICAgICB1aW50OF90IHNlY3Rpb25CeXRlOwogICAgICAgICBpZiAoIXBhcnNlVUludDcoc2Vj
dGlvbkJ5dGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGRhdGFMb2dM
bigiU2VjdGlvbiBieXRlOiAiLCBzZWN0aW9uQnl0ZSk7CisKKyAgICAgICAgU2VjdGlvbnM6OlNl
Y3Rpb24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICBpZiAoc2VjdGlvbkJ5
dGUpIHsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA+PSBTZWN0aW9uczo6VW5rbm93bikK
LSAgICAgICAgICAgICAgICBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247Ci0gICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpZiAoc2VjdGlvbkJ5dGUgPCBTZWN0aW9uczo6VW5rbm93bikK
ICAgICAgICAgICAgICAgICBzZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VjdGlvbnM6OlNlY3Rpb24+
KHNlY3Rpb25CeXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVpbnQzMl90IHNl
Y3Rpb25OYW1lTGVuZ3RoOwpAQCAtOTYsNiArOTksMTUgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBh
cnNlKCkKICAgICAgICAgdW5zaWduZWQgZW5kID0gbV9vZmZzZXQgKyBzZWN0aW9uTGVuZ3RoOwog
CiAgICAgICAgIHN3aXRjaCAoc2VjdGlvbikgeworCisgICAgICAgIGNhc2UgU2VjdGlvbnM6Ok1l
bW9yeTogeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJQYXJzaW5nIE1lbW9yeS4iKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VNZW1vcnkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCiAgICAgICAgIGNhc2UgU2VjdGlvbnM6OkZ1bmN0aW9uVHlwZXM6IHsKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyB0eXBl
cy4iKTsKQEAgLTE0Myw2ICsxNTUsMzQgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5KCkKK3sK
KyAgICB1aW50MzJfdCBtYXhQYWdlTnVtID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpIC8gNjQgLyBLQjsKKyAgICB1aW50OF90IGZsYWdzOworICAgIGlmICghcGFyc2VWYXJV
SW50MShmbGFncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IHNpemU7
CisgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChzaXplID4gbWF4UGFnZU51bSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
dWludDMyX3QgbWF4ID0gbWF4UGFnZU51bTsKKyAgICBpZiAoZmxhZ3MpIHsKKyAgICAgICAgaWYg
KCFwYXJzZVZhclVJbnQzMihtYXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoc2l6ZSA+IG1heCB8fCBtYXggPiBtYXhQYWdlTnVtKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIG1heCAqPSA2NCAqIEtCOworICAgIHNpemUgKj0gNjQgKiBL
QjsKKworICAgIG1fbWVtb3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGVNZW1vcnlJbmZvcm1h
dGlvbj4oc2l6ZSwgbWF4KTsKKyAgICByZXR1cm4gbV9tZW1vcnktPm1lbW9yeSgpOworfQorCiBi
b29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKIHsKICAgICB1aW50MzJfdCBj
b3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQ
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApp
bmRleCA0NjBiZThmYmIzNmYwMmZhZjRhZDUzOGIxY2U1MmIyZWQ1MTI1NGZkLi5mZmY5NDUyNzQy
M2ZkODA2OTQwMGVkMzNkZjg2Nzk4ZjNhMjI4ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCkBAIC00NSwxOCArNDUsMTkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsKIAotICAgIGNvbnN0IFZlY3Rv
cjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIHsgcmV0dXJuIG1f
ZnVuY3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5j
dGlvbkluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TW9kdWxlTWVtb3J5SW5mb3JtYXRpb24+JiBtZW1vcnkoKSB7IHJldHVybiBt
X21lbW9yeTsgfQogCiBwcml2YXRlOgorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNl
TWVtb3J5KCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblR5cGVz
KCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblNpZ25hdHVyZXMo
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMo
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbih1
aW50MzJfdCBudW1iZXIpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQmxvY2so
KTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Npb24oT3BUeXBlKTsK
IAogICAgIFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiBtX2Z1bmN0aW9uczsKICAgICBWZWN0
b3I8U2lnbmF0dXJlPiBtX3NpZ25hdHVyZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZU1l
bW9yeUluZm9ybWF0aW9uPiBtX21lbW9yeTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
QVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKaW5kZXggMzBhZWNlNTk5ODQ2YmFj
ODliZjkzZmVmZDQ5ZmQyNTc5YzFiNmZjMy4uNzExMTdlNmJlNmMwYmIwM2I2MzUwZjQ0NDIyNWRh
ZDcyNTE3NjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9w
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApAQCAtMTAzLDEx
ICsxMDMsMzggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKICAgICBtYWNybyhJ
NjRMZVUsIDB4NmQsIEJlbG93RXF1YWwpIFwKIAogCisjZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVN
T1JZX0xPQURfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJMzJMb2FkOFMsIDB4MjAsIE5BKSBcCisg
ICAgbWFjcm8oSTMyTG9hZDhVLCAweDIxLCBOQSkgXAorICAgIG1hY3JvKEkzMkxvYWQxNlMsIDB4
MjIsIE5BKSBcCisgICAgLyogbWFjcm8oSTMyTG9hZDE2VSwgMHgyMywgTkEpICovIFwKKyAgICBt
YWNybyhJNjRMb2FkOFMsIDB4MjQsIE5BKSBcCisgICAgbWFjcm8oSTY0TG9hZDhVLCAweDI1LCBO
QSkgXAorICAgIG1hY3JvKEk2NExvYWQxNlMsIDB4MjYsIE5BKSBcCisgICAgLyogbWFjcm8oSTY0
TG9hZDE2VSwgMHgyNywgTkEpICovIFwKKyAgICBtYWNybyhJNjRMb2FkMzJTLCAweDI4LCBOQSkg
XAorICAgIG1hY3JvKEk2NExvYWQzMlUsIDB4MjksIE5BKSBcCisgICAgbWFjcm8oSTMyTG9hZCwg
MHgyYSwgTkEpIFwKKyAgICBtYWNybyhJNjRMb2FkLCAweDJiLCBOQSkgXAorCisKKyNkZWZpbmUg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJMzJTdG9y
ZTgsIDB4MmUsIE5BKSBcCisgICAgbWFjcm8oSTMyU3RvcmUxNiwgMHgyZiwgTkEpIFwKKyAgICBt
YWNybyhJNjRTdG9yZTgsIDB4MzAsIE5BKSBcCisgICAgbWFjcm8oSTY0U3RvcmUxNiwgMHgzMSwg
TkEpIFwKKyAgICBtYWNybyhJNjRTdG9yZTMyLCAweDMyLCBOQSkgXAorICAgIG1hY3JvKEkzMlN0
b3JlLCAweDMzLCBOQSkgXAorICAgIG1hY3JvKEk2NFN0b3JlLCAweDM0LCBOQSkgXAorCisKICNk
ZWZpbmUgRk9SX0VBQ0hfV0FTTV9PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fU1BFQ0lB
TF9PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBc
CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChtYWNybykgXAotICAgIEZPUl9FQUNIX1dBU01f
QklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSBcCisg
ICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKQogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5h
bWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAKQEAgLTEyMyw2ICsxNTAsMTQgQEAgZW51bSBjbGFz
cyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JF
QVRFX0VOVU1fVkFMVUUpCiB9OwogCitlbnVtIGNsYXNzIExvYWRPcFR5cGUgOiB1aW50OF90IHsK
KyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsK
KworZW51bSBjbGFzcyBTdG9yZU9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9F
TlVNX1ZBTFVFCiAKIGlubGluZSBib29sIGlzQ29udHJvbE9wKE9wVHlwZSBvcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcAppbmRleCA3YmQ2MGQyM2YxMWEyOWFjZTFlMzdh
NjE4NzVmZTRiNWNmMGRiY2I5Li40YjM1ODU5MjkzZDI4NDAwN2M2MWFhMjAxM2M3YjJhNGQ1NWM1
ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC01Myw4ICs1
Myw5IEBAIFBsYW46OlBsYW4oVk0mIHZtLCBWZWN0b3I8dWludDhfdD4gc291cmNlKQogICAgIGZv
ciAoY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1vZHVsZVBhcnNlci5mdW5jdGlv
bkluZm9ybWF0aW9uKCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nTG4oIlByb2Nlc3NpbmcgZnVuY2lvbiBzdGFydGluZyBhdDogIiwgaW5mby5zdGFydCwgIiBh
bmQgZW5kaW5nIGF0OiAiLCBpbmZvLmVuZCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocGFyc2VB
bmRDb21waWxlKHZtLCBzb3VyY2UsIGluZm8pKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJz
ZUFuZENvbXBpbGUodm0sIHNvdXJjZSwgKm1vZHVsZVBhcnNlci5tZW1vcnkoKSwgaW5mbykpOwog
ICAgIH0KKyAgICBtZW1vcnkgPSBXVEZNb3ZlKG1vZHVsZVBhcnNlci5tZW1vcnkoKSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBs
YW4uaAppbmRleCBkM2M5ZTIyYTVhYmExNzI2NDNmMzc5MTYwYzM4YjhlNGI0OTJiMThjLi5lMDdi
NWFmNmNmMjI3MzIzNjVhYzAxZTRlNjIyMTMyZjk3M2I4MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01QbGFuLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbXBpbGF0
aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCkBAIC00Niw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBQ
bGFuKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSk7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEIzOjpDb21waWxhdGlvbj4+IHJlc3VsdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9k
dWxlTWVtb3J5SW5mb3JtYXRpb24+IG1lbW9yeTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCmluZGV4IDUz
ZTkzNTZlMjM4ZmE0MmM1YjU4NzEwOTkzNmI1NzAwOGU3YzY3OTkuLjA3YzcyZDQxZDNiZWVkY2Qx
NzIzOGE4YzIwMDQyMzI3NTEzYjQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01TZWN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01TZWN0aW9ucy5oCkBAIC0zMyw2ICszMyw3IEBAIHN0cnVjdCBTZWN0aW9ucyB7CiAgICAgZW51
bSBTZWN0aW9uIDogdWludDhfdCB7CiAgICAgICAgIEZ1bmN0aW9uVHlwZXMgPSAxLAogICAgICAg
ICBTaWduYXR1cmVzID0gMywKKyAgICAgICAgTWVtb3J5ID0gNSwKICAgICAgICAgRGVmaW5pdGlv
bnMgPSAxMCwKICAgICAgICAgVW5rbm93bgogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290637</attachid>
            <date>2016-10-04 13:07:37 -0700</date>
            <delta_ts>2016-10-04 19:32:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161710-20161004130426.patch</filename>
            <type>text/plain</type>
            <size>75827</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MWVmNjdmODVmMWJmNzE0YjJkMDM3OWU5ZjEzZTkyMzA2ZDY1YTE3Li42MDJhNDE1MzIxMjc4Nzcy
YzlkOTgzNzFiZjMyOGZhNjY5NzUxYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNi0wOS0yNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgKiB0ZXN0V0FTTS5jcHA6CisgICAgICAgIChydW5XQVNN
VGVzdHMpOgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpXQVNNOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6TWVtb3J5OjpNZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6On5NZW1vcnkp
OgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6Om1lbW9yeSk6CisgICAgICAgIChKU0M6OldB
U006Ok1lbW9yeTo6c2l6ZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9y
eSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAg
KiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXQVNNOjpGdW5jdGlv
blBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dBU01N
b2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBhcnNl
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVs
ZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVs
ZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAgKiB3
YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6CisgICAg
ICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6CisK
IDIwMTYtMDktMjYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4KIAog
ICAgICAgICBbSlNDXSBBbGxvdyBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSB0byBiZSBz
ZXQgZHVyaW5nIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKaW5kZXggODMxZDA5NjAwNDIx
Y2ZiYjQzMTQyYTNkOTk5YTRkYzY5NjQ5MGJlZi4uZjU0MDFmYzkyY2RiMWJhM2RiMjZiN2E5NmQ3
YjJjYjUwY2M2Y2U5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwpAQCAtMzEsNiArMzEsNyBA
QCBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc19taW5pZG9tID0gZW50aXRsZW1lbnRzLnBsaXN0
OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFpciA9IGVudGl0bGVtZW50cy5wbGlz
dDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhcGkgPSBlbnRpdGxlbWVudHMucGxp
c3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YjMgPSBlbnRpdGxlbWVudHMucGxp
c3Q7CitDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0V0FTTSA9IGVudGl0bGVtZW50cy5w
bGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RSZWdFeHAgPSBlbnRpdGxlbWVu
dHMucGxpc3Q7CiAKIFNLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxMXyQoRk9SQ0VfVE9PTF9J
TlNUQUxMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzRmOTE2MjNmYTQz
ZGQ1NGE2YTA4Njg5MmE5YWFmYjUxODE1MzUuLmRmMjVmNWFhZDUwMjk5ODk0ZGM0OTg0OGFhZTdl
NTEyM2E1N2ViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjA0LDYgKzEy
MDQsOCBAQAogCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggKi87IH07CiAJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CiAJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MjlBNEIx
QzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07CisJCTUzNTU1NzE0MUQ5RDlFQTUw
MDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oICov
OyB9OworCQk1MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzU1NTcxNTFEOURGQTMy
MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi87IH07CiAJCTUzNzBCNEY1MUJGMjYyMDIwMDVD
NDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEYzMUJG
MjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi87IH07CiAJCTUzOTE3
RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlRnVuY3Rpb25zLmggKi87IH07CkBAIC0zNDE4LDYgKzM0MjAsOCBAQAogCQk1MzRDNDU3QjFC
QzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzRDNDU3RDFCQzcyNTQ5MDA3NDc2QTcgLyog
SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNTI5QTRCMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVdGlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTWVtb3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzE1MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNN
TWVtb3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01NZW1v
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzcwQjRGMzFCRjI1RUEyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2MTksNiArNTYyMyw4IEBACiAJCQkJNTNGNDBF
OTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlC
MDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovLAogCQkJCTUzRjQwRThBMUQ1OTAxQkIwMDk5QTFC
NiAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLywKKwkJCQk1MzU1NTcxNTFEOURGQTMyMDA2RDU4
M0IgLyogV0FTTU1lbW9yeS5jcHAgKi8sCisJCQkJNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8q
IFdBU01NZW1vcnkuaCAqLywKIAkJCQk1M0Y0MEU5NjFENUE3QkVDMDA5OUExQjYgLyogV0FTTU1v
ZHVsZVBhcnNlci5jcHAgKi8sCiAJCQkJNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01N
b2R1bGVQYXJzZXIuaCAqLywKIAkJCQk1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV0FTTVBs
YW4uY3BwICovLApAQCAtNzc1OSw2ICs3NzY1LDcgQEAKIAkJCQkxNDJFMzEzODEzNEZGMEE2MDBB
RkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzgyOTdCMTM3OUU4
QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMx
QzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM1NTU3
MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMy
QkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05MDg4LDYgKzkwOTUsNyBAQAogCQkJCTBGNUExMjczMTkyRDlGREYwMDg3NjRBMyAv
KiBERkdEb2VzR0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4
MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBC
MDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzU1NTcxNjFEOURG
QTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMTQz
MzFBREYwOTAxMDBFRDc5MkMgLyogREZHRXBvY2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
QzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3OEE5Nzc0MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdB
U00uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAppbmRleCBkOWVkOTFm
ZTE4NGRlYWIxMTc2OTk1YzhiZDY2OWNmYzlkOGU0YzZkLi5hMjY4ZDAzMmQzY2UyMTRkMDMzZTQz
YTM4NWZiNGY3MGU5MjBjN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dFdBU00uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKQEAgLTMy
LDcgKzMyLDkgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIlByb3RvQ2Fs
bEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCiAjaW5j
bHVkZSAiV0FTTVBsYW4uaCIKKwogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8
d3RmL0xFQkRlY29kZXIuaD4KIApAQCAtMjQyLDggKzI0NCw0NjkgQEAgc3RhdGljIHZvaWQgcnVu
V0FTTVRlc3RzKCkKIHsKICAgICB7CiAgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAg
ICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAo
ZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJl
c3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRf
bG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0
cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAweDAxLCAweDAxLCAweDAyLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAv
LyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9y
eSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkg
aTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3Rv
cmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJu
IChpMzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8v
ICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAw
LCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgw
MSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAw
eDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1
LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzMywgMHgw
MiwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDks
IDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAg
ICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7Cisg
ICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHku
Iik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAg
IChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5j
IChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkzMikgKHBh
cmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChzZXRfbG9j
YWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAgLy8g
ICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAoZ2V0X2xv
Y2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChpMzIuc3Rv
cmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9sb2NhbCAkaSkgKGkzMi5j
b25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAk
aSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8gICAg
ICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAg
ICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAweDVm
LCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGIyLCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhYywgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwMywg
MHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQsIDB4
MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MDQs
IDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAweDAwLCAw
eDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBm
LAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0g
MSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZh
aWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAg
ICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSA1Owor
ICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3QpOworICAgICAgICB1aW50
MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFuLm1lbW9yeS0+bWVtb3J5
KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zmc2V0
IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAx
XSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAgIGxlbmd0aCA9
IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgaW52
b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCg1KSwgYm94KG9m
ZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90
KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQg
ZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQor
ICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMy
KSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAg
ICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAg
IChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lm
IDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAg
ICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGdldF9sb2Nh
bCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAkaSAo
aTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8gICAgICAg
IChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAgICAg
IC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYx
LCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgwMSwgMHgw
MSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwg
MHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAweDVmLCAw
eDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGFmLCAweDgw
LCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwMywgMHgw
MSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQsIDB4MDIs
IDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTQsIDB4
MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAz
LCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAweDA5LCAweDBmCisg
ICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYg
KHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnkt
PnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDE7CisgICAg
ICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwbGFuLm1lbW9yeS0+
bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9y
eVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwg
MTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDU7CisgICAg
ICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSks
IGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29m
ZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0
aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisg
ICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQor
ICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAi
aTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMy
KQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2Nh
bCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGdldF9sb2NhbCAk
cHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2
ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUs
IDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAw
eDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5
LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwg
MHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4
MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTQsCisg
ICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07
CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVz
dWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94
KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
KSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkK
KyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGkzMi5jb25zdCA4
KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhfcyAo
aTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAw
eDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2LCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgw
NSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4
NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0
LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwg
MHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAg
fTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5y
ZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRh
TG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAg
ICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAxMDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206
CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8g
IChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIg
aTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0
cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9s
b2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2
ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4MDEsIDB4MDEsIDB4
MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUs
IDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAw
eDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5
LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwg
MHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4
MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MTQsCisg
ICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07
CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVz
dWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0p
LCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KC0xMiksIGJv
eChwbGFuLm1lbW9yeS0+c2l6ZSgpIC0gc2l6ZW9mKHVpbnQ2NF90KSkgfSksIC0xMik7CisgICAg
fQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVs
ZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMy
X2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQor
ICAgICAgICAvLyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkK
KyAgICAgICAgLy8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAg
ICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ig
PSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAw
LCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAor
ICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAg
ICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAg
ICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAw
eDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgw
MCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwg
MHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4
MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBs
YW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwg
IXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQg
dG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94
KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
KSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CiAgICAgICAgIC8vICAgIChtb2R1bGUKLSAgICAgICAgLy8gICAgIChmdW5jIChleHBv
cnQgImR1bWItZXEiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikK
KyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQg
IndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkzMikgKHBhcmFtICRsZW5n
dGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChzZXRfbG9jYWwgJGkgKGkz
Mi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAgLy8gICAgICAgKGxv
b3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAoZ2V0X2xvY2FsICRpKSAo
Z2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChpMzIuc3RvcmUgKGkzMi5h
ZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9sb2NhbCAkaSkgKGkzMi5jb25zdCA0KSkp
IChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmFk
ZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8gICAgICAgIChiciAw
KQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAgICAgIC8vICAg
ICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDcz
LCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgwMSwgMHgwMSwgMHgw
MSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwg
MHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIs
IDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAweDVmLCAweDYxLCAw
eDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGIyLCAweDgwLCAweDgw
LCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhYywgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwMywgMHgwMSwgMHgw
MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQsIDB4MDIsIDB4NTYs
IDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MDQsIDB4NDIsCisg
ICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAweDAwLCAweDEwLCAweDAx
LCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLAorICAgICAg
ICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigq
dm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxh
bi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBj
b21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSA1OworICAgICAgICB1
bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3QpOworICAgICAgICB1aW50MzJfdCogbWVt
b3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFuLm1lbW9yeS0+bWVtb3J5KCkpOworICAg
ICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEw
MCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVv
Zih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMHUpOwor
ICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19F
UShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAgIGxlbmd0aCA9IDEwOworICAg
ICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCg1KSwgYm94KG9mZnNldCksIGJv
eChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAg
ICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZz
ZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAg
ICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAv
LyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFyYW0g
JHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8vICAg
ICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9jawor
ICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkzMi5n
ZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAgICAg
ICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGdldF9sb2NhbCAkaSkpIChn
ZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmFkZCAo
aTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8gICAgICAgIChiciAwKQor
ICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAgICAgIC8vICAgICAg
KHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAw
eDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgw
NSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4
NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAweDVmLCAweDYxLCAweDcy
LCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGFmLCAweDgwLCAweDgwLCAw
eDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwMywgMHgwMSwgMHgwMCwK
KyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4
MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTQsIDB4MDAsCisgICAg
ICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAw
eDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07
CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVz
dWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDE7CisgICAgICAgIHVpbnQ4
X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwbGFuLm1lbW9yeS0+bWVtb3J5KCkp
OworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQg
KyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisK
KyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDU7CisgICAgICAgIGludm9r
ZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZz
ZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFd
LCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAg
ICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAv
LyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4
X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAg
ICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisg
ICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGdldF9sb2NhbCAkcHRyKSkpCisg
ICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMs
IDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4
ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3
LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAor
ICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1
ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAg
ICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4
MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTQsCisgICAgICAgICAg
ICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUo
KSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1
bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwg
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEw
MCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206Cisg
ICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAg
Ly8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHJlc3Vs
dCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGkzMi5jb25zdCA4KSAoZ2V0X2xv
Y2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhfcyAoaTMyLmNvbnN0
IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZk
LCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2LCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
MywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4Mywg
MHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMs
IDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAw
eDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLCAweDAw
LAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg
MHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwKKyAg
ICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAg
ICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6
ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1v
ZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAxMDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSkgfSks
IDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAg
IC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5jICJkdW1iLWVxIiAocGFyYW0gJHgg
aTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikKICAgICAgICAgLy8gICAgICAoaWYgKGkz
Mi5lcSAoZ2V0X2xvY2FsICR4KSAoZ2V0X2xvY2FsICR5KSkKICAgICAgICAgLy8gICAgICAgKHRo
ZW4gKGJyIDApKQogICAgICAgICAvLyAgICAgICAoZWxzZSAocmV0dXJuIChpMzIuY29uc3QgMSkp
KSkKQEAgLTI2NSwxNCArNzI4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAx
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgx
KSwgYm94KDApIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0p
LCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDEpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDApIH0pLCAxKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDIpLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMSkgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDEp
OwogICAgIH0KIAogICAgIHsKQEAgLTMwNiwxNCArNzY5LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldB
U01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFz
aC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgw
KSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0p
LCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3go
NikgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94
KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJv
eCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBi
b3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDAp
LCBib3goNikgfSksIDApOwogICAgIH0KIAogCkBAIC0zMzMsNyArNzk2LDcgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSksIDUpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyB9KSwgNSk7CiAgICAgfQogCiAKQEAgLTM1NCw3ICs4MTcsNyBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyB9KSwgMTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTM3
NCw3ICs4MzcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAg
ICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0K
IAogICAgIHsKQEAgLTM5NCw3ICs4NTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9
KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTQxMywxMCArODc2LDEwIEBAIHN0YXRpYyB2b2lk
IHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMSkgfSksIDEwMSk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goLTEpLCBib3goMSl9KSwgMCk7
Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgxKSB9KSwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjptaW4oKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDEwMCksIGJveCgxKSB9KSwgMTAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KC0xKSwgYm94KDEpfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgxKSB9KSwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CiAgICAgfQogCiAgICAgewpAQCAtNDQyLDggKzkw
NSw4IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTApIH0pLCAxMCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSB9
KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgxMCkgfSksIDEwKTsKICAgICB9CiAKICAgICB7CkBAIC00NzgsMTAg
Kzk0MSwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKX0pLCAzKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApIH0pLCA1
MDUwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0pLCAxKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDIpfSksIDMpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgNTA1MCk7CiAgICAgfQogCiAgICAgewpAQCAt
NTIyLDE0ICs5ODUsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDApOwotICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3go
MCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDIpLCBib3goMSkgfSksIDIpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSksIDIpOwotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMikgfSksIDQpOwot
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBi
b3goNikgfSksIDEyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDEwMCkgfSksIDEwMDAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDApLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAyKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDIp
OworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgNCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAx
Mik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3go
MTAwKSB9KSwgMTAwMDApOwogICAgIH0KIAogICAgIHsKQEAgLTU3NSwxNCArMTAzOCwxNCBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9
KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCg2
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDEpOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goNikgfSksIDEp
OworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKICAgICB9CiAKIH0KQEAgLTU5Niw3ICsx
MDU5LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGlmIChvcHRpb25z
Lm1fcnVuTEVCVGVzdHMpCiAgICAgICAgIHJ1bkxFQlRlc3RzKCk7CiAKLQogICAgIGlmIChvcHRp
b25zLm1fcnVuV0FTTVRlc3RzKSB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwYjcxYzFhZmFhOTQ0NjE2YmExN2ZlYmZj
OTVlZGJjYWM2MGQzY2I0Li5jMmFiZDcxMzFmZGI0YTk1MjFkZDc3NGY3NWM3YzVmMzQ0M2JlNDQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3Iu
Y3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzRml4U1NBLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCkBAIC0zNyw2ICszOSw3IEBACiAjaW5jbHVkZSAi
VmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCiAj
aW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCogcHRy
KQpAQCAtMTY1LDE4ICsxNjgsMjUgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFZhcmlh
YmxlKiwgMT4gUmVzdWx0TGlzdDsKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBl
IGVtcHR5RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKFByb2NlZHVy
ZSYpOworICAgIEIzSVJHZW5lcmF0b3IoTWVtb3J5KiwgUHJvY2VkdXJlJik7CiAKICAgICB2b2lk
IGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mKTsKICAgICB2b2lkIGFkZExvY2FsKFR5
cGUsIHVpbnQzMl90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBlLCB1aW50
NjRfdCk7CiAKKyAgICAvLyBMb2NhbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRM
b2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBl
IHZhbHVlKTsKIAorICAgIC8vIE1lbW9yeQorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGxv
YWQoTG9hZE9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBzdG9y
ZShTdG9yZU9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBF
eHByZXNzaW9uVHlwZSB2YWx1ZSk7CisKKyAgICAvLyBCYXNpYyBvcGVyYXRvcnMKICAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBl
IGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBFeHByZXNzaW9u
VHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCisgICAgLy8gQ29udHJvbCBmbG93
CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEJsb2NrKFR5cGUgc2lnbmF0
dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9vcChUeXBlIHNp
Z25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZElmKEV4cHJl
c3Npb25UeXBlIGNvbmRpdGlvbiwgVHlwZSBzaWduYXR1cmUpOwpAQCAtMTkxLDE2ICsyMDEsMjQg
QEAgcHVibGljOgogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250
cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9uU3RhY2spOwogCiBwcml2
YXRlOgorICAgIEV4cHJlc3Npb25UeXBlIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHVpbnQz
Ml90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgc2l6ZU9mT3ApOwor
ICAgIEV4cHJlc3Npb25UeXBlIGVtaXRMb2FkT3AoTG9hZE9wVHlwZSwgT3JpZ2luLCBFeHByZXNz
aW9uVHlwZSBwb2ludGVyKTsKKyAgICB2b2lkIGVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlLCBPcmln
aW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKwogICAg
IHZvaWQgdW5pZnkoVmFyaWFibGUqIHRhcmdldCwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291cmNl
KTsKICAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0IEV4cHJlc3Npb25MaXN0JiBy
ZXN1bHRTdGFjaywgUmVzdWx0TGlzdCYgc3RhY2spOwogCisgICAgTWVtb3J5KiBtX21lbW9yeTsK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCYXNpY0Jsb2NrKiBtX2N1cnJlbnRCbG9jazsK
ICAgICBWZWN0b3I8VmFyaWFibGUqPiBtX2xvY2FsczsKKyAgICBWYWx1ZSogbV9tZW1vcnlCYXNl
IHsgbnVsbHB0ciB9OworICAgIFZhbHVlKiBtX21lbW9yeVNpemUgeyBudWxscHRyIH07CiB9Owog
Ci1CM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFByb2NlZHVyZSYgcHJvY2VkdXJlKQotICAg
IDogbV9wcm9jKHByb2NlZHVyZSkKK0IzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoTWVtb3J5
KiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2VkdXJlKQorICAgIDogbV9tZW1vcnkobWVtb3J5KQor
ICAgICwgbV9wcm9jKHByb2NlZHVyZSkKIHsKICAgICBtX2N1cnJlbnRCbG9jayA9IG1fcHJvYy5h
ZGRCbG9jaygpOwogfQpAQCAtMjIyLDIyICsyNDAsMTg5IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYgdHlwZXMpCiAgICAgICAgICAgICBtX2xv
Y2Fsc1tpXSA9IGFyZ3VtZW50VmFyaWFibGU7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBPcmlnaW4oKSwgYXJndW1lbnRW
YXJpYWJsZSwgYXJndW1lbnQpOwogICAgICAgICB9KTsKKworICAgIGlmIChtX21lbW9yeSkgewor
ICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBhZGQgdGhlIGNhbGxpbmcgY29udmVudGlvbiB3ZSBz
aG91bGQgaGF2ZSB0d28gZW50cnlwb2ludHMgYW5kIHdlIHNob3VsZCBjaGFuZ2UgdGhlc2UgdG8g
cmVnaXN0ZXIgYXJndW1lbnRzLgorICAgICAgICBtX21lbW9yeUJhc2UgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5t
ZW1vcnkoKSk7CisgICAgICAgIFZhbHVlKiBtZW1vcnlTaXplQWRkcmVzcyA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9j
YXN0PGNoYXIqPihtX21lbW9yeSkgKyBNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKKyAgICAgICAg
bV9tZW1vcnlTaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeVNpemVBZGRyZXNzKTsKKyAgICB9CiB9
CiAKLWJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIEIzSVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQz
Ml90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQorYm9vbCBCM0lSR2VuZXJhdG9yOjpn
ZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICBB
U1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OkdldCwgT3JpZ2luKCksIG1fbG9jYWxz
W2luZGV4XSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJl
c3Npb25UeXBlIHZhbHVlKQogewogICAgIEFTU0VSVChtX2xvY2Fsc1tpbmRleF0pOwogICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6U2V0LCBP
cmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2lubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIo
dWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBzaXplT2ZP
cGVyYXRpb24pCit7CisgICAgQVNTRVJUKG1fbWVtb3J5QmFzZSAmJiBtX21lbW9yeVNpemUpOwor
ICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgYWRkIHRoZSBtZW1vcnlPZmZzZXQg
dG8gdGhlIHBvaW50ZXIgd2l0aCBhIDMyYml0IGFkZAorICAgIC8vIHNvIGlmIGl0IG92ZXJmbG93
cyB3ZSBzdGF5IHdpdGhpbiBvdXIgbWFwcGVkIG1lbW9yeS4KKyAgICBWYWx1ZSogbWVtb3J5T2Zm
c2V0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCks
IEludDMyLCBvZmZzZXQpOworICAgIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEFkZCwgT3JpZ2luKCksIHBvaW50ZXIsIG1lbW9yeU9mZnNldCk7Cisg
ICAgcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgWkV4
dDMyLCBPcmlnaW4oKSwgcG9pbnRlcik7CisKKyAgICBWYWx1ZSogc2l6ZU9mVmFsdWUgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kSW50Q29uc3RhbnQobV9wcm9jLCBPcmlnaW4oKSwgSW50NjQsIHNp
emVPZk9wZXJhdGlvbik7CisgICAgVmFsdWUqIGxhc3RCeXRlID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIE9yaWdpbigpLCBzaXplT2ZWYWx1ZSwgcG9pbnRl
cik7CisgICAgVmFsdWUqIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBBYm92ZSwgT3JpZ2luKCksIGxhc3RCeXRlLCBtX21lbW9yeVNpemUpOwor
ICAgIENoZWNrVmFsdWUqIGJvdW5kc0NoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
aGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOworICAgIGJv
dW5kc0NoZWNrLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAg
fSk7CisKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBBZGQsIE9yaWdpbigpLCBtX21lbW9yeUJhc2UsIHBvaW50ZXIpOworICAgIHJldHVybiBw
b2ludGVyOworfQorCitpbmxpbmUgdWludDMyX3Qgc2l6ZU9mTG9hZE9wKExvYWRPcFR5cGUgb3Ap
Cit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOgor
ICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDhTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOgorICAgICAgICByZXR1cm4g
MTsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlM6CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJNjRMb2FkMTZTOgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIExvYWRPcFR5cGU6Okkz
MkxvYWQ6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJTOgorICAgIGNhc2UgTG9hZE9w
VHlwZTo6STY0TG9hZDMyVToKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJNjRMb2FkOgorICAgICAgICByZXR1cm4gODsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworLy8gRklYTUU6IEIzIHNob3VsZCBzdXBwb3J0IEludDY0IHNt
YWxsIGxvYWRzIGFuZCAxNi1iaXQgdW5zaWduZWQgbG9hZHMuCitpbmxpbmUgVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9wVHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhwcmVz
c2lvblR5cGUgcG9pbnRlcikKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBMb2FkT3BU
eXBlOjpJMzJMb2FkOFM6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhTLCBvcmlnaW4sIHBvaW50ZXIsIDApOworICAg
IH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhTOiB7CisgICAgICAgIFZhbHVlKiB2
YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9h
ZDhTLCBvcmlnaW4sIHBvaW50ZXIsIDApOworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0K
KworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhVOiB7CisgICAgICAgIHJldHVybiBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Wiwgb3JpZ2lu
LCBwb2ludGVyLCAwKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4VTog
eworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQ4Wiwgb3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICAgICAgcmV0
dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgWkV4dDMyLCBvcmln
aW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlM6IHsK
KyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZDE2Uywgb3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICB9CisgICAgY2FzZSBMb2Fk
T3BUeXBlOjpJNjRMb2FkMTZTOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDE2Uywgb3JpZ2luLCBwb2lu
dGVyLCAwKTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgU0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRP
cFR5cGU6OkkzMkxvYWQ6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlcik7Cisg
ICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJVOiB7CisgICAgICAgIFZhbHVl
KiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7Cisg
ICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJTOiB7CisgICAgICAgIFZhbHVl
KiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7Cisg
ICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOiB7CisgICAgICAgIHJldHVybiBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0
LCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3As
IHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKworICAg
IHJlc3VsdCA9IGVtaXRMb2FkT3Aob3AsIE9yaWdpbigpLCBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9p
bnRlcihvZmZzZXQsIHBvaW50ZXIsIHNpemVPZkxvYWRPcChvcCkpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3ApCit7
CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTg6CisgICAgICAgIHJldHVybiAxOworICAgIGNh
c2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3Rv
cmUxNjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU6
CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUzMjoKKyAgICAgICAgcmV0dXJuIDQ7Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgICAgIHJldHVybiA4OworICAgIH0K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCisKKy8vIEZJWE1FOiBXZSBz
aG91bGQganVzdCBzdXBwb3J0IGFuIEludDY0IHN0b3JlOC4KK2lubGluZSB2b2lkIEIzSVJHZW5l
cmF0b3I6OmVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlIG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNz
aW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG9w
KSB7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgorICAgICAgICB2YWx1ZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFs
dWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0
b3JlODoKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBTdG9yZTgsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTE2OgorICAgICAgICB2YWx1ZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUp
OworICAgICAgICBGQUxMVEhST1VHSDsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3Jl
MTY6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJv
YywgU3RvcmUxNiwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMzI6CisgICAgICAgIHZhbHVlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7
CisgICAgICAgIEZBTExUSFJPVUdIOworCisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6
CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU6CisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUsIG9yaWdpbiwgdmFsdWUsIHBv
aW50ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6c3RvcmUoU3RvcmVPcFR5cGUgb3As
IHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpCit7CisgICAgQVNTRVJUKHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisKKyAgICBl
bWl0U3RvcmVPcChvcCwgT3JpZ2luKCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKG9mZnNl
dCwgcG9pbnRlciwgc2l6ZU9mU3RvcmVPcChvcCkpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIGJvb2wgQjNJUkdlbmVyYXRvcjo6dW5hcnlPcChVbmFyeU9wVHlwZSBvcCwgRXhwcmVz
c2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIHJlc3VsdCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgdG9CM09wKG9wKSwgT3JpZ2lu
KCksIGFyZyk7CkBAIC00MDMsMTAgKzU4OCw3NiBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXAo
Y29uc3QgVmVjdG9yPENvbnRyb2xUeXBlPiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaQog
CiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9u
PiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgRnVuY3Rp
b25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKKworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNyZWF0ZVdyYXBwZXIoVk0mIHZtLCBjb25zdCBTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwgTWVt
b3J5KiBtZW1vcnkpCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisKKy8vICAgICAgICBwcm9sb2d1ZTsK
Ky8vICAgICAgICBpZiAoYXJnQ291bnQgPCBleHBlY3RlZCkKKy8vICAgICAgICAgICAgdHJhcDsK
Ky8vCisvLyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ0NvdW50OyArK2kpCisvLyAgICAgICAg
ICAgIG1vdmVBcmd1bWVudFtpXTsKKy8vCisvLyAgICAgICAgcGluIHRoaW5nczsKKy8vICAgICAg
ICByZXN1bHQgPSBjYWxsIG1haW5GdW5jdGlvbjsKKy8vICAgICAgICBlcGlsb2d1ZSByZXN1bHQ7
CisKKyAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgc3VwcG9zZWQgdG8gdHJhcCBpZiBsZXNzIHRo
YW4gZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cz8KKyAgICAgICAgVmFsdWUqIGZyYW1lUG9p
bnRlciA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6RnJhbWVQb2ludGVy
LCBPcmlnaW4oKSk7CisgICAgICAgIFZhbHVlKiBvZmZTZXRPZkFyZ3VtZW50Q291bnQgPSBibG9j
ay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgVmFsdWUqIGFyZ3Vt
ZW50Q291bnQgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksCisgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBmcmFtZVBvaW50ZXIsIG9mZlNldE9mQXJndW1lbnRDb3VudCkpOworCisg
ICAgICAgIFZhbHVlKiBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSBibG9jay0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSk7
CisKKyAgICAgICAgQ2hlY2tWYWx1ZSogYXJndW1lbnRDb3VudENoZWNrID0gYmxvY2stPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAgICAgICAgICBibG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYm92ZSwgT3JpZ2luKCksIGV4cGVjdGVkQXJndW1l
bnRDb3VudCwgYXJndW1lbnRDb3VudCkpOworICAgICAgICBhcmd1bWVudENvdW50Q2hlY2stPnNl
dEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKKyAgICAgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIH0pOwor
CisgICAgICAgIFZhbHVlKiBiYXNlTWVtb3J5ID0gbnVsbHB0cjsKKyAgICAgICAgVmVjdG9yPFZh
bHVlKj4gc2l6ZXM7CisgICAgICAgIGlmIChtZW1vcnkpIHsKKyAgICAgICAgICAgIGJhc2VNZW1v
cnkgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtZW1v
cnktPm1lbW9yeSgpKTsKKyAgICAgICAgICAgIFZhbHVlKiBzaXplID0gYmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1lbW9y
eSkpOworICAgICAgICAgICAgc2l6ZXMucmVzZXJ2ZUNhcGFjaXR5KG1lbW9yeS0+cGlubmVkUmVn
aXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvIGlu
Zm8gOiBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMpCisgICAgICAgICAg
ICAgICAgc2l6ZXMuYXBwZW5kKGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3Jp
Z2luKCksIHNpemUsCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaW5mby5zaXplT2Zmc2V0KSkpOworICAgICAgICB9CisK
KyAgICAgICAgVmVjdG9yPFZhbHVlKj4gYXJndW1lbnRzOworICAgICAgICBqc2NDYWxsaW5nQ29u
dmVudGlvbigpLml0ZXJhdGUoc2lnbmF0dXJlLT5hcmd1bWVudHMsIHByb2MsIGJsb2NrLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIFsmXSAoVmFsdWUqIGFyZ3VtZW50LCB1bnNpZ25lZCkgeworICAg
ICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9IGpzY0NhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBD
YWxsKHByb2MsIGJsb2NrLCBPcmlnaW4oKSwgbWFpbkZ1bmN0aW9uLCBhcmd1bWVudHMsIHRvQjNU
eXBlKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSksIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50KSB7CisgICAgICAgICAgICBpZiAobWVtb3J5KSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHNpemVzLnNpemUoKSA9PSBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMu
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZShiYXNlTWVtb3J5LCBWYWx1ZVJlcDo6cmVnKG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCku
YmFzZU1lbW9yeVBvaW50ZXIpKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzaXplc1tpXSwgVmFsdWVSZXA6OnJlZyhtZW1vcnkt
PnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbaV0uc2l6ZVJlZ2lzdGVyKSkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBpZiAoc2lnbmF0dXJlLT5yZXR1cm5U
eXBlICE9IFZvaWQpCisgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIEIzOjpSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEIzOjpSZXR1cm4sIE9yaWdp
bigpKTsKKworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4odm0s
IHByb2MpOworICAgIH0KKworc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBh
cnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBNZW1vcnkqIG1l
bW9yeSwgRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvY2VkdXJlOwotICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChwcm9jZWR1
cmUpOworICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChtZW1vcnksIHByb2NlZHVyZSk7CiAgICAg
RnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGNvbnRleHQsIHNvdXJjZSwgaW5m
byk7CiAgICAgaWYgKCFwYXJzZXIucGFyc2UoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTQxNyw3ICs2NjgsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0
aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgRnUK
ICAgICBmaXhTU0EocHJvY2VkdXJlKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RnVuY3Rpb25Db21waWxhdGlvbj4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bkNvbXBpbGF0aW9uPigpOworCisgICAgcmVzdWx0LT5jb2RlID0gc3RkOjptYWtlX3VuaXF1ZTxD
b21waWxhdGlvbj4odm0sIHByb2NlZHVyZSwgb3B0TGV2ZWwpOworICAgIHJlc3VsdC0+anNFbnRy
eVBvaW50ID0gY3JlYXRlV3JhcHBlcih2bSwgaW5mby5zaWduYXR1cmUsIHJlc3VsdC0+Y29kZS0+
Y29kZSgpLCBtZW1vcnkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5l
cmF0b3IuaAppbmRleCA5NTE5NmRiZTU3N2RhYWZhYmE5NzhhNTYwNGM5MDZjZDY1NWJmYzgzLi5m
ODI4MmQwYzk1NWMyNmY3ZTdjMDEyNDU3OTdiOTkxNmQ0ZGI5MDQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDkgQEAg
ZXh0ZXJuICJDIiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCopOwogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdBU00gewogCi1zdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJz
ZUFuZENvbXBpbGUoVk0mLCBWZWN0b3I8dWludDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1
bnNpZ25lZCBvcHRMZXZlbCA9IDEpOworY2xhc3MgTWVtb3J5OworCitzdGQ6OnVuaXF1ZV9wdHI8
RnVuY3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+
JiwgTWVtb3J5KiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA3ODk1OTMxMDI0YTUzZDY3
ZDVjNzliOTQ0ZWNmMmIyYjUyYWIxNzQ1Li5lMDA3MmM4NTUwNWNhMDM0NzNiNzEwOWRkODA0NWYy
ZTMyMzBmOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uaApAQCAtMjcsMjMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKKyNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNp
bmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIK
KyNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0NjRWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXR5cGVkZWYgdW5zaWdu
ZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwordHlw
ZWRlZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpU
eXBlIHR5cGUpOwogCi10ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRl
T2Zmc2V0PgordGVtcGxhdGU8dW5zaWduZWQgaGVhZGVyU2l6ZSwgTmV4dE9mZnNldCB1cGRhdGVP
ZmZzZXQ+CiBjbGFzcyBDYWxsaW5nQ29udmVudGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGhlYWRlclNpemUgPSBvZmZzZXQ7Ci0KICAgICBDYWxsaW5nQ29udmVudGlv
bihWZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVyQXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxl
ZVNhdmVSZWdpc3RlcnMpCiAgICAgICAgIDogbV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFy
Z3VtZW50cykKICAgICAgICAgLCBtX2NhbGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lz
dGVycykKQEAgLTY0LDE4ICs2OCw1OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQjM6OlZh
bHVlKiBhZGRyZXNzID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpBZGQs
IG9yaWdpbiwgZnJhbWVQb2ludGVyLAogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5k
TmV3PEIzOjpDb25zdDY0VmFsdWU+KHByb2MsIG9yaWdpbiwgY3VycmVudE9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+
KHByb2MsIEIzOjpMb2FkLCB0b0IzVHlwZShhcmd1bWVudFR5cGVzW2ldKSwgb3JpZ2luLCBhZGRy
ZXNzKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJl
bnRPZmZzZXQsIGFyZ3VtZW50VHlwZXNbaV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZz
ZXQgPSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tp
XSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEIz
OjpWYWx1ZSogc2V0dXBDYWxsKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBi
bG9jaywgQjM6Ok9yaWdpbiBvcmlnaW4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIGNv
bnN0IFZlY3RvcjxCMzo6VmFsdWUqPiYgYXJndW1lbnRzLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBj
b25zdCBGdW5jdG9yJiBwYXRjaHBvaW50RnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIHN0YWNrQXJndW1lbnRDb3VudCA9IGFyZ3VtZW50cy5zaXplKCkgPCBtX3JlZ2lzdGVy
QXJndW1lbnRzLnNpemUoKSA/IDAgOiBhcmd1bWVudHMuc2l6ZSgpIC0gbV9yZWdpc3RlckFyZ3Vt
ZW50cy5zaXplKCk7CisgICAgICAgIHByb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMo
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgaGVhZGVyU2l6
ZSArIChzdGFja0FyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSkpOworCisgICAgICAg
IHVuc2lnbmVkIG9mZnNldCA9IGhlYWRlclNpemU7CisgICAgICAgIFZlY3RvcjxCMzo6Q29uc3Ry
YWluZWRWYWx1ZT4gY29uc3RyYWluZWRBcmd1bWVudHM7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEIzOjpWYWx1
ZVJlcCByZXA7CisgICAgICAgICAgICBpZiAoaSA8IG1fcmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgp
KQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1ZVJlcDo6cmVnKG1fcmVnaXN0ZXJBcmd1
bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpW
YWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXQpOworICAgICAgICAgICAgY29uc3RyYWluZWRB
cmd1bWVudHMuYXBwZW5kKEIzOjpDb25zdHJhaW5lZFZhbHVlKGFyZ3VtZW50c1tpXSwgcmVwKSk7
CisgICAgICAgICAgICBvZmZzZXQgPSB1cGRhdGVPZmZzZXQob2Zmc2V0LCBhcmd1bWVudHNbaV0t
PnR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCByZXR1
cm5UeXBlLCBvcmlnaW4pOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3Ry
YWluZWRBcmd1bWVudHMpOworICAgICAgICBwYXRjaHBvaW50RnVuY3RvcihwYXRjaHBvaW50KTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CisgICAgICAg
ICAgICBqaXQuYWRkUHRyKAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKC1wYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0
cih0YXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgfSk7CisKKworICAg
ICAgICB9KTsKKworICAgICAgICBpZiAocmV0dXJuVHlwZSAhPSBCMzo6Vm9pZCkKKyAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBjb25zdCBWZWN0b3I8R1BSUmVnPiBtX3JlZ2lzdGVyQXJndW1lbnRzOwogICAgIGNvbnN0
IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBjb25zdCBSZWdpc3RlclNl
dCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7CiB9OwogCi1pbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09m
ZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlKQoraW5saW5lIHVuc2lnbmVkIG5leHRK
U0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgQjM6OlR5cGUpCiB7CiAgICAgcmV0dXJu
IGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZvcm1hdC5oCmluZGV4IDdhMDQxMzdlM2M3MGYxODI0NzEwYWNkOTg4NDdmNzIx
NTYyNGQwMWQuLmVmNTY4YWY5NmRkNzEzMmVmNzgwYzcyOWQ2YzMzMTU2ZWY4ODYwNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJC
M0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMjYsNiArMTI3LDExIEBAIHN0cnVjdCBGdW5jdGlvbklu
Zm9ybWF0aW9uIHsKICAgICBzaXplX3QgZW5kOwogfTsKIAorc3RydWN0IEZ1bmN0aW9uQ29tcGls
YXRpb24geworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGNvZGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4ganNFbnRyeVBvaW50OworfTsKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggYWI4MmJlOTgwMjVhZDJmNTViZTIwZjJlMDMzYTYxZmFlNGFjZDhlNS4uYWJiYmNlMDJmMDBi
MmU4YTJlNjYyMjgzNWZkZmRjMDMzNjgzM2ZjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTE1NCw2ICsxNTQsMzkgQEAgYm9vbCBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9P
UChDUkVBVEVfQ0FTRSkgeworICAgICAgICAvLyBUT0RPOiBXaGF0IGRvIEkgZG8gd2l0aCB0aGlz
PworICAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50
MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50
MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVz
dWx0OworICAgICAgICBpZiAoIW1fY29udGV4dC5sb2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+
KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpIHsKKyAgICAgICAgLy8gVE9ETzogV2hhdCBkbyBJIGRvIHdpdGggdGhpcz8KKyAg
ICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFs
aWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qg
b2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJl
c3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5z
dG9yZShzdGF0aWNfY2FzdDxTdG9yZU9wVHlwZT4ob3ApLCBvZmZzZXQsIHBvaW50ZXIsIHZhbHVl
KTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAgdWludDMy
X3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2Y3Mzcx
Yzk4YmY2NmU5M2UyZWJmYzgwZGM2NmJlMmQyMzNlZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK01lbW9yeTo6TWVtb3J5
KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVu
c2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycykKKzogbV9zaXplKHN0YXJ0aW5nU2l6ZSkKKywg
bV9tYXhTaXplKG1heFNpemUpCit7CisgICAgQVNTRVJUKHBpbm5lZFNpemVSZWdpc3RlcnMuc2l6
ZSgpID4gMCk7CisgICAgLy8gUGVyaGFwcyB3ZSBzaG91bGQgdHJ5IE1BUF8zMkJJVCBvbiBYODYt
NjQgc2luY2UgdGhhdCBtaWdodCBhbGxvdyBCMyB0byBlbWl0IGJldHRlciBMb2Fkcy9TdG9yZXMu
CisgICAgdm9pZCogcmVzdWx0ID0gbW1hcChudWxscHRyLCBtYXhTaXplLCBQUk9UX05PTkUsIE1B
UF9QUklWQVRFIHwgTUFQX0FOT04sIDAsIDApOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobXByb3RlY3QocmVzdWx0LCBzdGFydGluZ1NpemUsIFBST1RfUkVB
RCB8IFBST1RfV1JJVEUpKSB7CisgICAgICAgIG11bm1hcChyZXN1bHQsIG1heFNpemUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0
ZXJzID0gcGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgKyAxOworICAgIGpzY0NhbGxpbmdDb252
ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7Cisg
ICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmIChncHIgPT0gQ0NhbGxI
ZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciB8fCBncHIgPT0gQ0NhbGxIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3RlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFyZW1h
aW5pbmdQaW5uZWRSZWdpc3RlcnMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChy
ZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgeworICAgICAgICAgICAgbV9waW5uZWRSZWdp
c3RlcnMuYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7CisgICAgICAgICAgICByZW1haW5pbmdQaW5u
ZWRSZWdpc3RlcnMtLTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3Bpbm5lZFJlZ2lz
dGVycy5zaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZVJlZ2lzdGVyc1stLXJl
bWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyAtIDFdIH0pOworICAgIH0pOworCisgICAgQVNTRVJUKCFy
ZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpOworICAgIG1fbWVtb3J5ID0gcmVzdWx0OworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworfSAvLyBuYW1lc3BhY2UgV0FTTQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg0NTgyNTZlOWY1ODIwNGJkOTZhOWRhMDRkZWY5OWE1ZTc0ZGMzZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAi
V0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK3N0cnVjdCBQaW5uZWRTaXplUmVnaXN0
ZXJJbmZvIHsKKyAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyOworICAgIHVuc2lnbmVkIHNpemVPZmZz
ZXQ7Cit9OworCitzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZvIHsKKyAgICBWZWN0b3I8UGlubmVk
U2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKKyAgICBHUFJSZWcgYmFzZU1lbW9yeVBv
aW50ZXI7Cit9OworCitjbGFzcyBNZW1vcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1l
bW9yeSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBNZW1v
cnkoKSA9IGRlZmF1bHQ7CisgICAgTWVtb3J5KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMy
X3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycyk7
CisKKyAgICB+TWVtb3J5KCkKKyAgICB7CisgICAgICAgIGlmIChtX21lbW9yeSkKKyAgICAgICAg
ICAgIG11bm1hcChtX21lbW9yeSwgbV9tYXhTaXplKTsKKyAgICB9CisKKyAgICB2b2lkKiBtZW1v
cnkoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeTsgfQorICAgIHVpbnQzMl90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5l
ZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkUmVnaXN0ZXJzOyB9CisKKyAgICBi
b29sIGdyb3dNZW1vcnkodWludDMyX3QgbmV3U2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X21lbW9yeSk7CisgICAgICAgIGlmIChuZXdTaXplID4gbV9tYXhTaXplKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiAhbXByb3RlY3QobV9tZW1vcnksIG5ld1Np
emUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwgbV9zaXpl
KTsgfQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkKiBtX21lbW9yeSB7IG51bGxwdHIgfTsKKyAg
ICBQaW5uZWRSZWdpc3RlckluZm8gbV9waW5uZWRSZWdpc3RlcnM7CisgICAgdWludDMyX3QgbV9z
aXplIHsgMCB9OworICAgIHVpbnQzMl90IG1fbWF4U2l6ZSB7IDAgfTsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1MWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKaW5kZXggNWUw
NTNhNWE3OTAzYTU0ZWI4NjQ1NjQ2ODJlM2U5ZDE3MTBiMjE2NC4uMThmMmJkMzQ2OGIwYzA1YWZj
MzdkMDZiNjg3MjJjNTBiMGQ1NWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTI4LDEwICsyOCwxMyBAQAogCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiV0FT
TUZvcm1hdC5oIgogI2luY2x1ZGUgIldBU01PcHMuaCIKICNpbmNsdWRlICJXQVNNU2VjdGlvbnMu
aCIKIAorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V0FTTSB7CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTYyLDE1ICs2
NSwxNiBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgdG8gcGFyc2UgbmV4dCBzZWN0aW9uIGF0
IG9mZnNldDogIiwgbV9vZmZzZXQpOwogCi0gICAgICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rp
b24gPSBTZWN0aW9uczo6VW5rbm93bjsKICAgICAgICAgdWludDhfdCBzZWN0aW9uQnl0ZTsKICAg
ICAgICAgaWYgKCFwYXJzZVVJbnQ3KHNlY3Rpb25CeXRlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2dMbigiU2Vj
dGlvbiBieXRlOiAiLCBzZWN0aW9uQnl0ZSk7CisKKyAgICAgICAgU2VjdGlvbnM6OlNlY3Rpb24g
c2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICBpZiAoc2VjdGlvbkJ5dGUpIHsK
LSAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA+PSBTZWN0aW9uczo6VW5rbm93bikKLSAgICAg
ICAgICAgICAgICBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247Ci0gICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICBpZiAoc2VjdGlvbkJ5dGUgPCBTZWN0aW9uczo6VW5rbm93bikKICAgICAg
ICAgICAgICAgICBzZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VjdGlvbnM6OlNlY3Rpb24+KHNlY3Rp
b25CeXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVpbnQzMl90IHNlY3Rpb25O
YW1lTGVuZ3RoOwpAQCAtOTYsNiArMTAwLDE1IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgp
CiAgICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fb2Zmc2V0ICsgc2VjdGlvbkxlbmd0aDsKIAogICAg
ICAgICBzd2l0Y2ggKHNlY3Rpb24pIHsKKworICAgICAgICBjYXNlIFNlY3Rpb25zOjpNZW1vcnk6
IHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
UGFyc2luZyBNZW1vcnkuIik7CisgICAgICAgICAgICBpZiAoIXBhcnNlTWVtb3J5KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIFNlY3Rpb25zOjpGdW5jdGlvblR5cGVzOiB7CiAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgdHlwZXMuIik7
CkBAIC0xNDMsNiArMTU2LDM1IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSgpCit7CisgICAg
dWludDMyX3QgbWF4UGFnZU51bSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSAvIDY0IC8gS0I7CisgICAgdWludDhfdCBmbGFnczsKKyAgICBpZiAoIXBhcnNlVmFyVUludDEo
ZmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50MzJfdCBzaXplOworICAg
IGlmICghcGFyc2VWYXJVSW50MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoc2l6ZSA+IG1heFBhZ2VOdW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQz
Ml90IG1heCA9IG1heFBhZ2VOdW07CisgICAgaWYgKGZsYWdzKSB7CisgICAgICAgIGlmICghcGFy
c2VWYXJVSW50MzIobWF4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KHNpemUgPiBtYXggfHwgbWF4ID4gbWF4UGFnZU51bSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBtYXggKj0gNjQgKiBLQjsKKyAgICBzaXplICo9IDY0ICogS0I7CisK
KyAgICBWZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07CisgICAgbV9tZW1vcnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeT4obWF4UGFnZU51bSAqIDY0ICogS0IsIG1heFBhZ2VO
dW0gKiA2NCAqIEtCLCBwaW5uZWRTaXplcyk7CisgICAgcmV0dXJuIG1fbWVtb3J5LT5tZW1vcnko
KTsKK30KKwogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlcygpCiB7CiAgICAg
dWludDMyX3QgY291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNTW9kdWxlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxl
UGFyc2VyLmgKaW5kZXggNDYwYmU4ZmJiMzZmMDJmYWY0YWQ1MzhiMWNlNTJiMmVkNTEyNTRmZC4u
NGRkODQwMzJhYzJjOWRhODE1M2Y0NmMxNGM0ZDM4MGQ4MTZjZTVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIldBU01PcHMuaCIKKyNpbmNsdWRl
ICJXQVNNTWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTVBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNDUsMTggKzQ2LDE5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIHBhcnNlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8RnVuY3Rpb25JbmZvcm1h
dGlvbj4mIGZ1bmN0aW9uSW5mb3JtYXRpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQorICAg
IGNvbnN0IFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9y
eT4mIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5OyB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VNZW1vcnkoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUZ1bmN0aW9uVHlwZXMoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRnVuY3Rpb25EZWZpbml0aW9ucygpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRnVuY3Rpb25EZWZpbml0aW9uKHVpbnQzMl90IG51bWJlcik7Ci0gICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRXhwcmVzc2lvbihPcFR5cGUpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+
IG1fZnVuY3Rpb25zOwogICAgIFZlY3RvcjxTaWduYXR1cmU+IG1fc2lnbmF0dXJlczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBtX21lbW9yeTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3Bz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKaW5kZXggMzBhZWNlNTk5
ODQ2YmFjODliZjkzZmVmZDQ5ZmQyNTc5YzFiNmZjMy4uNzExMTdlNmJlNmMwYmIwM2I2MzUwZjQ0
NDIyNWRhZDcyNTE3NjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU9wcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApAQCAt
MTAzLDExICsxMDMsMzggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKICAgICBt
YWNybyhJNjRMZVUsIDB4NmQsIEJlbG93RXF1YWwpIFwKIAogCisjZGVmaW5lIEZPUl9FQUNIX1dB
U01fTUVNT1JZX0xPQURfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJMzJMb2FkOFMsIDB4MjAsIE5B
KSBcCisgICAgbWFjcm8oSTMyTG9hZDhVLCAweDIxLCBOQSkgXAorICAgIG1hY3JvKEkzMkxvYWQx
NlMsIDB4MjIsIE5BKSBcCisgICAgLyogbWFjcm8oSTMyTG9hZDE2VSwgMHgyMywgTkEpICovIFwK
KyAgICBtYWNybyhJNjRMb2FkOFMsIDB4MjQsIE5BKSBcCisgICAgbWFjcm8oSTY0TG9hZDhVLCAw
eDI1LCBOQSkgXAorICAgIG1hY3JvKEk2NExvYWQxNlMsIDB4MjYsIE5BKSBcCisgICAgLyogbWFj
cm8oSTY0TG9hZDE2VSwgMHgyNywgTkEpICovIFwKKyAgICBtYWNybyhJNjRMb2FkMzJTLCAweDI4
LCBOQSkgXAorICAgIG1hY3JvKEk2NExvYWQzMlUsIDB4MjksIE5BKSBcCisgICAgbWFjcm8oSTMy
TG9hZCwgMHgyYSwgTkEpIFwKKyAgICBtYWNybyhJNjRMb2FkLCAweDJiLCBOQSkgXAorCisKKyNk
ZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJ
MzJTdG9yZTgsIDB4MmUsIE5BKSBcCisgICAgbWFjcm8oSTMyU3RvcmUxNiwgMHgyZiwgTkEpIFwK
KyAgICBtYWNybyhJNjRTdG9yZTgsIDB4MzAsIE5BKSBcCisgICAgbWFjcm8oSTY0U3RvcmUxNiwg
MHgzMSwgTkEpIFwKKyAgICBtYWNybyhJNjRTdG9yZTMyLCAweDMyLCBOQSkgXAorICAgIG1hY3Jv
KEkzMlN0b3JlLCAweDMzLCBOQSkgXAorICAgIG1hY3JvKEk2NFN0b3JlLCAweDM0LCBOQSkgXAor
CisKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01f
U1BFQ0lBTF9PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1h
Y3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChtYWNybykgXAotICAgIEZPUl9FQUNI
X1dBU01fQklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3Jv
KSBcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXAorICAgIEZPUl9F
QUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKQogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZB
TFVFKG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAKQEAgLTEyMyw2ICsxNTAsMTQgQEAgZW51
bSBjbGFzcyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNIX1dBU01fVU5BUllf
T1AoQ1JFQVRFX0VOVU1fVkFMVUUpCiB9OwogCitlbnVtIGNsYXNzIExvYWRPcFR5cGUgOiB1aW50
OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKENSRUFURV9FTlVNX1ZBTFVF
KQorfTsKKworZW51bSBjbGFzcyBTdG9yZU9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNI
X1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENS
RUFURV9FTlVNX1ZBTFVFCiAKIGlubGluZSBib29sIGlzQ29udHJvbE9wKE9wVHlwZSBvcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcAppbmRleCA3YmQ2MGQyM2YxMWEyOWFj
ZTFlMzdhNjE4NzVmZTRiNWNmMGRiY2I5Li5hMDgzNzM4NTg0ZDU2NjkyNmEyNTIyZGI5MWNkNmM5
NGY4ZTZhNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxh
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiV0FT
TUIzSVJHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNp
bmNsdWRlICJXQVNNTW9kdWxlUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIApA
QCAtNTMsOCArNTQsOSBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJj
ZSkKICAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gOiBtb2R1bGVQYXJz
ZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3RhcnRpbmcgYXQ6ICIsIGluZm8u
c3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBpbmZvKSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQocGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2UsIG1vZHVsZVBhcnNlci5tZW1vcnkoKS5n
ZXQoKSwgaW5mbykpOwogICAgIH0KKyAgICBtZW1vcnkgPSBXVEZNb3ZlKG1vZHVsZVBhcnNlci5t
ZW1vcnkoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTVBsYW4uaAppbmRleCBkM2M5ZTIyYTVhYmExNzI2NDNmMzc5MTYwYzM4Yjhl
NGI0OTJiMThjLi5iODQ1ZWUxNDg5NzhmOTYwMTA3NjkwNjQwYTVkMTBiNmZjN2YzNTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgKQEAgLTI5LDIzICsyOSwyMCBAQAogCiAj
aW5jbHVkZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUg
IldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3BhY2UgQjMg
ewotY2xhc3MgQ29tcGlsYXRpb247Ci19IC8vIG5hbWVzcGFjZSBCMwotCi1uYW1lc3BhY2UgV0FT
TSB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00geworY2xhc3MgTWVtb3J5OwogCiAv
LyBUT0RPOiBUaGlzIHNob3VsZCBjcmVhdGUgYSBXQVNNIE1vZHVsZSBub3QgYSBsaXN0IG9mIGZ1
bmN0aW9ucy4KIGNsYXNzIFBsYW4gewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBs
YW4oVk0mLCBWZWN0b3I8dWludDhfdD4gc291cmNlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPj4gcmVzdWx0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8RnVuY3Rpb25Db21waWxhdGlvbj4+IHJlc3VsdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVt
b3J5PiBtZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAppbmRleCA1M2U5MzU2ZTIzOGZhNDJjNWI1
ODcxMDk5MzZiNTcwMDhlN2M2Nzk5Li4wN2M3MmQ0MWQzYmVlZGNkMTcyMzhhOGMyMDA0MjMyNzUx
M2I0NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaApAQCAt
MzMsNiArMzMsNyBAQCBzdHJ1Y3QgU2VjdGlvbnMgewogICAgIGVudW0gU2VjdGlvbiA6IHVpbnQ4
X3QgewogICAgICAgICBGdW5jdGlvblR5cGVzID0gMSwKICAgICAgICAgU2lnbmF0dXJlcyA9IDMs
CisgICAgICAgIE1lbW9yeSA9IDUsCiAgICAgICAgIERlZmluaXRpb25zID0gMTAsCiAgICAgICAg
IFVua25vd24KICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290687</attachid>
            <date>2016-10-04 19:32:45 -0700</date>
            <delta_ts>2016-10-05 09:26:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20161004192934.patch</filename>
            <type>text/plain</type>
            <size>95205</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTJkOThlMTg1MGI5ODMxMDJiZGU1YWE0YmJlN2Y2MjFlMTcwOWUxLi4yNDg0M2FmMGZjOWIxY2Q5
MDc2Yzc4YmJkZWZlNDhmNDMzMGQ4ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIEN1cnJlbnRseSwgQjMgb25seSBiYXJlbHkgd29y
a3Mgd2l0aCBwaW5uZWQgdmFsdWVzIGJlY2F1c2UKKyAgICAgICAgd2UgY2Fubm90IGNoYW5nZSB0
aGUgc2l6ZSBvZiBtZW1vcnkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RXQVNN
LmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Y3JlYXRl
SlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAg
ICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246Oml0
ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6c2V0dXBDYWxs
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAgICogd2FzbS9X
QVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6
Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAgICAgKEpTQzo6
V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVtb3J5OjptZW1v
cnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAgICAoSlNDOjpX
QVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9y
eTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9yeSk6CisgICAg
ICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKiB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6Cisg
ICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAg
KiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6Cisg
ICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6
CisKIDIwMTYtMTAtMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogZG9uJ3Qgc3luY2hyb25vdXNseSBzZW5kIGEgbGlzdGluZyBtZXNzYWdl
IGlmIHdlIG1pZ2h0IG5lZWQgdG8gcXVlcnkgX1dLQXV0b21hdGlvbkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQ3Y2RlZmQzODFkNGFjNmIwMDJkMmY0NWM1
OGU2N2NmZjY4MWJjYi4uODY5OWU2MTM4NTNmZGNhYWFmMTVlNmFhODE5YWE4OTMzZDhjODlkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDYgKzg1OCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUuY3BwCiAgICAg
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKICAgICB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlv
bi5jcHAKKyAgICB3YXNtL1dBU01NTWVtb3J5LmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNl
ci5jcHAKICAgICB3YXNtL1dBU01QbGFuLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKaW5k
ZXggODMxZDA5NjAwNDIxY2ZiYjQzMTQyYTNkOTk5YTRkYzY5NjQ5MGJlZi4uZjU0MDFmYzkyY2Ri
MWJhM2RiMjZiN2E5NmQ3YjJjYjUwY2M2Y2U5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwpA
QCAtMzEsNiArMzEsNyBAQCBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc19taW5pZG9tID0gZW50
aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFpciA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhcGkgPSBl
bnRpdGxlbWVudHMucGxpc3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YjMgPSBl
bnRpdGxlbWVudHMucGxpc3Q7CitDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0V0FTTSA9
IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RSZWdF
eHAgPSBlbnRpdGxlbWVudHMucGxpc3Q7CiAKIFNLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxM
XyQoRk9SQ0VfVE9PTF9JTlNUQUxMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRjNDQyNmViZWNiODBlZmRiZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLmFkYjA4ODU3ZDJlMzJm
MDEzYzMzYzY3NjAyNmY0NTk0M2NhMzY3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMjEyLDYgKzEyMTIsOCBAQAogCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yLmggKi87IH07CiAJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBK
U1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlD
NiAvKiBBUElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07CisJCTUz
NTU1NzE0MUQ5RDlFQTUwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0IgLyog
V0FTTU1lbW9yeS5oICovOyB9OworCQk1MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1l
bW9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi87IH07CiAJCTUzNzBC
NEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZD
IC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0MUJGMjVFQTIw
MDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgg
Ki87IH07CiAJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi87IH07CkBAIC0zNDQyLDYgKzM0NDQsOCBA
QAogCQk1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzRDNDU3RDFCQzcy
NTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNTI5QTRCMUM0NTdCNzUwMDBCNDlD
NiAvKiBBUElVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVdGls
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4
M0IgLyogV0FTTU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNN
TWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzE1MUQ5REZBMzIw
MDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdBU01NZW1vcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mzcw
QjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVG
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NTcsNiArNTY2MSw4
IEBACiAJCQkJNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLywKIAkJCQk3
QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovLAogCQkJCTUzRjQwRThB
MUQ1OTAxQkIwMDk5QTFCNiAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLywKKwkJCQk1MzU1NTcx
NTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi8sCisJCQkJNTM1NTU3MTMxRDlE
OUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLywKIAkJCQk1M0Y0MEU5NjFENUE3QkVDMDA5
OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8sCiAJCQkJNTNGNDBFOTQxRDVBN0FFRjAw
OTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLywKIAkJCQk1MzEzNzRCRTFENUNFOTUwMDBB
RjdBMEIgLyogV0FTTVBsYW4uY3BwICovLApAQCAtNzgxNCw2ICs3ODIwLDcgQEAKIAkJCQkxNDJF
MzEzODEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTM1NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjMyQkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTUyLDYgKzkxNTksNyBAQAogCQkJCTBGNUExMjczMTky
RDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0M4
MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhGMTQzMzFBREYwOTAxMDBFRDc5MkMgLyogREZHRXBvY2guY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEE5Nzc0MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWls
ZWRGaW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFdBU00uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNw
cAppbmRleCBkOWVkOTFmZTE4NGRlYWIxMTc2OTk1YzhiZDY2OWNmYzlkOGU0YzZkLi4yYzNjOWZh
YjZiMzBiZGZmOWQ5MzFkNGEyYTdhYzQ4NjkwOWFlYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
V0FTTS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2lu
Y2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXQVNN
TWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTVBsYW4uaCIKKwogI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CiAjaW5jbHVkZSA8d3RmL0xFQkRlY29kZXIuaD4KIApAQCAtMjQyLDggKzI0NCw0NjkgQEAg
c3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKIHsKICAgICB7CiAgICAgICAgIC8vIEdlbmVyYXRl
ZCBmcm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAg
ICAgIC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJh
bSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgKGk2NC5zdG9yZSAoZ2V0X2xv
Y2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGk2NC5sb2Fk
IChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4
NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAweDAxLCAw
eDAxLCAweDAyLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAw
LCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
YiwgMHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEs
IDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4
ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAw
eDE0LAorICAgICAgICAgICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgwZgorICAg
ICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChw
bGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJv
eCgyKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisg
ICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVsZQorICAg
ICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4
X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAg
ICAvLyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAg
ICAgLy8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8g
ICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7Cisg
ICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAw
LCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAg
ICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAg
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMy
LCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAw
eDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgw
MSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwg
MHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4
MDIsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZt
LCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4u
cmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29t
cGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9
KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94
KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206
CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAg
ICAgLy8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBh
cmFtICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAv
LyAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxv
Y2sKKyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChp
MzIuZ2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8g
ICAgICAgIChpMzIuc3RvcmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9s
b2NhbCAkaSkgKGkzMi5jb25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAg
ICAgKHNldF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkK
KyAgICAgICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAv
LyAgICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisg
ICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAg
ICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAw
eDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAg
ICAgMHgwMywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAw
eDc0LCAweDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAw
LCAweDBhLCAweGIyLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwg
MHhhYywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgw
MCwgMHgxNSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQs
IDB4MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4
MDMsIDB4MTAsIDB4MDQsIDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMz
LCAweDAyLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAw
eDA2LCAweDAwLCAweDBmLAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9
OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJl
c3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkp
OworCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3Qp
OworICAgICAgICB1aW50MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFu
Lm1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsK
KyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1l
bW9yeVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsg
bGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisg
ICAgICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90
KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0g
c2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAx
MDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAg
ICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXki
KSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2Nh
bCAkaSBpMzIpCisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQor
ICAgICAgICAvLyAgICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAv
LyAgICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxl
bmd0aCkpKQorICAgICAgICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2Nh
bCAkcCkgKGdldF9sb2NhbCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAg
KHNldF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAg
ICAgICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAg
ICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAg
ICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAg
ICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAg
MHgwMywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0
LCAweDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAw
eDBhLCAweGFmLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhh
OSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwg
MHgxNSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4
MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMs
IDB4NDAsIDB4MTQsIDB4MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAw
eDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBm
LCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFsw
XSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29y
cmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9m
ZnNldCA9IDE7CisgICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihwbGFuLm1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3Ro
KSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAg
IENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9y
eVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9m
ZnNldCA9IDU7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hF
Q0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1
dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAg
Ly8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAg
KGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBp
MzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwg
JHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4
X3MgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAg
KQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwg
MHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2
ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwg
MHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAs
IDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAw
eDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIp
OworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5t
ZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEw
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8g
ICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9z
IikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9y
ZTggKGkzMi5jb25zdCA4KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJu
IChpMzIubG9hZDhfcyAoaTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAg
IC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAg
ICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAw
eDg2LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgw
MSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAw
eDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgw
MCwgMHgwMCwgMHgxMCwgMHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDks
IDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAg
ICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7Cisg
ICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHku
Iik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0p
LCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8g
R2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkg
MSkKKyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkz
MikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3Jl
IChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAo
aTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAg
KQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwg
MHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIs
IDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2
ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwg
MHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMs
IDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAw
eDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIp
OworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
MTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KC0xMiksIGJveChwbGFuLm1lbW9yeS0+c2l6ZSgpIC0gc2l6ZW9mKHVpbnQ2NF90KSkg
fSksIC0xMik7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAg
ICAgICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1
bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIp
IChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAo
Z2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0X2xvY2Fs
ICRwdHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAw
eDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4
MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEs
IDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4
MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4
LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAor
ICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwKKyAgICAg
ICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKwor
ICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQu
c2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4o
Ik1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFT
SCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEw
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgLy8gR2VuZXJhdGVkIGZyb206CiAgICAgICAgIC8vICAgIChtb2R1bGUKLSAgICAgICAgLy8g
ICAgIChmdW5jIChleHBvcnQgImR1bWItZXEiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMy
KSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAg
IChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkz
MikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChz
ZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAg
ICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAo
Z2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChp
MzIuc3RvcmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9sb2NhbCAkaSkg
KGkzMi5jb25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9s
b2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAg
Ly8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICAp
CisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8v
ICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAw
eDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1
LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAw
eGIyLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhYywgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwg
MHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4
MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4MTAs
IDB4MDQsIDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAw
eDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAw
LCAweDBmLAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3QpOworICAgICAg
ICB1aW50MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFuLm1lbW9yeS0+
bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAg
b2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZz
ZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwg
MHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAgIGxl
bmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCg1KSwg
Ym94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVp
bnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAg
ICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5l
cmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9y
eSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0g
JHggaTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIp
CisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAv
LyAgICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAg
KGJyX2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQor
ICAgICAgICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGdl
dF9sb2NhbCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2Nh
bCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8g
ICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisg
ICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAg
ICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAw
LCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgw
MSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAw
eDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGFm
LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgw
MywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQs
IDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4
MTQsIDB4MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDE0
LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAweDA5LCAw
eDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIp
OworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5t
ZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDE7
CisgICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwbGFuLm1l
bW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAg
ICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zm
c2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDU7
CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVt
b3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAr
IGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAg
fQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1v
ZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4
cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1
bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwgJHB0cikgKGdl
dF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGdldF9s
b2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwg
MHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4
MTQsCisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAg
ICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBs
YW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNp
emUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgw
KSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2Vu
ZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1v
cnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFt
ICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGkzMi5j
b25zdCA4KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9h
ZDhfcyAoaTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
MCwgMHgwNSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MGIsIDB4NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZmLCAweDYx
LCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwg
MHgxMCwgMHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAg
ICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAo
cGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAg
ICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAg
ICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNu
J3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAxMDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5jICJkdW1i
LWVxIiAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikKICAgICAgICAg
Ly8gICAgICAoaWYgKGkzMi5lcSAoZ2V0X2xvY2FsICR4KSAoZ2V0X2xvY2FsICR5KSkKICAgICAg
ICAgLy8gICAgICAgKHRoZW4gKGJyIDApKQogICAgICAgICAvLyAgICAgICAoZWxzZSAocmV0dXJu
IChpMzIuY29uc3QgMSkpKSkKQEAgLTI2NSwxNCArNzI4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldB
U01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFz
aC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgw
KSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0p
LCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3go
NikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94
KDApIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJv
eCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBi
b3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDAp
LCBib3goNikgfSksIDEpOwogICAgIH0KIAogICAgIHsKQEAgLTMwNiwxNCArNzY5LDE0IEBAIHN0
YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0p
LCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxKSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYp
IH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgxMDApLCBib3goNikgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDApOwogICAgIH0KIAogCkBAIC0zMzMsNyArNzk2
LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgfSksIDUpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgNSk7CiAgICAgfQogCiAKQEAgLTM1
NCw3ICs4MTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAg
ICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0K
IAogICAgIHsKQEAgLTM3NCw3ICs4MzcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9
KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTM5NCw3ICs4NTcsNyBAQCBzdGF0aWMgdm9pZCBy
dW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9
KSwgMTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTQxMywxMCArODc2LDEw
IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBU
ZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMSkgfSksIDEwMSk7
Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goLTEp
LCBib3goMSl9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXSwgeyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgxKSB9KSwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0p
LCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgxKSB9KSwgMTAxKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KC0xKSwgYm94
KDEpfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJv
eCgxKSB9KSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CiAgICAgfQogCiAgICAg
ewpAQCAtNDQyLDggKzkwNSw4IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTApIH0pLCAxMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMCkgfSksIDEwKTsKICAgICB9CiAKICAg
ICB7CkBAIC00NzgsMTAgKzk0MSwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCkgfSksIDApOwotICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpIH0pLCAx
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgy
KX0pLCAzKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgxMDApIH0pLCA1MDUwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0p
LCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDIpfSksIDMpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgNTA1MCk7CiAgICAg
fQogCiAgICAgewpAQCAtNTIyLDE0ICs5ODUsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3Rz
KCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3go
MSkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDIpOwotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSksIDIpOwot
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBi
b3goMikgfSksIDQpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHsgYm94KDIpLCBib3goNikgfSksIDEyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7Ci0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDEw
MCkgfSksIDEwMDAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSks
IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAyKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEp
LCBib3goMikgfSksIDIpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgNCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgy
KSwgYm94KDYpIH0pLCAxMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgxMDApLCBib3goMTAwKSB9KSwgMTAwMDApOwogICAgIH0KIAogICAgIHsKQEAgLTU3NSwx
NCArMTAzOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAg
ICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgwKSB9
KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMiksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgx
KSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBi
b3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwg
Ym94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiks
IGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIp
LCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKICAgICB9CiAK
IH0KQEAgLTU5Niw3ICsxMDU5LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQog
ICAgIGlmIChvcHRpb25zLm1fcnVuTEVCVGVzdHMpCiAgICAgICAgIHJ1bkxFQlRlc3RzKCk7CiAK
LQogICAgIGlmIChvcHRpb25zLm1fcnVuV0FTTVRlc3RzKSB7CiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwYjcxYzFhZmFh
OTQ0NjE2YmExN2ZlYmZjOTVlZGJjYWM2MGQzY2I0Li4xNDk5ZmYwYmY2YTdjNGJmYjAwMjQ2MDk4
MGNiNzJlMjI5NDE3MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQ29u
c3RQdHJWYWx1ZS5oIgogI2luY2x1ZGUgIkIzRml4U1NBLmgiCisjaW5jbHVkZSAiQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAi
QjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCkBAIC0zNyw2ICszOSw3
IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV0FTTUNhbGxpbmdD
b252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCisjaW5jbHVkZSAi
V0FTTU1lbW9yeS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiB2b2lkIGR1bXBQcm9j
ZWR1cmUodm9pZCogcHRyKQpAQCAtMTY1LDE4ICsxNjgsMjUgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgVmVjdG9yPFZhcmlhYmxlKiwgMT4gUmVzdWx0TGlzdDsKICAgICBzdGF0aWMgY29uc3RleHBy
IEV4cHJlc3Npb25UeXBlIGVtcHR5RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2Vu
ZXJhdG9yKFByb2NlZHVyZSYpOworICAgIEIzSVJHZW5lcmF0b3IoTWVtb3J5KiwgUHJvY2VkdXJl
Jik7CiAKICAgICB2b2lkIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mKTsKICAgICB2
b2lkIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25z
dGFudChUeXBlLCB1aW50NjRfdCk7CiAKKyAgICAvLyBMb2NhbHMKICAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAorICAgIC8vIE1lbW9yeQorICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIGxvYWQoTG9hZE9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9u
VHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdG9yZShTdG9yZU9wVHlwZSwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9u
VHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisKKyAgICAvLyBCYXNpYyBvcGVy
YXRvcnMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUs
IEV4cHJlc3Npb25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BU
eXBlLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCisgICAg
Ly8gQ29udHJvbCBmbG93CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEJs
b2NrKFR5cGUgc2lnbmF0dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkTG9vcChUeXBlIHNpZ25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZElmKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgVHlwZSBzaWduYXR1cmUpOwpAQCAt
MTkxLDE2ICsyMDEsMjcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29u
dHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9u
U3RhY2spOwogCiBwcml2YXRlOgorICAgIEV4cHJlc3Npb25UeXBlIGVtaXRDaGVja0FuZFByZXBh
cmVQb2ludGVyKHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMy
X3Qgc2l6ZU9mT3ApOworICAgIEV4cHJlc3Npb25UeXBlIGVtaXRMb2FkT3AoTG9hZE9wVHlwZSwg
T3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyKTsKKyAgICB2b2lkIGVtaXRTdG9yZU9wKFN0
b3JlT3BUeXBlLCBPcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBl
IHZhbHVlKTsKKwogICAgIHZvaWQgdW5pZnkoVmFyaWFibGUqIHRhcmdldCwgY29uc3QgRXhwcmVz
c2lvblR5cGUgc291cmNlKTsKICAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0IEV4
cHJlc3Npb25MaXN0JiByZXN1bHRTdGFjaywgUmVzdWx0TGlzdCYgc3RhY2spOwogCisgICAgTWVt
b3J5KiBtX21lbW9yeTsKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCYXNpY0Jsb2NrKiBt
X2N1cnJlbnRCbG9jazsKICAgICBWZWN0b3I8VmFyaWFibGUqPiBtX2xvY2FsczsKKyAgICAvLyBG
SVhNRTogVGhpcyBwcm9iYWJseSBuZWVkcyB0byBiZSBhIHZhcmlhYmxlIG9yIHNvbWV0aGluZywg
Zml4IGl0IHdoZW4gd2UgY2FuIGFjdHVhbGx5IGNoYW5nZSBtZW1vcnkgc2l6ZS4KKyAgICAvLyBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MjcKKyAgICBW
YWx1ZSogbV9tZW1vcnlCYXNlIHsgbnVsbHB0ciB9OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
c3VwcG9ydCBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIuIHNlZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgorICAgIFZhbHVlKiBtX21lbW9yeVNpemUg
eyBudWxscHRyIH07CiB9OwogCi1CM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFByb2NlZHVy
ZSYgcHJvY2VkdXJlKQotICAgIDogbV9wcm9jKHByb2NlZHVyZSkKK0IzSVJHZW5lcmF0b3I6OkIz
SVJHZW5lcmF0b3IoTWVtb3J5KiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2VkdXJlKQorICAgIDog
bV9tZW1vcnkobWVtb3J5KQorICAgICwgbV9wcm9jKHByb2NlZHVyZSkKIHsKICAgICBtX2N1cnJl
bnRCbG9jayA9IG1fcHJvYy5hZGRCbG9jaygpOwogfQpAQCAtMjIyLDIyICsyNDMsMjAxIEBAIHZv
aWQgQjNJUkdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYgdHlwZXMp
CiAgICAgICAgICAgICBtX2xvY2Fsc1tpXSA9IGFyZ3VtZW50VmFyaWFibGU7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBP
cmlnaW4oKSwgYXJndW1lbnRWYXJpYWJsZSwgYXJndW1lbnQpOwogICAgICAgICB9KTsKKworICAg
IGlmIChtX21lbW9yeSkgeworICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBhZGQgdGhlIGNhbGxp
bmcgY29udmVudGlvbiB3ZSBzaG91bGQgaGF2ZSB0d28gZW50cnlwb2ludHMgYW5kIHdlIHNob3Vs
ZCBjaGFuZ2UgdGhlc2UgdG8gcmVnaXN0ZXIgYXJndW1lbnRzLgorICAgICAgICAvLyBzZWU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MjcKKyAgICAgICAgbV9t
ZW1vcnlCYXNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPiht
X3Byb2MsIE9yaWdpbigpLCBtX21lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuYmFzZU1lbW9yeVBv
aW50ZXIpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9u
ZSBzaXplIHJlZ2lzdGVyLiBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjI5NTIKKyAgICAgICAgbV9tZW1vcnlTaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBtX21lbW9yeS0+cGlubmVk
UmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVyc1swXS5zaXplUmVnaXN0ZXIpOworICAgIH0KIH0KIAot
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3Qg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCitib29sIEIzSVJHZW5lcmF0b3I6OmdldExv
Y2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIEFTU0VS
VChtX2xvY2Fsc1tpbmRleF0pOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgbV9sb2NhbHNbaW5k
ZXhdKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gQjNJ
UkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KQorYm9vbCBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lv
blR5cGUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpTZXQsIE9yaWdp
bigpLCBtX2xvY2Fsc1tpbmRleF0sIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5s
aW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcih1aW50
MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90IHNpemVPZk9wZXJh
dGlvbikKK3sKKyAgICBBU1NFUlQobV9tZW1vcnlCYXNlICYmIG1fbWVtb3J5U2l6ZSk7CisgICAg
Ly8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBhZGQgdGhlIG1lbW9yeU9mZnNldCB0byB0
aGUgcG9pbnRlciB3aXRoIGEgMzJiaXQgYWRkCisgICAgLy8gc28gaWYgaXQgb3ZlcmZsb3dzIHdl
IHN0YXkgd2l0aGluIG91ciBtYXBwZWQgbWVtb3J5LgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
c3VwcG9ydCBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIuIHNlZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgorICAgIFZhbHVlKiBtZW1vcnlPZmZzZXQg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kSW50Q29uc3RhbnQobV9wcm9jLCBPcmlnaW4oKSwgSW50
MzIsIG9mZnNldCk7CisgICAgcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgQWRkLCBPcmlnaW4oKSwgcG9pbnRlciwgbWVtb3J5T2Zmc2V0KTsKKyAgICBw
b2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIs
IE9yaWdpbigpLCBwb2ludGVyKTsKKworICAgIFZhbHVlKiBzaXplT2ZWYWx1ZSA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9yaWdpbigpLCBJbnQ2NCwgc2l6ZU9m
T3BlcmF0aW9uKTsKKyAgICBWYWx1ZSogbGFzdEJ5dGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgT3JpZ2luKCksIHNpemVPZlZhbHVlLCBwb2ludGVyKTsK
KyAgICBWYWx1ZSogb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEFib3ZlLCBPcmlnaW4oKSwgbGFzdEJ5dGUsIG1fbWVtb3J5U2l6ZSk7CisgICAg
Q2hlY2tWYWx1ZSogYm91bmRzQ2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNr
VmFsdWU+KG1fcHJvYywgQ2hlY2ssIE9yaWdpbigpLCBvdXRPZkJvdW5kcyk7CisgICAgYm91bmRz
Q2hlY2stPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsK
KworICAgIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEFkZCwgT3JpZ2luKCksIG1fbWVtb3J5QmFzZSwgcG9pbnRlcik7CisgICAgcmV0dXJuIHBvaW50
ZXI7Cit9CisKK2lubGluZSB1aW50MzJfdCBzaXplT2ZMb2FkT3AoTG9hZE9wVHlwZSBvcCkKK3sK
KyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6CisgICAg
Y2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2Fk
OFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6CisgICAgICAgIHJldHVybiAxOwor
ICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDE2UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQxNlM6CisgICAgICAgIHJldHVybiAyOworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9h
ZDoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlM6CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJNjRMb2FkMzJVOgorICAgICAgICByZXR1cm4gNDsKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQ6CisgICAgICAgIHJldHVybiA4OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCisvLyBGSVhNRTog
QjMgc2hvdWxkIHN1cHBvcnQgSW50NjQgc21hbGwgbG9hZHMgYW5kIDE2LWJpdCB1bnNpZ25lZCBs
b2Fkcy4KK2lubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdExvYWRPcChMb2FkT3BUeXBl
IG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyKQoreworICAgIHN3aXRj
aCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogeworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMs
IG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRM
b2FkOFM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMsIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAg
ICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQz
Miwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2Fk
OFU6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4sIHBvaW50ZXIsIDApOworICAgIH0KKworICAgIGNh
c2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4s
IHBvaW50ZXIsIDApOworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBaRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2Ug
TG9hZE9wVHlwZTo6STMyTG9hZDE2UzogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkMTZTLCBvcmlnaW4sIHBvaW50ZXIs
IDApOworICAgIH0KKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlM6IHsKKyAgICAgICAg
VmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkMTZTLCBvcmlnaW4sIHBvaW50ZXIsIDApOworICAgICAgICByZXR1cm4gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUp
OworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDogeworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJ
bnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQzMlU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsK
KyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
WkV4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQzMlM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsK
KyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
U0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2
NExvYWQ6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgfQorCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6bG9hZChMb2FkT3BUeXBlIG9w
LCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCit7CisgICAgQVNTRVJUKHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisKKyAg
ICByZXN1bHQgPSBlbWl0TG9hZE9wKG9wLCBPcmlnaW4oKSwgZW1pdENoZWNrQW5kUHJlcGFyZVBv
aW50ZXIob2Zmc2V0LCBwb2ludGVyLCBzaXplT2ZMb2FkT3Aob3ApKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2lubGluZSB1aW50MzJfdCBzaXplT2ZTdG9yZU9wKFN0b3JlT3BUeXBlIG9wKQor
eworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTg6Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgorICAgICAgICByZXR1cm4gMTsKKyAgICBj
YXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTE2OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMTY6CisgICAgICAgIHJldHVybiAyOworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3Jl
OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMzI6CisgICAgICAgIHJldHVybiA0Owor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlOgorICAgICAgICByZXR1cm4gODsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworCisvLyBGSVhNRTogV2Ugc2hvdWxkIGp1c3Qgc3VwcG9ydCBhbiBJbnQ2
NCBzdG9yZTguCitpbmxpbmUgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0U3RvcmVPcChTdG9yZU9w
VHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lv
blR5cGUgdmFsdWUpCit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVPcFR5cGU6
Okk2NFN0b3JlODoKKyAgICAgICAgdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIFRydW5jLCBvcmlnaW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7
CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTg6CisgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmU4LCBvcmlnaW4sIHZhbHVl
LCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0
U3RvcmUxNjoKKyAgICAgICAgdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIFRydW5jLCBvcmlnaW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisK
KyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTE2OgorICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlMTYsIG9yaWdpbiwgdmFsdWUs
IHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRT
dG9yZTMyOgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKwor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okkz
MlN0b3JlOgorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIFN0b3JlLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6c3RvcmUoU3RvcmVPcFR5
cGUgb3AsIHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lv
blR5cGUgdmFsdWUpCit7CisgICAgQVNTRVJUKHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisK
KyAgICBlbWl0U3RvcmVPcChvcCwgT3JpZ2luKCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVy
KG9mZnNldCwgcG9pbnRlciwgc2l6ZU9mU3RvcmVPcChvcCkpLCB2YWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGJvb2wgQjNJUkdlbmVyYXRvcjo6dW5hcnlPcChVbmFyeU9wVHlwZSBvcCwg
RXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIHJlc3Vs
dCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgdG9CM09wKG9wKSwg
T3JpZ2luKCksIGFyZyk7CkBAIC00MDMsMTAgKzYwMyw3MCBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6
OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xUeXBlPiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHBy
ZXNzaQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotc3RkOjp1bmlxdWVfcHRyPENvbXBp
bGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwg
RnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKKworc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY3JlYXRlSlNXcmFwcGVyKFZNJiB2bSwgY29uc3Qg
U2lnbmF0dXJlKiBzaWduYXR1cmUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRnVuY3Rpb24s
IE1lbW9yeSogbWVtb3J5KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgLy8gQ2hlY2sgYXJndW1lbnQgY291bnQg
aXMgc2FuZS4KKyAgICAvLyBGSVhNRTogSXMgdGhpcyBzdXBwb3NlZCB0byB0cmFwIGlmIGxlc3Mg
dGhhbiBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzPworICAgIFZhbHVlKiBmcmFtZVBvaW50
ZXIgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4ocHJvYywgQjM6OkZyYW1lUG9pbnRlciwg
T3JpZ2luKCkpOworICAgIFZhbHVlKiBvZmZTZXRPZkFyZ3VtZW50Q291bnQgPSBibG9jay0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICBWYWx1ZSogYXJndW1lbnRDb3VudCA9
IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwg
ZnJhbWVQb2ludGVyLCBvZmZTZXRPZkFyZ3VtZW50Q291bnQpKTsKKworICAgIFZhbHVlKiBleHBl
Y3RlZEFyZ3VtZW50Q291bnQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSk7CisKKyAgICBDaGVja1ZhbHVl
KiBhcmd1bWVudENvdW50Q2hlY2sgPSBibG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2Ms
IENoZWNrLCBPcmlnaW4oKSwKKyAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWJvdmUsIE9yaWdpbigpLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIGFyZ3VtZW50Q291bnQpKTsK
KyAgICBhcmd1bWVudENvdW50Q2hlY2stPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgaml0LmJyZWFr
cG9pbnQoKTsKKyAgICB9KTsKKworICAgIC8vIE1vdmUgbWVtb3J5IHZhbHVlcyB0byB0aGUgYXBw
cm9yaWF0ZSBwbGFjZXMsIGlmIG5lZWRlZC4KKyAgICBWYWx1ZSogYmFzZU1lbW9yeSA9IG51bGxw
dHI7CisgICAgVmVjdG9yPFZhbHVlKj4gc2l6ZXM7CisgICAgaWYgKG1lbW9yeSkgeworICAgICAg
ICBiYXNlTWVtb3J5ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgbWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIFZhbHVlKiBzaXplID0gYmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYml0
d2lzZV9jYXN0PGNoYXIqPihtZW1vcnkpICsgTWVtb3J5OjpvZmZzZXRPZlNpemUoKSkpOworICAg
ICAgICBzaXplcy5yZXNlcnZlQ2FwYWNpdHkobWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXpl
UmVnaXN0ZXJzLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byBpbmZvIDogbWVtb3J5LT5waW5u
ZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBzaXplcy5hcHBlbmQo
YmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgc2l6ZSwKKyAgICAg
ICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGluZm8uc2l6ZU9mZnNldCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEdldCBvdXIg
YXJndW1lbnRzLgorICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3VtZW50czsKKyAgICBqc2NDYWxsaW5n
Q29udmVudGlvbigpLml0ZXJhdGUoc2lnbmF0dXJlLT5hcmd1bWVudHMsIHByb2MsIGJsb2NrLCBP
cmlnaW4oKSwgWyZdIChWYWx1ZSogYXJndW1lbnQsIHVuc2lnbmVkKSB7CisgICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAgIH0pOworCisgICAgLy8gTW92ZSB0aGUgYXJndW1l
bnRzIGludG8gcGxhY2UuCisgICAgVmFsdWUqIHJlc3VsdCA9IGpzY0NhbGxpbmdDb252ZW50aW9u
KCkuc2V0dXBDYWxsKHByb2MsIGJsb2NrLCBPcmlnaW4oKSwgbWFpbkZ1bmN0aW9uLCBhcmd1bWVu
dHMsIHRvQjNUeXBlKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSksIFsmXSAoUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50KSB7CisgICAgICAgIGlmIChtZW1vcnkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChzaXplcy5zaXplKCkgPT0gbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJz
LnNpemUoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShiYXNlTWVtb3J5LCBWYWx1ZVJlcDo6cmVnKG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuYmFz
ZU1lbW9yeVBvaW50ZXIpKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENv
bnN0cmFpbmVkVmFsdWUoc2l6ZXNbaV0sIFZhbHVlUmVwOjpyZWcobWVtb3J5LT5waW5uZWRSZWdp
c3RlcnMoKS5zaXplUmVnaXN0ZXJzW2ldLnNpemVSZWdpc3RlcikpKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQsIGlmIG5lZWVkZWQuCisgICAgaWYgKHNp
Z25hdHVyZS0+cmV0dXJuVHlwZSAhPSBWb2lkKQorICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIEIzOjpSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgIGVsc2UK
KyAgICAgICAgYmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBCMzo6UmV0dXJuLCBP
cmlnaW4oKSk7CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4odm0s
IHByb2MpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4gcGFyc2VB
bmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIE1lbW9yeSogbWVtb3J5
LCBGdW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQogewogICAgIFBy
b2NlZHVyZSBwcm9jZWR1cmU7Ci0gICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KHByb2NlZHVyZSk7
CisgICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KG1lbW9yeSwgcHJvY2VkdXJlKTsKICAgICBGdW5j
dGlvblBhcnNlcjxCM0lSR2VuZXJhdG9yPiBwYXJzZXIoY29udGV4dCwgc291cmNlLCBpbmZvKTsK
ICAgICBpZiAoIXBhcnNlci5wYXJzZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtNDE3LDcgKzY3NywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+
IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBGdQogICAg
IGZpeFNTQShwcm9jZWR1cmUpOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJQ
b3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21w
aWxhdGlvbj4odm0sIHByb2NlZHVyZSwgb3B0TGV2ZWwpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxG
dW5jdGlvbkNvbXBpbGF0aW9uPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uQ29t
cGlsYXRpb24+KCk7CisKKyAgICByZXN1bHQtPmNvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CisgICAgcmVzdWx0LT5qc0VudHJ5UG9p
bnQgPSBjcmVhdGVKU1dyYXBwZXIodm0sIGluZm8uc2lnbmF0dXJlLCByZXN1bHQtPmNvZGUtPmNv
ZGUoKSwgbWVtb3J5KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIz
SVJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJh
dG9yLmgKaW5kZXggOTUxOTZkYmU1NzdkYWFmYWJhOTc4YTU2MDRjOTA2Y2Q2NTViZmM4My4uZjgy
ODJkMGM5NTVjMjZmN2U3YzAxMjQ1Nzk3Yjk5MTZkNGRiOTA0OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCkBAIC0zNSw3ICszNSw5IEBAIGV4
dGVybiAiQyIgdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqKTsKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBXQVNNIHsKIAotc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gcGFyc2VB
bmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+JiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5z
aWduZWQgb3B0TGV2ZWwgPSAxKTsKK2NsYXNzIE1lbW9yeTsKKworc3RkOjp1bmlxdWVfcHRyPEZ1
bmN0aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYs
IE1lbW9yeSosIEZ1bmN0aW9uSW5mb3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmgKaW5kZXggNzg5NTkzMTAyNGE1M2Q2N2Q1
Yzc5Yjk0NGVjZjJiMmI1MmFiMTc0NS4uYjk5MmY0Yjc4N2IyNzlhOGFjOTRhYTllNGZiNzU1YzEz
ZmEyM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxp
bmdDb252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxp
bmdDb252ZW50aW9uLmgKQEAgLTI3LDIzICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5j
bHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCiAj
aW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUu
aCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFs
dWUuaCIKKyNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiV0FTTUZvcm1hdC5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewogCi10eXBlZGVmIHVuc2lnbmVk
ICgqTmV4dE9mZnNldCkodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlwZSB0eXBlKTsKK3R5cGVk
ZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBCMzo6VHlw
ZSB0eXBlKTsKIAotdGVtcGxhdGU8dW5zaWduZWQgb2Zmc2V0LCBOZXh0T2Zmc2V0IHVwZGF0ZU9m
ZnNldD4KK3RlbXBsYXRlPHVuc2lnbmVkIGhlYWRlclNpemUsIE5leHRPZmZzZXQgdXBkYXRlT2Zm
c2V0PgogY2xhc3MgQ2FsbGluZ0NvbnZlbnRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBoZWFkZXJTaXplID0gb2Zmc2V0OwotCiAgICAgQ2FsbGluZ0NvbnZlbnRpb24o
VmVjdG9yPEdQUlJlZz4mJiByZWdpc3RlckFyZ3VtZW50cywgUmVnaXN0ZXJTZXQmJiBjYWxsZWVT
YXZlUmVnaXN0ZXJzKQogICAgICAgICA6IG1fcmVnaXN0ZXJBcmd1bWVudHMocmVnaXN0ZXJBcmd1
bWVudHMpCiAgICAgICAgICwgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdpc3Rl
cnMpCkBAIC02NCwxOCArNjgsNTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIEIzOjpWYWx1
ZSogYWRkcmVzcyA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6QWRkLCBv
cmlnaW4sIGZyYW1lUG9pbnRlciwKICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5l
dzxCMzo6Q29uc3Q2NFZhbHVlPihwcm9jLCBvcmlnaW4sIGN1cnJlbnRPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBhcmd1bWVudCA9IGJsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihw
cm9jLCBCMzo6TG9hZCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSksIG9yaWdpbiwgYWRkcmVz
cyk7Ci0gICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCA9IHVwZGF0ZU9mZnNldChjdXJyZW50
T2Zmc2V0LCBhcmd1bWVudFR5cGVzW2ldKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0
ID0gdXBkYXRlT2Zmc2V0KGN1cnJlbnRPZmZzZXQsIHRvQjNUeXBlKGFyZ3VtZW50VHlwZXNbaV0p
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZ1bmN0b3IoYXJndW1lbnQsIGkpOwogICAg
ICAgICB9CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBCMzo6
VmFsdWUqIHNldHVwQ2FsbChCMzo6UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxv
Y2ssIEIzOjpPcmlnaW4gb3JpZ2luLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0LCBjb25z
dCBWZWN0b3I8QjM6OlZhbHVlKj4mIGFyZ3VtZW50cywgQjM6OlR5cGUgcmV0dXJuVHlwZSwgY29u
c3QgRnVuY3RvciYgcGF0Y2hwb2ludEZ1bmN0b3IpIGNvbnN0CisgICAgeworICAgICAgICB1bnNp
Z25lZCBzdGFja0FyZ3VtZW50Q291bnQgPSBhcmd1bWVudHMuc2l6ZSgpIDwgbV9yZWdpc3RlckFy
Z3VtZW50cy5zaXplKCkgPyAwIDogYXJndW1lbnRzLnNpemUoKSAtIG1fcmVnaXN0ZXJBcmd1bWVu
dHMuc2l6ZSgpOworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBoZWFkZXJTaXplIC0gc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpOworCisgICAgICAgIHByb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6
ZUluQnl0ZXMoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwg
aGVhZGVyU2l6ZSArIChzdGFja0FyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSkpOwor
ICAgICAgICBWZWN0b3I8QjM6OkNvbnN0cmFpbmVkVmFsdWU+IGNvbnN0cmFpbmVkQXJndW1lbnRz
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBCMzo6VmFsdWVSZXAgcmVwOworICAgICAgICAgICAgaWYgKGkgPCBt
X3JlZ2lzdGVyQXJndW1lbnRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXAgPSBCMzo6VmFs
dWVSZXA6OnJlZyhtX3JlZ2lzdGVyQXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICByZXAgPSBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0KTsK
KyAgICAgICAgICAgIGNvbnN0cmFpbmVkQXJndW1lbnRzLmFwcGVuZChCMzo6Q29uc3RyYWluZWRW
YWx1ZShhcmd1bWVudHNbaV0sIHJlcCkpOworICAgICAgICAgICAgb2Zmc2V0ID0gdXBkYXRlT2Zm
c2V0KG9mZnNldCwgYXJndW1lbnRzW2ldLT50eXBlKCkpOworICAgICAgICB9CisKKyAgICAgICAg
QjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgcmV0dXJuVHlwZSwgb3JpZ2luKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kVmVjdG9yKGNvbnN0cmFpbmVkQXJndW1lbnRzKTsKKyAgICAgICAgcGF0Y2hw
b2ludEZ1bmN0b3IocGF0Y2hwb2ludCk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGpp
dC5jYWxsKCk7CisgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0
aW9uUHRyKHRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaWYgKHJldHVyblR5cGUgIT0gQjM6OlZvaWQpCisgICAgICAg
ICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CiAgICAgY29uc3QgVmVjdG9yPEdQUlJlZz4gbV9yZWdpc3RlckFyZ3VtZW50czsKICAgICBjb25z
dCBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgY29uc3QgUmVnaXN0ZXJT
ZXQgbV9jYWxsZXJTYXZlUmVnaXN0ZXJzOwogfTsKIAotaW5saW5lIHVuc2lnbmVkIG5leHRKU0NP
ZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlwZSkKK2lubGluZSB1bnNpZ25lZCBuZXh0
SlNDT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBlKQogewogICAgIHJldHVy
biBjdXJyZW50T2Zmc2V0ICsgc2l6ZW9mKFJlZ2lzdGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCA3YTA0MTM3ZTNjNzBmMTgyNDcxMGFjZDk4ODQ3Zjcy
MTU2MjRkMDFkLi4xZTEwODEwZDNmZjZlZTBhODc2NGIzMmIzNmU4MDU2ZGQzNDVhNmMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCkBAIC00NCw2ICs0NCw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAj
aW5jbHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTI2LDYgKzEyNywxMSBAQCBzdHJ1Y3QgRnVuY3Rpb25J
bmZvcm1hdGlvbiB7CiAgICAgc2l6ZV90IGVuZDsKIH07CiAKK3N0cnVjdCBGdW5jdGlvbkNvbXBp
bGF0aW9uIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb2RlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGpzRW50cnlQb2ludDsKK307CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCmlu
ZGV4IGFlODc0MjQwYzkyMjhkMmQ4Mzk3NDQ2ZTE1ODdhMmQ0NDY5MWZhM2QuLmYzNTA2ZWQ3NWJl
ZDYzZTdhMDY0YzNkMjY1NDgxY2M2ZWU0OGI1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC0xNTQsNiArMTU0LDM5IEBAIGJvb2wg
RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURf
T1AoQ1JFQVRFX0NBU0UpIHsKKyAgICAgICAgLy8gVE9ETzogV2hhdCBkbyBJIGRvIHdpdGggdGhp
cz8KKyAgICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUlu
dDMyKGFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWlu
dDMyX3Qgb2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9
IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJl
c3VsdDsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQubG9hZChzdGF0aWNfY2FzdDxMb2FkT3BUeXBl
PihvcCksIG9mZnNldCwgcG9pbnRlciwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKSB7CisgICAgICAgIC8vIFRPRE86IFdoYXQgZG8gSSBkbyB3aXRoIHRoaXM/Cisg
ICAgICAgIHVpbnQzMl90IGFsaWdubWVudDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihh
bGlnbm1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQzMl90
IG9mZnNldDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihvZmZzZXQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIHZhbHVlID0gbV9leHBy
ZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9
IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQu
c3RvcmUoc3RhdGljX2Nhc3Q8U3RvcmVPcFR5cGU+KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCB2YWx1
ZSk7CisgICAgfQorCiAgICAgY2FzZSBPcFR5cGU6OkkzMkNvbnN0OiB7CiAgICAgICAgIHVpbnQz
Ml90IGNvbnN0YW50OwogICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvbnN0YW50KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIyNmI2
NTJiZjk3ZGEyYzg2MGNkNjZlOTg4OWE2YTZiM2JmZmMwMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuY3BwCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00geworCitNZW1vcnk6Ok1lbW9y
eSh1aW50MzJfdCBzdGFydGluZ1NpemUsIHVpbnQzMl90IG1heFNpemUsIGNvbnN0IFZlY3Rvcjx1
bnNpZ25lZD4mIHBpbm5lZFNpemVSZWdpc3RlcnMpCisgICAgOiBtX21vZGUoTW9kZTo6Qm91bmRz
Q2hlY2tpbmcpCisgICAgLCBtX3NpemUoc3RhcnRpbmdTaXplKQorICAgICwgbV9tYXhTaXplKG1h
eFNpemUpCit7CisgICAgQVNTRVJUKHBpbm5lZFNpemVSZWdpc3RlcnMuc2l6ZSgpID4gMCk7Cisg
ICAgdm9pZCogcmVzdWx0ID0gbW1hcChudWxscHRyLCBtYXhQYWdlTnVtLCBQUk9UX05PTkUsIE1B
UF9QUklWQVRFIHwgTUFQX0FOT04sIDAsIDApOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
IC8vIFRyeSBhZ2FpbiB3aXRoIGEgZGlmZmVyZW50IG51bWJlci4KKyAgICAgICAgcmVzdWx0ID0g
bW1hcChudWxscHRyLCBtYXhQYWdlTnVtLCBQUk9UX05PTkUsIE1BUF9QUklWQVRFIHwgTUFQX0FO
T04sIDAsIDApOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobXByb3RlY3QocmVzdWx0LCBzdGFydGluZ1NpemUsIFBST1RfUkVBRCB8
IFBST1RfV1JJVEUpKSB7CisgICAgICAgIG11bm1hcChyZXN1bHQsIG1heFNpemUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJz
ID0gcGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgKyAxOworICAgIGpzY0NhbGxpbmdDb252ZW50
aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7CisgICAg
ICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmIChncHIgPT0gQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciB8fCBncHIgPT0gQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3RlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFyZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChyZW1h
aW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgeworICAgICAgICAgICAgbV9waW5uZWRSZWdpc3Rl
cnMuYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7CisgICAgICAgICAgICByZW1haW5pbmdQaW5uZWRS
ZWdpc3RlcnMtLTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3Bpbm5lZFJlZ2lzdGVy
cy5zaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZVJlZ2lzdGVyc1stLXJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycyAtIDFdIH0pOworICAgIH0pOworCisgICAgQVNTRVJUKCFyZW1h
aW5pbmdQaW5uZWRSZWdpc3RlcnMpOworICAgIG1fbWVtb3J5ID0gcmVzdWx0OworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworfSAvLyBuYW1lc3BhY2UgV0FTTQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiZTcyNmM4MTliZTI5ZWFhNjgyZmQzZjgwN2QzZjk1ZWE1NjNkMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgKQEAgLTAs
MCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiV0FT
TUNhbGxpbmdDb252ZW50aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK3N0cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJ
bmZvIHsKKyAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyOworICAgIHVuc2lnbmVkIHNpemVPZmZzZXQ7
Cit9OworCitzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZvIHsKKyAgICBWZWN0b3I8UGlubmVkU2l6
ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKKyAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50
ZXI7Cit9OworCitjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZU51bSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDMyX3Q+OjptYXgoKSAvIDY0IC8gS0I7CisKK2NsYXNzIE1lbW9yeSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTWVtb3J5KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBvdGhlciBtb2Rl
cy4gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNjkzCisg
ICAgZW51bSBjbGFzcyBNb2RlIHsKKyAgICAgICAgQm91bmRzQ2hlY2tpbmcKKyAgICB9OworCisg
ICAgTWVtb3J5KCkgPSBkZWZhdWx0OworICAgIE1lbW9yeSh1aW50MzJfdCBzdGFydGluZ1NpemUs
IHVpbnQzMl90IG1heFNpemUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHBpbm5lZFNpemVSZWdp
c3RlcnMpOworCisgICAgfk1lbW9yeSgpCisgICAgeworICAgICAgICBpZiAobV9tZW1vcnkpCisg
ICAgICAgICAgICBtdW5tYXAobV9tZW1vcnksIG1fbWF4U2l6ZSk7CisgICAgfQorCisgICAgdm9p
ZCogbWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnk7IH0KKyAgICB1aW50MzJfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZv
JiBwaW5uZWRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bpbm5lZFJlZ2lzdGVyczsgfQor
CisgICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisKKyAgICBib29sIGdy
b3dNZW1vcnkodWludDMyX3QgbmV3U2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21lbW9y
eSk7CisgICAgICAgIGlmIChuZXdTaXplID4gbV9tYXhTaXplKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHJldHVybiAhbXByb3RlY3QobV9tZW1vcnksIG5ld1NpemUsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwgbV9zaXplKTsgfQor
ICAgIAorcHJpdmF0ZToKKyAgICB2b2lkKiBtX21lbW9yeSB7IG51bGxwdHIgfTsKKyAgICBQaW5u
ZWRSZWdpc3RlckluZm8gbV9waW5uZWRSZWdpc3RlcnM7CisgICAgTW9kZSBtX21vZGU7CisgICAg
dWludDMyX3QgbV9zaXplIHsgMCB9OworICAgIHVpbnQzMl90IG1fbWF4U2l6ZSB7IDAgfTsKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNT
RU1MWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5j
cHAKaW5kZXggNWUwNTNhNWE3OTAzYTU0ZWI4NjQ1NjQ2ODJlM2U5ZDE3MTBiMjE2NC4uZTgzMDQy
ZTBlY2E4NDFmNzkyMWNiMDA0MThkY2I5ZTczYmMxM2YxZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTI4LDEwICsyOCwxMyBAQAog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAj
aW5jbHVkZSAiV0FTTUZvcm1hdC5oIgogI2luY2x1ZGUgIldBU01PcHMuaCIKICNpbmNsdWRlICJX
QVNNU2VjdGlvbnMuaCIKIAorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV0FTTSB7CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
QEAgLTYyLDE1ICs2NSwxNiBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgdG8gcGFyc2UgbmV4
dCBzZWN0aW9uIGF0IG9mZnNldDogIiwgbV9vZmZzZXQpOwogCi0gICAgICAgIFNlY3Rpb25zOjpT
ZWN0aW9uIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93bjsKICAgICAgICAgdWludDhfdCBzZWN0
aW9uQnl0ZTsKICAgICAgICAgaWYgKCFwYXJzZVVJbnQ3KHNlY3Rpb25CeXRlKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRh
dGFMb2dMbigiU2VjdGlvbiBieXRlOiAiLCBzZWN0aW9uQnl0ZSk7CisKKyAgICAgICAgU2VjdGlv
bnM6OlNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICBpZiAoc2Vj
dGlvbkJ5dGUpIHsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA+PSBTZWN0aW9uczo6VW5r
bm93bikKLSAgICAgICAgICAgICAgICBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247Ci0gICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoc2VjdGlvbkJ5dGUgPCBTZWN0aW9uczo6VW5r
bm93bikKICAgICAgICAgICAgICAgICBzZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VjdGlvbnM6OlNl
Y3Rpb24+KHNlY3Rpb25CeXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVpbnQz
Ml90IHNlY3Rpb25OYW1lTGVuZ3RoOwpAQCAtOTYsNiArMTAwLDE1IEBAIGJvb2wgTW9kdWxlUGFy
c2VyOjpwYXJzZSgpCiAgICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fb2Zmc2V0ICsgc2VjdGlvbkxl
bmd0aDsKIAogICAgICAgICBzd2l0Y2ggKHNlY3Rpb24pIHsKKworICAgICAgICBjYXNlIFNlY3Rp
b25zOjpNZW1vcnk6IHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiUGFyc2luZyBNZW1vcnkuIik7CisgICAgICAgICAgICBpZiAoIXBhcnNlTWVt
b3J5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFNlY3Rpb25zOjpGdW5jdGlvblR5cGVzOiB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNp
bmcgdHlwZXMuIik7CkBAIC0xNDMsNiArMTU2LDM0IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJz
ZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9y
eSgpCit7CisgICAgdWludDhfdCBmbGFnczsKKyAgICBpZiAoIXBhcnNlVmFyVUludDEoZmxhZ3Mp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50MzJfdCBzaXplOworICAgIGlmICgh
cGFyc2VWYXJVSW50MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2l6
ZSA+IG1heFBhZ2VOdW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IG1h
eCA9IG1heFBhZ2VOdW07CisgICAgaWYgKGZsYWdzKSB7CisgICAgICAgIGlmICghcGFyc2VWYXJV
SW50MzIobWF4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHNpemUg
PiBtYXggfHwgbWF4ID4gbWF4UGFnZU51bSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBtYXggKj0gNjQgKiBLQjsKKyAgICBzaXplICo9IDY0ICogS0I7CisKKyAgICBW
ZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07CisgICAgbV9tZW1vcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1lbW9yeT4oc2l6ZSwgbWF4LCBwaW5uZWRTaXplcyk7CisgICAgcmV0dXJu
IG1fbWVtb3J5LT5tZW1vcnkoKTsKK30KKwogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rp
b25UeXBlcygpCiB7CiAgICAgdWludDMyX3QgY291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKaW5kZXggNDYwYmU4ZmJiMzZmMDJmYWY0YWQ1Mzhi
MWNlNTJiMmVkNTEyNTRmZC4uNzVlNGQxMGFkZjYwMzQ3NzM4NzdjMWVmMGFiZDYxYzRmYTI0NjRk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAi
V0FTTU1lbW9yeS5oIgogI2luY2x1ZGUgIldBU01PcHMuaCIKICNpbmNsdWRlICJXQVNNUGFyc2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDUsMTggKzQ2LDE5IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAKLSAgICBjb25zdCBWZWN0
b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9uSW5mb3JtYXRpb24oKSB7IHJldHVybiBt
X2Z1bmN0aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVu
Y3Rpb25JbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lbW9yeT4mIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5OyB9CiAKIHBy
aXZhdGU6CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VNZW1vcnkoKTsKICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlwZXMoKTsKICAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpOwogICAgIGJvb2wgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9ucygpOwogICAgIGJvb2wgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKHVpbnQzMl90IG51bWJlcik7
Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOwotICAgIGJvb2wgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogCiAgICAgVmVjdG9yPEZ1
bmN0aW9uSW5mb3JtYXRpb24+IG1fZnVuY3Rpb25zOwogICAgIFZlY3RvcjxTaWduYXR1cmU+IG1f
c2lnbmF0dXJlczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBtX21lbW9yeTsKIH07CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNT3BzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3Bz
LmgKaW5kZXggNmVmNWJkNGQxNjBkMzFmNzEwMzE5ZTNlN2NjNzc4ZmE0ZmM4NzdkYy4uNmQzNDg4
Y2Y0OTgwNDMzZTkwNGJhZTAwNTQ0NDgzN2NhZDAwMmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01PcHMuaApAQCAtMTU5LDEzICsxNTksNDIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBXQVNNIHsKICAgICBtYWNybyhGNjRHdCwgMHg5YiwgT29wcykgXAogICAgIG1hY3JvKEY2
NEdlLCAweDljLCBPb3BzKQogCisjZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1Ao
bWFjcm8pIFwKKyAgICBtYWNybyhJMzJMb2FkOFMsIDB4MjAsIE9vcHMpIFwKKyAgICBtYWNybyhJ
MzJMb2FkOFUsIDB4MjEsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJMb2FkMTZTLCAweDIyLCBPb3Bz
KSBcCisgICAgbWFjcm8oSTMyTG9hZDE2VSwgMHgyMywgT29wcykgXAorICAgIG1hY3JvKEk2NExv
YWQ4UywgMHgyNCwgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQ4VSwgMHgyNSwgT29wcykgXAor
ICAgIG1hY3JvKEk2NExvYWQxNlMsIDB4MjYsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMTZV
LCAweDI3LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDMyUywgMHgyOCwgT29wcykgXAorICAg
IG1hY3JvKEk2NExvYWQzMlUsIDB4MjksIE9vcHMpIFwKKyAgICBtYWNybyhJMzJMb2FkLCAweDJh
LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZCwgMHgyYiwgT29wcykgXAorICAgIG1hY3JvKEYz
MkxvYWQsIDB4MmMsIE9vcHMpIFwKKyAgICBtYWNybyhGNjRMb2FkLCAweDJkLCBPb3BzKQorCisj
ZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKSBcCisgICAgbWFjcm8o
STMyU3RvcmU4LCAweDJlLCBPb3BzKSBcCisgICAgbWFjcm8oSTMyU3RvcmUxNiwgMHgyZiwgT29w
cykgXAorICAgIG1hY3JvKEk2NFN0b3JlOCwgMHgzMCwgT29wcykgXAorICAgIG1hY3JvKEk2NFN0
b3JlMTYsIDB4MzEsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZTMyLCAweDMyLCBPb3BzKSBc
CisgICAgbWFjcm8oSTMyU3RvcmUsIDB4MzMsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZSwg
MHgzNCwgT29wcykgXAorICAgIG1hY3JvKEYzMlN0b3JlLCAweDM1LCBPb3BzKSBcCisgICAgbWFj
cm8oRjY0U3RvcmUsIDB4MzYsIE9vcHMpCisKIAogCiAjZGVmaW5lIEZPUl9FQUNIX1dBU01fT1Ao
bWFjcm8pIFwKICAgICBGT1JfRUFDSF9XQVNNX1NQRUNJQUxfT1AobWFjcm8pIFwKICAgICBGT1Jf
RUFDSF9XQVNNX0NPTlRST0xfRkxPV19PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fVU5B
UllfT1AobWFjcm8pIFwKLSAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykKKyAgICBG
T1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZ
X0xPQURfT1AobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNy
bykKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlk
LAogCkBAIC0xODksNiArMjE4LDE0IEBAIGVudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90
IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAor
ZW51bSBjbGFzcyBMb2FkT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfTE9BRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5
cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVf
RU5VTV9WQUxVRSkKK307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9v
bCBpc0NvbnRyb2xPcChPcFR5cGUgb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxh
bi5jcHAKaW5kZXggN2JkNjBkMjNmMTFhMjlhY2UxZTM3YTYxODc1ZmU0YjVjZjBkYmNiOS4uYTA4
MzczODU4NGQ1NjY5MjZhMjUyMmRiOTFjZDZjOTRmOGU2YTYwYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01QbGFuLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQjND
b21waWxhdGlvbi5oIgogI2luY2x1ZGUgIldBU01CM0lSR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAi
V0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV0FTTU1vZHVsZVBhcnNlci5oIgog
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAKQEAgLTUzLDggKzU0LDkgQEAgUGxhbjo6UGxhbihW
TSYgdm0sIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpCiAgICAgZm9yIChjb25zdCBGdW5jdGlvbklu
Zm9ybWF0aW9uJiBpbmZvIDogbW9kdWxlUGFyc2VyLmZ1bmN0aW9uSW5mb3JtYXRpb24oKSkgewog
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vzc2luZyBm
dW5jaW9uIHN0YXJ0aW5nIGF0OiAiLCBpbmZvLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGlu
Zm8uZW5kKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIHNvdXJj
ZSwgaW5mbykpOworICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291
cmNlLCBtb2R1bGVQYXJzZXIubWVtb3J5KCkuZ2V0KCksIGluZm8pKTsKICAgICB9CisgICAgbWVt
b3J5ID0gV1RGTW92ZShtb2R1bGVQYXJzZXIubWVtb3J5KCkpOwogfQogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgKaW5kZXggZDNj
OWUyMmE1YWJhMTcyNjQzZjM3OTE2MGMzOGI4ZTRiNDkyYjE4Yy4uYjg0NWVlMTQ4OTc4Zjk2MDEw
NzY5MDY0MGE1ZDEwYjZmYzdmMzU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxh
bi5oCkBAIC0yOSwyMyArMjksMjAgQEAKIAogI2luY2x1ZGUgIkNvbXBpbGF0aW9uUmVzdWx0Lmgi
CiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1l
c3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIEIzIHsKLWNsYXNzIENvbXBpbGF0aW9uOwotfSAvLyBu
YW1lc3BhY2UgQjMKLQotbmFtZXNwYWNlIFdBU00geworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXQVNNIHsKK2NsYXNzIE1lbW9yeTsKIAogLy8gVE9ETzogVGhpcyBzaG91bGQgY3JlYXRlIGEg
V0FTTSBNb2R1bGUgbm90IGEgbGlzdCBvZiBmdW5jdGlvbnMuCiBjbGFzcyBQbGFuIHsKIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJj
ZSk7CiAKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4+IHJlc3Vs
dDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+PiByZXN1
bHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeT4gbWVtb3J5OwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01TZWN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25z
LmgKaW5kZXggNTNlOTM1NmUyMzhmYTQyYzViNTg3MTA5OTM2YjU3MDA4ZTdjNjc5OS4uMDdjNzJk
NDFkM2JlZWRjZDE3MjM4YThjMjAwNDIzMjc1MTNiNDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTVNlY3Rpb25zLmgKQEAgLTMzLDYgKzMzLDcgQEAgc3RydWN0IFNlY3Rpb25z
IHsKICAgICBlbnVtIFNlY3Rpb24gOiB1aW50OF90IHsKICAgICAgICAgRnVuY3Rpb25UeXBlcyA9
IDEsCiAgICAgICAgIFNpZ25hdHVyZXMgPSAzLAorICAgICAgICBNZW1vcnkgPSA1LAogICAgICAg
ICBEZWZpbml0aW9ucyA9IDEwLAogICAgICAgICBVbmtub3duCiAgICAgfTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTRjYTY0N2VmNGYx
NWNmOTEzMTJmMDc3NGM4YjRiMDBhMTUwMzc1NC4uY2U3OGU2ZjE3ZDgyN2JkMzFkNGZiMjk4MmMy
YjFlZWVjYzJiNGRkNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0xMC0wNCAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBN
ZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE3MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgc3RvcmUgYW5kIGxvYWQgb3Bjb2RlcyB0byB3YXNtLmpzb24uIEFkZGl0aW9uYWxseSwgYWRk
IG5ldworICAgICAgICBlbnVtcyBmb3IgdGhvc2Ugb3Bjb2RlcyBpbiB0aGUgZ2VuZXJhdG9yLgor
CisgICAgICAgICogc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanM6CisgICAg
ICAgIChjb25zdC50ZW1wbGF0ZS5wcmFnbWEub25jZS5FTkFCTEUuV0VCQVNTRU1CTFkuaW5jbHVk
ZS5jc3RkaW50Lm5hbWVzcGFjZS5KU0MubmFtZXNwYWNlLldBU00uZW51bS5Mb2FkT3BUeXBlKToK
KyAgICAgICAgKGNvbnN0LnRlbXBsYXRlLnByYWdtYS5vbmNlLkVOQUJMRS5XRUJBU1NFTUJMWS5p
bmNsdWRlLmNzdGRpbnQubmFtZXNwYWNlLkpTQy5uYW1lc3BhY2UuV0FTTS5lbnVtLlN0b3JlT3BU
eXBlKToKKyAgICAgICAgKiBzdHJlc3Mvd2FzbS93YXNtLmpzb246CisKIDIwMTYtMTAtMDQgIEpG
IEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBo
YW5kbGUgYSBmZXcgY29ybmVyIGNhc2VzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy93YXNt
L2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0
ZS13YXNtb3BzLWhlYWRlci5qcwppbmRleCBjZTUyODk3MTkyNzY0YWQ5OWY1NTExMTEzYWNkMjJl
YjJhMzE1NmRlLi44NGNiMmZmZTE4NGMxNTA0MmZiZmFjMDIzZGY1Y2JkM2M4ZjRmN2Y0IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKQEAgLTM2
LDYgKzM2LDEwIEBAIGNvbnN0IGRlZmluZXMgPSBbCiAgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9w
ID0+IG9wLmNhdGVnb3J5ID09PSAiYXJpdGhtZXRpYyIgJiYgb3AucGFyYW1ldGVyLmxlbmd0aCA9
PT0gMSksCiAgICAgIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSIs
CiAgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+IChvcC5jYXRlZ29yeSA9PT0gImFyaXRobWV0
aWMiIHx8IG9wLmNhdGVnb3J5ID09PSAiY29tcGFyaXNvbiIpICYmIG9wLnBhcmFtZXRlci5sZW5n
dGggPT09IDIpLAorICAgICJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09Q
KG1hY3JvKSIsCisgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+IChvcC5jYXRlZ29yeSA9PT0g
ImxvYWQiKSksCisgICAgIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09Q
KG1hY3JvKSIsCisgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+IChvcC5jYXRlZ29yeSA9PT0g
InN0b3JlIikpLAogICAgICJcblxuIl0uam9pbigiIik7CiAKIGNvbnN0IG9wVmFsdWVTZXQgPSBu
ZXcgU2V0KG9wY29kZUl0ZXJhdG9yKG9wID0+IHRydWUsIG9wID0+IG9wY29kZXNbb3BdLnZhbHVl
KSgpKTsKQEAgLTk0LDcgKzk4LDkgQEAgJHtkZWZpbmVzfQogICAgIEZPUl9FQUNIX1dBU01fU1BF
Q0lBTF9PUChtYWNybykgXFwKICAgICBGT1JfRUFDSF9XQVNNX0NPTlRST0xfRkxPV19PUChtYWNy
bykgXFwKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKG1hY3JvKSBcXAotICAgIEZPUl9FQUNI
X1dBU01fQklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3Jv
KSBcXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AobWFjcm8pIFxcCisgICAgRk9S
X0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pCiAKICNkZWZpbmUgQ1JFQVRFX0VOVU1f
VkFMVUUobmFtZSwgaWQsIGIzb3ApIG5hbWUgPSBpZCwKIApAQCAtMTE4LDYgKzEyNCwxNCBAQCBl
bnVtIGNsYXNzIFVuYXJ5T3BUeXBlIDogdWludDhfdCB7CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFS
WV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKK2VudW0gY2xhc3MgTG9hZE9wVHlwZSA6IHVp
bnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AoQ1JFQVRFX0VOVU1fVkFM
VUUpCit9OworCitlbnVtIGNsYXNzIFN0b3JlT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9OworCiAjdW5kZWYg
Q1JFQVRFX0VOVU1fVkFMVUUKIAogaW5saW5lIGJvb2wgaXNDb250cm9sT3AoT3BUeXBlIG9wKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3N0cmVz
cy93YXNtL3dhc20uanNvbgppbmRleCA2NjM2MWI3ZDZhNmI5ZDI0ZDZhYjczYjMzOTViZmU1Y2I5
NzJkNTM1Li41NTE2M2IwNWYzYWE0YzQzOTZjMDA1YWVhMmI5ZTNlMzUwYzRhZDRhIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3N0cmVzcy93
YXNtL3dhc20uanNvbgpAQCAtNjcsMjkgKzY3LDI5IEBACiAgICAgICAgICJzZXRfZ2xvYmFsIjog
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDE4OCwgInJldHVy
biI6IFsiYW55Il0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1d
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJ3cml0ZSBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIyLCAicmV0dXJuIjog
WyJhbnkiXSwgICJwYXJhbWV0ZXIiOiBbImFueSoiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNh
bGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2luZGlyZWN0Ijog
ICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMywgInJldHVybiI6
IFsiYW55Il0sICAicGFyYW1ldGVyIjogWyJhbnkqIl0sICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJj
YWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCi0g
ICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAg
ICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0s
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTMy
LmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
MzMsICJyZXR1cm4iOiBbImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVz
Y3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5sb2FkMTZfcyI6
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDM0LCAicmV0dXJu
IjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJpMzIubG9hZDE2X3UiOiAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICAzNSwgInJldHVybiI6IFsiaTMyIl0s
ICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20g
bWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5Ijog
Im1lbW9yeSIsICAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFn
cyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
LSAgICAgICAgImk2NC5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDM3LCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIi
XSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJp
NjQubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6
ICAzOCwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAi
dmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQxNl91
IjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgMzksICJyZXR1
cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImk2NC5sb2FkMzJfcyI6ICAgICAgICB7
ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQwLCAicmV0dXJuIjogWyJpNjQi
XSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
Im9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJv
bSBtZW1vcnkiIH0sCi0gICAgICAgICJpNjQubG9hZDMyX3UiOiAgICAgICAgeyAiY2F0ZWdvcnki
OiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0MSwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1l
dGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9
LAotICAgICAgICAiaTMyLmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIs
ICAgICAidmFsdWUiOiAgNDIsICJyZXR1cm4iOiBbImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRk
ciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFy
dWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAg
Imk2NC5sb2FkIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVl
IjogIDQzLCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJmMzIubG9hZCI6
ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJl
dHVybiI6IFsiZjMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlv
biI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiZjY0LmxvYWQiOiAgICAgICAgICAg
IHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImY2
NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUi
OiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBm
cm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5zdG9yZTgiOiAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogW10sICAgICAgICJwYXJh
bWV0ZXIiOiBbImFkZHIiLCAiaTMyIl0sICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
ZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIs
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIg
fSwKLSAgICAgICAgImkzMi5zdG9yZTE2IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ3LCAicmV0dXJuIjogW10sICAgICAgICJwYXJhbWV0ZXIiOiBbImFk
ZHIiLCAiaTMyIl0sICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAg
ICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAg
Imk2NC5zdG9yZTgiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVl
IjogIDQ4LCAicmV0dXJuIjogW10sICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiLCAiaTY0Il0s
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAgImk2NC5zdG9yZTE2
IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ5LCAicmV0
dXJuIjogW10sICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiLCAiaTY0Il0sICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogInN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAgImk2NC5zdG9yZTMyIjogICAgICAgICB7
ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDUwLCAicmV0dXJuIjogW10sICAg
ICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiLCAiaTY0Il0sICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
Im9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRv
IG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5zdG9yZSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDUxLCAicmV0dXJuIjogW10sICAgICAgICJwYXJhbWV0
ZXIiOiBbImFkZHIiLCAiaTMyIl0sICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwK
LSAgICAgICAgImk2NC5zdG9yZSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDUyLCAicmV0dXJuIjogW10sICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIi
LCAiaTY0Il0sICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAgImYz
Mi5zdG9yZSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjog
IDUzLCAicmV0dXJuIjogW10sICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiLCAiZjMyIl0sICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRl
c2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAgImY2NC5zdG9yZSI6ICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDU0LCAicmV0dXJu
IjogW10sICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiLCAiZjY0Il0sICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
InN0b3JlIHRvIG1lbW9yeSIgfSwKKyAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJj
YXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDMyLCAicmV0dXJuIjogWyJpMzIiXSwg
ICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9m
ZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBt
ZW1vcnkiIH0sCisgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
bG9hZCIsICAgICAgICJ2YWx1ZSI6ICAzMywgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVy
IjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAor
ICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAg
ICAidmFsdWUiOiAgMzQsICJyZXR1cm4iOiBbImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJd
LCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImkz
Mi5sb2FkMTZfdSI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjog
IDM1LCAicmV0dXJuIjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRl
c2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpNjQubG9hZDhfcyI6
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1ZSI6ICAzNiwgInJldHVy
biI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAiaTY0LmxvYWQ4X3UiOiAgICAgICAgIHsg
ImNhdGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImk2NCJd
LCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAi
b2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9t
IG1lbW9yeSIgfSwKKyAgICAgICAgImk2NC5sb2FkMTZfcyI6ICAgICAgICB7ICJjYXRlZ29yeSI6
ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDM4LCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0
ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0s
CisgICAgICAgICJpNjQubG9hZDE2X3UiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAg
ICAgICJ2YWx1ZSI6ICAzOSwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRy
Il0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAg
ICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAi
aTY0LmxvYWQzMl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUi
OiAgNDAsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImk2NC5sb2FkMzJf
dSI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDQxLCAicmV0
dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpMzIubG9hZCI6ICAgICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1ZSI6ICA0MiwgInJldHVybiI6IFsiaTMy
Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZy
b20gbWVtb3J5IiB9LAorICAgICAgICAiaTY0LmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5
IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgNDMsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFt
ZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJm
bGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0Iiwg
InR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIg
fSwKKyAgICAgICAgImYzMi5sb2FkIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwg
ICAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJmMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFk
ZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAg
ICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAg
ICJmNjQubG9hZCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1
ZSI6ICA0NSwgInJldHVybiI6IFsiZjY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUi
OiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAiaTMyLnN0b3Jl
OCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInN0b3JlIiwgICAgICAidmFsdWUiOiAgNDYsICJy
ZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRp
b24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAorICAgICAgICAiaTMyLnN0b3JlMTYiOiAgICAgICAg
IHsgImNhdGVnb3J5IjogInN0b3JlIiwgICAgICAidmFsdWUiOiAgNDcsICJyZXR1cm4iOiBbXSwg
ICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUi
OiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUg
dG8gbWVtb3J5IiB9LAorICAgICAgICAiaTY0LnN0b3JlOCI6ICAgICAgICAgIHsgImNhdGVnb3J5
IjogInN0b3JlIiwgICAgICAidmFsdWUiOiAgNDgsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFt
ZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJm
bGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0Iiwg
InR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9
LAorICAgICAgICAiaTY0LnN0b3JlMTYiOiAgICAgICAgIHsgImNhdGVnb3J5IjogInN0b3JlIiwg
ICAgICAidmFsdWUiOiAgNDksICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRk
ciIsICJpNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFy
dWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAorICAgICAgICAi
aTY0LnN0b3JlMzIiOiAgICAgICAgIHsgImNhdGVnb3J5IjogInN0b3JlIiwgICAgICAidmFsdWUi
OiAgNTAsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAorICAgICAgICAiaTMyLnN0b3JlIjog
ICAgICAgICAgIHsgImNhdGVnb3J5IjogInN0b3JlIiwgICAgICAidmFsdWUiOiAgNTEsICJyZXR1
cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAic3RvcmUgdG8gbWVtb3J5IiB9LAorICAgICAgICAiaTY0LnN0b3JlIjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInN0b3JlIiwgICAgICAidmFsdWUiOiAgNTIsICJyZXR1cm4iOiBbXSwgICAg
ICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAi
b2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8g
bWVtb3J5IiB9LAorICAgICAgICAiZjMyLnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5Ijog
InN0b3JlIiwgICAgICAidmFsdWUiOiAgNTMsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciIsICJmMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFn
cyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAor
ICAgICAgICAiZjY0LnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInN0b3JlIiwgICAg
ICAidmFsdWUiOiAgNTQsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIs
ICJmNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAogICAgICAgICAiY3Vy
cmVudF9tZW1vcnkiOiAgICAgIHsgImNhdGVnb3J5IjogIm9wZXJhdGlvbiIsICAidmFsdWUiOiAg
NTksICJyZXR1cm4iOiBbInNpemUiXSwgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAicXVlcnkgdGhlIHNpemUgb2YgbWVtb3J5IiB9LAogICAgICAgICAiZ3Jvd19t
ZW1vcnkiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm9wZXJhdGlvbiIsICAidmFsdWUiOiAgNTcs
ICJyZXR1cm4iOiBbInNpemUiXSwgInBhcmFtZXRlciI6IFsic2l6ZSJdLCAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiZ3JvdyB0aGUgc2l6ZSBvZiBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIuYWRkIjog
ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiYXJpdGhtZXRpYyIsICJ2YWx1ZSI6ICA2NCwgInJl
dHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICJiM29wIjogIkFk
ZCIgICAgICAgICAgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290714</attachid>
            <date>2016-10-05 09:27:00 -0700</date>
            <delta_ts>2016-10-05 09:46:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20161005092347.patch</filename>
            <type>text/plain</type>
            <size>95204</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTJkOThlMTg1MGI5ODMxMDJiZGU1YWE0YmJlN2Y2MjFlMTcwOWUxLi4yNDg0M2FmMGZjOWIxY2Q5
MDc2Yzc4YmJkZWZlNDhmNDMzMGQ4ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIEN1cnJlbnRseSwgQjMgb25seSBiYXJlbHkgd29y
a3Mgd2l0aCBwaW5uZWQgdmFsdWVzIGJlY2F1c2UKKyAgICAgICAgd2UgY2Fubm90IGNoYW5nZSB0
aGUgc2l6ZSBvZiBtZW1vcnkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RXQVNN
LmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Y3JlYXRl
SlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAg
ICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246Oml0
ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6c2V0dXBDYWxs
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAgICogd2FzbS9X
QVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6
Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAgICAgKEpTQzo6
V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVtb3J5OjptZW1v
cnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAgICAoSlNDOjpX
QVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9y
eTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9yeSk6CisgICAg
ICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKiB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6Cisg
ICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAg
KiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6Cisg
ICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6
CisKIDIwMTYtMTAtMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogZG9uJ3Qgc3luY2hyb25vdXNseSBzZW5kIGEgbGlzdGluZyBtZXNzYWdl
IGlmIHdlIG1pZ2h0IG5lZWQgdG8gcXVlcnkgX1dLQXV0b21hdGlvbkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQ3Y2RlZmQzODFkNGFjNmIwMDJkMmY0NWM1
OGU2N2NmZjY4MWJjYi4uMzViYmU0YTI5ZmU2OTMxYTNiMzQ0OWQyMGNjYTMzMjVmZTI0ZjRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDYgKzg1OCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUuY3BwCiAgICAg
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKICAgICB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlv
bi5jcHAKKyAgICB3YXNtL1dBU01NZW1vcnkuY3BwCiAgICAgd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmNwcAogICAgIHdhc20vV0FTTVBsYW4uY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwppbmRl
eCA4MzFkMDk2MDA0MjFjZmJiNDMxNDJhM2Q5OTlhNGRjNjk2NDkwYmVmLi5mNTQwMWZjOTJjZGIx
YmEzZGIyNmI3YTk2ZDdiMmNiNTBjYzZjZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCkBA
IC0zMSw2ICszMSw3IEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX21pbmlkb20gPSBlbnRp
dGxlbWVudHMucGxpc3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YWlyID0gZW50
aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFwaSA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RiMyA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKK0NPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RXQVNNID0g
ZW50aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdFJlZ0V4
cCA9IGVudGl0bGVtZW50cy5wbGlzdDsKIAogU0tJUF9JTlNUQUxMID0gJChTS0lQX0lOU1RBTExf
JChGT1JDRV9UT09MX0lOU1RBTEwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGM0NDI2ZWJlY2I4MGVmZGJlZTQ4MWJiZTY4ZWQ4YmMzZTlmYWYxNy4uYWRiMDg4NTdkMmUzMmYw
MTNjMzNjNjc2MDI2ZjQ1OTQzY2EzNjdhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTIsNiArMTIxMiw4IEBACiAJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0QzQ1N0UxQkM3MjU0OTAwNzQ3NkE3IC8qIEpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzRDNDU3RDFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNTM1MjlBNEMxQzQ1N0I3NTAwMEI0OUM2
IC8qIEFQSVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLzsgfTsKKwkJNTM1
NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTU1NzEzMUQ5RDlFQTUwMDZENTgzQiAvKiBX
QVNNTWVtb3J5LmggKi87IH07CisJCTUzNTU1NzE2MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVt
b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NTU1NzE1MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLzsgfTsKIAkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuY3BwICovOyB9OwogCQk1MzcwQjRGNjFCRjI2MjA1MDA1QzQwRkMg
LyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM3MEI0RjQxQkYyNUVBMjAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAq
LzsgfTsKIAkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTM0NDIsNiArMzQ0NCw4IEBA
CiAJCTUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNEM0NTdEMUJDNzI1
NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2
IC8qIEFQSVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVV0aWxz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzEzMUQ5RDlFQTUwMDZENTgz
QiAvKiBXQVNNTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01N
ZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM1NTU3MTUxRDlERkEzMjAw
NkQ1ODNCIC8qIFdBU01NZW1vcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0FTTU1lbW9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBC
NEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY1Nyw2ICs1NjYxLDgg
QEAKIAkJCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovLAogCQkJCTdC
QzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi8sCiAJCQkJNTNGNDBFOEEx
RDU5MDFCQjAwOTlBMUI2IC8qIFdBU01GdW5jdGlvblBhcnNlci5oICovLAorCQkJCTUzNTU1NzE1
MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLywKKwkJCQk1MzU1NTcxMzFEOUQ5
RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oICovLAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5
QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5
OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oICovLAogCQkJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFG
N0EwQiAvKiBXQVNNUGxhbi5jcHAgKi8sCkBAIC03ODE0LDYgKzc4MjAsNyBAQAogCQkJCTE0MkUz
MTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjEwRjFBMzFDNDIwQkYwMDAxQzA3RDIgLyogQWlyQ3VzdG9tLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MzU1NTcxNDFEOUQ5RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNTIsNiArOTE1OSw3IEBACiAJCQkJMEY1QTEyNzMxOTJE
OUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUzNTU1NzE2MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEYxNDMzMUFERjA5MDEwMEVENzkyQyAvKiBERkdFcG9jaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxl
ZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0V0FTTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3Bw
CmluZGV4IGQ5ZWQ5MWZlMTg0ZGVhYjExNzY5OTVjOGJkNjY5Y2ZjOWQ4ZTRjNmQuLjJjM2M5ZmFi
NmIzMGJkZmY5ZDkzMWQ0YTJhN2FjNDg2OTA5YWVhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RX
QVNNLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01N
ZW1vcnkuaCIKICNpbmNsdWRlICJXQVNNUGxhbi5oIgorCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KICNpbmNsdWRlIDx3dGYvTEVCRGVjb2Rlci5oPgogCkBAIC0yNDIsOCArMjQ0LDQ2OSBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogewogICAgIHsKICAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAgICAg
ICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFt
ICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTY0LnN0b3JlIChnZXRfbG9j
YWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTY0LmxvYWQg
KGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4MDEsIDB4
MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwg
MHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4
MTQsCisgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCisgICAg
ICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBs
YW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94
KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAg
ICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhf
cyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAg
ICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAg
ICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAg
ICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAg
ICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIs
IDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4
MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAx
LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAw
eDAwLCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgw
MiwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0s
IHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5y
ZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21w
aWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMTApIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToK
KyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAg
ICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFy
YW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8v
ICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9j
aworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkz
Mi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAg
ICAgICAgKGkzMi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMyLm11bCAoZ2V0X2xv
Y2FsICRpKSAoaTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAg
ICAoc2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQor
ICAgICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8v
ICAgICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAg
ICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAg
ICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAg
ICAweDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4
NzQsIDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAs
IDB4MGEsIDB4YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAw
eGFjLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAw
LCAweDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwg
MHgwMywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgw
MywgMHgxMCwgMHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQsIDB4MDAsIDB4MzMs
IDB4MDIsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4
MDYsIDB4MDAsIDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07
CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVz
dWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7
CisgICAgICAgIHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBsYW4u
bWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOwor
ICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVt
b3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBs
ZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAg
ICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3Qp
OworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDUpLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBz
aXplb2YodWludDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEw
MHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBD
SEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAg
ICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIp
IChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2Fs
ICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisg
ICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8v
ICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVu
Z3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlOCAoaTMyLmFkZCAoZ2V0X2xvY2Fs
ICRwKSAoZ2V0X2xvY2FsICRpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAo
c2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAg
ICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAg
ICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAg
ICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAg
ICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEs
IDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAw
eDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQs
IDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4
MGEsIDB4YWYsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGE5
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAw
eDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgw
MywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywg
MHg0MCwgMHgxNCwgMHgwMCwKKyAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4
MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYs
IDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBd
KSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3Jy
ZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KHBsYW4ubWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgp
IH0pOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zm
c2V0ID0gNTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVD
S19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlb
b2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAv
LyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAo
ZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGdldF9sb2NhbCAk
cHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhf
cyAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwg
MHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1l
bW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAg
ICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3Mi
KSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAoaTMyLnN0b3Jl
OCAoaTMyLmNvbnN0IDgpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgICAgIChyZXR1cm4g
KGkzMi5sb2FkOF9zIChpMzIuY29uc3QgOCkpKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAg
Ly8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAg
IDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
ODYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAx
LCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwYiwgMHg2OSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4
NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAxLCAweDhmLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAw
LCAweDAwLCAweDEwLCAweDA4LAorICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwg
MHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAg
ICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4i
KTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSks
IDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBH
ZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAx
KQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMy
KSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3RvcmUg
KGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJuIChp
MzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8vICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMiwg
MHgwMSwgMHgwMSwgMHgwMiwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzNCwgMHgwMywg
MHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goLTEyKSwgYm94KHBsYW4ubWVtb3J5LT5zaXplKCkgLSBzaXplb2YodWludDY0X3QpKSB9
KSwgLTEyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAg
ICAgICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVu
YyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikg
KHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChn
ZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwg
JHB0cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4
MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAw
eDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgz
LCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgz
MywKKyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4Mzgs
IDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisg
ICAgICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAw
LCAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAg
ICAgICAgMHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisg
ICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5z
aXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
TW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKICAgICAgICAgLy8gICAgKG1vZHVsZQotICAgICAgICAvLyAg
ICAgKGZ1bmMgKGV4cG9ydCAiZHVtYi1lcSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIp
IChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAg
KGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMy
KSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8vICAgICAgKHNl
dF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9jaworICAgICAg
ICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChn
ZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAgICAgICAgKGkz
Mi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMyLm11bCAoZ2V0X2xvY2FsICRpKSAo
aTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAoc2V0X2xv
Y2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAgICAgICAv
LyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAgICAgICkK
KyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8g
ICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4
MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAzLCAw
eDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQsIDB4NjUs
IDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4MGEsIDB4
YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGFjLCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAweDE1LCAw
eDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgwMywgMHgx
NCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywgMHgxMCwg
MHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQsIDB4MDAsIDB4MzMsIDB4MDIsIDB4
MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAs
IDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUo
KSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1
bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7CisgICAgICAg
IHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBsYW4ubWVtb3J5LT5t
ZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBv
ZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNl
dCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAw
dSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVu
Z3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3QpOworICAgICAg
ICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBi
b3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXplb2YodWlu
dDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAg
ICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUSht
ZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVy
YXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5
IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAk
eCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2FsICRpIGkzMikK
KyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisgICAgICAgIC8v
ICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8vICAgICAgICAo
YnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVuZ3RoKSkpCisg
ICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlOCAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoZ2V0
X2xvY2FsICRpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAoc2V0X2xvY2Fs
ICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAgICAgICAvLyAg
ICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAgICAgICkKKyAg
ICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAg
ICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAs
IDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAzLCAweDAx
LCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQsIDB4NjUsIDB4
NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4MGEsIDB4YWYs
IDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGE5LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAweDE1LCAweDAz
LCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgwMywgMHgxNCwg
MHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgx
NCwgMHgwMCwKKyAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQs
IDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1l
bW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMTsK
KyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHBsYW4ubWVt
b3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAg
ICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZz
ZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zmc2V0ID0gNTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVDS19FUShtZW1v
cnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsg
bGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9k
dWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhw
b3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3Vs
dCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGdldF9sb2NhbCAkcHRyKSAoZ2V0
X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhfcyAoZ2V0X2xv
Y2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDcz
LCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgw
MSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwg
MHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIs
IDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAw
eDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgw
LCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgx
NCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAg
ICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxh
bi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAg
ICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeS0+c2l6
ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDAp
LCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5l
cmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9y
eSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0g
JGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAoaTMyLnN0b3JlOCAoaTMyLmNv
bnN0IDgpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2Fk
OF9zIChpMzIuY29uc3QgOCkpKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4
NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODYsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAxLCAweDAxLCAw
eDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAw
LCAweDA1LCAweDgzLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHgwMCwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
YiwgMHg2OSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEs
IDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAw
eDEwLCAweDA4LAorICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAg
ICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChw
bGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSksIDEwMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQg
ZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKGZ1bmMgImR1bWIt
ZXEiIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKQogICAgICAgICAv
LyAgICAgIChpZiAoaTMyLmVxIChnZXRfbG9jYWwgJHgpIChnZXRfbG9jYWwgJHkpKQogICAgICAg
ICAvLyAgICAgICAodGhlbiAoYnIgMCkpCiAgICAgICAgIC8vICAgICAgIChlbHNlIChyZXR1cm4g
KGkzMi5jb25zdCAxKSkpKQpAQCAtMjY1LDE0ICs3MjgsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FT
TVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDAp
LCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDEpOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSks
IDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEpOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2
KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MCkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94
KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJv
eCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCks
IGJveCg2KSB9KSwgMSk7CiAgICAgfQogCiAgICAgewpAQCAtMzA2LDE0ICs3NjksMTQgQEAgc3Rh
dGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSks
IDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDEpLCBib3goMikgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikg
fSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEwMCksIGJveCg2KSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDEpLCBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEwMCksIGJveCg2KSB9KSwgMCk7CiAgICAgfQogCiAKQEAgLTMzMyw3ICs3OTYs
NyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyB9KSwgNSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0pLCA1KTsKICAgICB9CiAKIApAQCAtMzU0
LDcgKzgxNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCAxMSk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0pLCAxMSk7CiAgICAgfQog
CiAgICAgewpAQCAtMzc0LDcgKzgzNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCAxMSk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0p
LCAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtMzk0LDcgKzg1Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0p
LCAxMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IH0pLCAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtNDEzLDEwICs4NzYsMTAg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgxKSB9KSwgMTAxKTsK
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgtMSks
IGJveCgxKX0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94KDEpIH0pLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goLTEpLCBib3go
MSl9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94
KDEpIH0pLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKICAgICB9CiAKICAgICB7
CkBAIC00NDIsOCArOTA1LDggQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApIH0pLCAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMCkgfSksIDEwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwKSB9KSwgMTApOwogICAgIH0KIAogICAg
IHsKQEAgLTQ3OCwxMCArOTQxLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSkgfSksIDEp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIp
fSksIDMpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEwMCkgfSksIDUwNTApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSkgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMil9KSwgMyk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCA1MDUwKTsKICAgICB9
CiAKICAgICB7CkBAIC01MjIsMTQgKzk4NSwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgx
KSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9KSwgMik7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMik7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgyKSB9KSwgNCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCg2KSB9KSwgMTIpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2KSB9KSwgNjAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMTAw
KSB9KSwgMTAwMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwg
Ym94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDIpOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSks
IGJveCgyKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCA0KTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIp
LCBib3goNikgfSksIDEyKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCg2KSB9KSwgNjAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveCgxMDApIH0pLCAxMDAwMCk7CiAgICAgfQogCiAgICAgewpAQCAtNTc1LDE0
ICsxMDM4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0p
LCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgyKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEp
IH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJv
eCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBi
b3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwg
Ym94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiks
IGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDApOwogICAgIH0KIAog
fQpAQCAtNTk2LDcgKzEwNTksNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgaWYgKG9wdGlvbnMubV9ydW5MRUJUZXN0cykKICAgICAgICAgcnVuTEVCVGVzdHMoKTsKIAot
CiAgICAgaWYgKG9wdGlvbnMubV9ydW5XQVNNVGVzdHMpIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBiNzFjMWFmYWE5
NDQ2MTZiYTE3ZmViZmM5NWVkYmNhYzYwZDNjYjQuLjE0OTlmZjBiZjZhN2M0YmZiMDAyNDYwOTgw
Y2I3MmUyMjk0MTcxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDb25z
dFB0clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKQEAgLTM3LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXQVNNQ2FsbGluZ0Nv
bnZlbnRpb24uaCIKICNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKKyNpbmNsdWRlICJX
QVNNTWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIHZvaWQgZHVtcFByb2Nl
ZHVyZSh2b2lkKiBwdHIpCkBAIC0xNjUsMTggKzE2OCwyNSBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBWZWN0b3I8VmFyaWFibGUqLCAxPiBSZXN1bHRMaXN0OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
RXhwcmVzc2lvblR5cGUgZW1wdHlFeHByZXNzaW9uID0gbnVsbHB0cjsKIAotICAgIEIzSVJHZW5l
cmF0b3IoUHJvY2VkdXJlJik7CisgICAgQjNJUkdlbmVyYXRvcihNZW1vcnkqLCBQcm9jZWR1cmUm
KTsKIAogICAgIHZvaWQgYWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYpOwogICAgIHZv
aWQgYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOwogICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0
YW50KFR5cGUsIHVpbnQ2NF90KTsKIAorICAgIC8vIExvY2FscwogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwg
RXhwcmVzc2lvblR5cGUgdmFsdWUpOwogCisgICAgLy8gTWVtb3J5CisgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gbG9hZChMb2FkT3BUeXBlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHN0b3JlKFN0b3JlT3BUeXBlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKworICAgIC8vIEJhc2ljIG9wZXJh
dG9ycwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGJpbmFyeU9wKEJpbmFyeU9wVHlwZSwg
RXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHVuYXJ5T3AoVW5hcnlPcFR5
cGUsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKKyAgICAv
LyBDb250cm9sIGZsb3cKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQmxv
Y2soVHlwZSBzaWduYXR1cmUpOwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRMb29wKFR5cGUgc2lnbmF0dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkSWYoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBUeXBlIHNpZ25hdHVyZSk7CkBAIC0x
OTEsMTYgKzIwMSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKGNvbnN0IFZlY3RvcjxDb250
cm9sVHlwZT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25T
dGFjayk7CiAKIHByaXZhdGU6CisgICAgRXhwcmVzc2lvblR5cGUgZW1pdENoZWNrQW5kUHJlcGFy
ZVBvaW50ZXIodWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJf
dCBzaXplT2ZPcCk7CisgICAgRXhwcmVzc2lvblR5cGUgZW1pdExvYWRPcChMb2FkT3BUeXBlLCBP
cmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIpOworICAgIHZvaWQgZW1pdFN0b3JlT3AoU3Rv
cmVPcFR5cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpOworCiAgICAgdm9pZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHByZXNz
aW9uVHlwZSBzb3VyY2UpOwogICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY29uc3QgRXhw
cmVzc2lvbkxpc3QmIHJlc3VsdFN0YWNrLCBSZXN1bHRMaXN0JiBzdGFjayk7CiAKKyAgICBNZW1v
cnkqIG1fbWVtb3J5OwogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1f
Y3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIC8vIEZJ
WE1FOiBUaGlzIHByb2JhYmx5IG5lZWRzIHRvIGJlIGEgdmFyaWFibGUgb3Igc29tZXRoaW5nLCBm
aXggaXQgd2hlbiB3ZSBjYW4gYWN0dWFsbHkgY2hhbmdlIG1lbW9yeSBzaXplLgorICAgIC8vIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcyNworICAgIFZh
bHVlKiBtX21lbW9yeUJhc2UgeyBudWxscHRyIH07CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlci4gc2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgVmFsdWUqIG1fbWVtb3J5U2l6ZSB7
IG51bGxwdHIgfTsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoUHJvY2VkdXJl
JiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVyYXRvcjo6QjNJ
UkdlbmVyYXRvcihNZW1vcnkqIG1lbW9yeSwgUHJvY2VkdXJlJiBwcm9jZWR1cmUpCisgICAgOiBt
X21lbW9yeShtZW1vcnkpCisgICAgLCBtX3Byb2MocHJvY2VkdXJlKQogewogICAgIG1fY3VycmVu
dEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiB9CkBAIC0yMjIsMjIgKzI0MywyMDEgQEAgdm9p
ZCBCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+JiB0eXBlcykK
ICAgICAgICAgICAgIG1fbG9jYWxzW2ldID0gYXJndW1lbnRWYXJpYWJsZTsKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9y
aWdpbigpLCBhcmd1bWVudFZhcmlhYmxlLCBhcmd1bWVudCk7CiAgICAgICAgIH0pOworCisgICAg
aWYgKG1fbWVtb3J5KSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFkZCB0aGUgY2FsbGlu
ZyBjb252ZW50aW9uIHdlIHNob3VsZCBoYXZlIHR3byBlbnRyeXBvaW50cyBhbmQgd2Ugc2hvdWxk
IGNoYW5nZSB0aGVzZSB0byByZWdpc3RlciBhcmd1bWVudHMuCisgICAgICAgIC8vIHNlZTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcyNworICAgICAgICBtX21l
bW9yeUJhc2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5iYXNlTWVtb3J5UG9p
bnRlcik7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25l
IHNpemUgcmVnaXN0ZXIuIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mjk1MgorICAgICAgICBtX21lbW9yeVNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5waW5uZWRS
ZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3Rlcik7CisgICAgfQogfQogCi1i
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6Z2V0TG9j
YWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KG1fbG9jYWxzW2luZGV4XSk7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tpbmRl
eF0pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lS
R2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUp
Citib29sIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgT3JpZ2lu
KCksIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxp
bmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHVpbnQz
Ml90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgc2l6ZU9mT3BlcmF0
aW9uKQoreworICAgIEFTU0VSVChtX21lbW9yeUJhc2UgJiYgbV9tZW1vcnlTaXplKTsKKyAgICAv
LyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFkZCB0aGUgbWVtb3J5T2Zmc2V0IHRvIHRo
ZSBwb2ludGVyIHdpdGggYSAzMmJpdCBhZGQKKyAgICAvLyBzbyBpZiBpdCBvdmVyZmxvd3Mgd2Ug
c3RheSB3aXRoaW4gb3VyIG1hcHBlZCBtZW1vcnkuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlci4gc2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgVmFsdWUqIG1lbW9yeU9mZnNldCA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9yaWdpbigpLCBJbnQz
Miwgb2Zmc2V0KTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBBZGQsIE9yaWdpbigpLCBwb2ludGVyLCBtZW1vcnlPZmZzZXQpOworICAgIHBv
aW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwg
T3JpZ2luKCksIHBvaW50ZXIpOworCisgICAgVmFsdWUqIHNpemVPZlZhbHVlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIEludDY0LCBzaXplT2ZP
cGVyYXRpb24pOworICAgIFZhbHVlKiBsYXN0Qnl0ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBPcmlnaW4oKSwgc2l6ZU9mVmFsdWUsIHBvaW50ZXIpOwor
ICAgIFZhbHVlKiBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgQWJvdmUsIE9yaWdpbigpLCBsYXN0Qnl0ZSwgbV9tZW1vcnlTaXplKTsKKyAgICBD
aGVja1ZhbHVlKiBib3VuZHNDaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4obV9wcm9jLCBDaGVjaywgT3JpZ2luKCksIG91dE9mQm91bmRzKTsKKyAgICBib3VuZHND
aGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgIH0pOwor
CisgICAgcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
QWRkLCBPcmlnaW4oKSwgbV9tZW1vcnlCYXNlLCBwb2ludGVyKTsKKyAgICByZXR1cm4gcG9pbnRl
cjsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZkxvYWRPcChMb2FkT3BUeXBlIG9wKQorewor
ICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzoKKyAgICBj
YXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4
UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4VToKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDE2UzoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2Fk
OgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyUzoKKyAgICBjYXNlIExvYWRPcFR5cGU6
Okk2NExvYWQzMlU6CisgICAgICAgIHJldHVybiA0OworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDoKKyAgICAgICAgcmV0dXJuIDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKy8vIEZJWE1FOiBC
MyBzaG91bGQgc3VwcG9ydCBJbnQ2NCBzbWFsbCBsb2FkcyBhbmQgMTYtYml0IHVuc2lnbmVkIGxv
YWRzLgoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRPcFR5cGUg
b3AsIE9yaWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIpCit7CisgICAgc3dpdGNo
IChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywg
b3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExv
YWQ4UzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywgb3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICAg
ICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMy
LCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4
VTogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgfQorCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwg
cG9pbnRlciwgMCk7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIFpFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJMzJMb2FkMTZTOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwg
MCk7CisgICAgfQorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzogeworICAgICAgICBW
YWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgICAgIHJldHVybiBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7
CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIElu
dDMyLCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDMyVTogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBa
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDMyUzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBT
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3As
IHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKworICAg
IHJlc3VsdCA9IGVtaXRMb2FkT3Aob3AsIE9yaWdpbigpLCBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9p
bnRlcihvZmZzZXQsIHBvaW50ZXIsIHNpemVPZkxvYWRPcChvcCkpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3ApCit7
CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTg6CisgICAgICAgIHJldHVybiAxOworICAgIGNh
c2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3Rv
cmUxNjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU6
CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUzMjoKKyAgICAgICAgcmV0dXJuIDQ7Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgICAgIHJldHVybiA4OworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCisKKy8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBzdXBwb3J0IGFuIEludDY0
IHN0b3JlOC4KK2lubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKFN0b3JlT3BU
eXBlIG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6
STY0U3RvcmU4OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsK
KworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTgsIG9yaWdpbiwgdmFsdWUs
IHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRT
dG9yZTE2OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKwor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUxNiwgb3JpZ2luLCB2YWx1ZSwg
cG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMzI6CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMy
U3RvcmU6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgU3RvcmUsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpzdG9yZShTdG9yZU9wVHlw
ZSBvcCwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKwor
ICAgIGVtaXRTdG9yZU9wKG9wLCBPcmlnaW4oKSwgZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIo
b2Zmc2V0LCBwb2ludGVyLCBzaXplT2ZTdG9yZU9wKG9wKSksIHZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9wLCBF
eHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBP
cmlnaW4oKSwgYXJnKTsKQEAgLTQwMywxMCArNjAzLDcwIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJl
c3NpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGls
YXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBG
dW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQorCitzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwg
TWVtb3J5KiBtZW1vcnkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBDaGVjayBhcmd1bWVudCBjb3VudCBp
cyBzYW5lLgorICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN1cHBvc2VkIHRvIHRyYXAgaWYgbGVzcyB0
aGFuIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHM/CisgICAgVmFsdWUqIGZyYW1lUG9pbnRl
ciA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBP
cmlnaW4oKSk7CisgICAgVmFsdWUqIG9mZlNldE9mQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpOworICAgIFZhbHVlKiBhcmd1bWVudENvdW50ID0g
YmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBm
cmFtZVBvaW50ZXIsIG9mZlNldE9mQXJndW1lbnRDb3VudCkpOworCisgICAgVmFsdWUqIGV4cGVj
dGVkQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpKTsKKworICAgIENoZWNrVmFsdWUq
IGFyZ3VtZW50Q291bnRDaGVjayA9IGJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2ssIE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
Ym92ZSwgT3JpZ2luKCksIGV4cGVjdGVkQXJndW1lbnRDb3VudCwgYXJndW1lbnRDb3VudCkpOwor
ICAgIGFyZ3VtZW50Q291bnRDaGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBqaXQuYnJlYWtw
b2ludCgpOworICAgIH0pOworCisgICAgLy8gTW92ZSBtZW1vcnkgdmFsdWVzIHRvIHRoZSBhcHBy
b3JpYXRlIHBsYWNlcywgaWYgbmVlZGVkLgorICAgIFZhbHVlKiBiYXNlTWVtb3J5ID0gbnVsbHB0
cjsKKyAgICBWZWN0b3I8VmFsdWUqPiBzaXplczsKKyAgICBpZiAobWVtb3J5KSB7CisgICAgICAg
IGJhc2VNZW1vcnkgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBtZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgVmFsdWUqIHNpemUgPSBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAg
ICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KG1lbW9yeSkgKyBNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKSk7CisgICAg
ICAgIHNpemVzLnJlc2VydmVDYXBhY2l0eShtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVS
ZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGluZm8gOiBtZW1vcnktPnBpbm5l
ZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHNpemVzLmFwcGVuZChi
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBzaXplLAorICAgICAg
ICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
aW5mby5zaXplT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gR2V0IG91ciBh
cmd1bWVudHMuCisgICAgVmVjdG9yPFZhbHVlKj4gYXJndW1lbnRzOworICAgIGpzY0NhbGxpbmdD
b252ZW50aW9uKCkuaXRlcmF0ZShzaWduYXR1cmUtPmFyZ3VtZW50cywgcHJvYywgYmxvY2ssIE9y
aWdpbigpLCBbJl0gKFZhbHVlKiBhcmd1bWVudCwgdW5zaWduZWQpIHsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgfSk7CisKKyAgICAvLyBNb3ZlIHRoZSBhcmd1bWVu
dHMgaW50byBwbGFjZS4KKyAgICBWYWx1ZSogcmVzdWx0ID0ganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS5zZXR1cENhbGwocHJvYywgYmxvY2ssIE9yaWdpbigpLCBtYWluRnVuY3Rpb24sIGFyZ3VtZW50
cywgdG9CM1R5cGUoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKSwgWyZdIChQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKG1lbW9yeSkgeworICAgICAgICAgICAgQVNTRVJU
KHNpemVzLnNpemUoKSA9PSBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGJhc2VNZW1vcnksIFZhbHVlUmVwOjpyZWcobWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5iYXNl
TWVtb3J5UG9pbnRlcikpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShzaXplc1tpXSwgVmFsdWVSZXA6OnJlZyhtZW1vcnktPnBpbm5lZFJlZ2lz
dGVycygpLnNpemVSZWdpc3RlcnNbaV0uc2l6ZVJlZ2lzdGVyKSkpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCwgaWYgbmVlZWRlZC4KKyAgICBpZiAoc2ln
bmF0dXJlLT5yZXR1cm5UeXBlICE9IFZvaWQpCisgICAgICAgIGJsb2NrLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgQjM6OlJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgZWxzZQor
ICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEIzOjpSZXR1cm4sIE9y
aWdpbigpKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwg
cHJvYyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgTWVtb3J5KiBtZW1vcnks
IEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCiB7CiAgICAgUHJv
Y2VkdXJlIHByb2NlZHVyZTsKLSAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQocHJvY2VkdXJlKTsK
KyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQobWVtb3J5LCBwcm9jZWR1cmUpOwogICAgIEZ1bmN0
aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBzb3VyY2UsIGluZm8pOwog
ICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC00MTcsNyArNjc3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4g
cGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIEZ1CiAgICAg
Zml4U1NBKHByb2NlZHVyZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlBv
c3QgU1NBOiAiLCBwcm9jZWR1cmUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1
bmN0aW9uQ29tcGlsYXRpb24+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb25Db21w
aWxhdGlvbj4oKTsKKworICAgIHJlc3VsdC0+Y29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGls
YXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKKyAgICByZXN1bHQtPmpzRW50cnlQb2lu
dCA9IGNyZWF0ZUpTV3JhcHBlcih2bSwgaW5mby5zaWduYXR1cmUsIHJlc3VsdC0+Y29kZS0+Y29k
ZSgpLCBtZW1vcnkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJ
UkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0
b3IuaAppbmRleCA5NTE5NmRiZTU3N2RhYWZhYmE5NzhhNTYwNGM5MDZjZDY1NWJmYzgzLi5mODI4
MmQwYzk1NWMyNmY3ZTdjMDEyNDU3OTdiOTkxNmQ0ZGI5MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDkgQEAgZXh0
ZXJuICJDIiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCopOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdBU00gewogCi1zdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mLCBWZWN0b3I8dWludDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNp
Z25lZCBvcHRMZXZlbCA9IDEpOworY2xhc3MgTWVtb3J5OworCitzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+Jiwg
TWVtb3J5KiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA3ODk1OTMxMDI0YTUzZDY3ZDVj
NzliOTQ0ZWNmMmIyYjUyYWIxNzQ1Li5iOTkyZjRiNzg3YjI3OWE4YWM5NGFhOWU0ZmI3NTVjMTNm
YTIzZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaApAQCAtMjcsMjMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKKyNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNs
dWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKICNp
bmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXR5cGVkZWYgdW5zaWduZWQg
KCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwordHlwZWRl
ZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBl
IHR5cGUpOwogCi10ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRlT2Zm
c2V0PgordGVtcGxhdGU8dW5zaWduZWQgaGVhZGVyU2l6ZSwgTmV4dE9mZnNldCB1cGRhdGVPZmZz
ZXQ+CiBjbGFzcyBDYWxsaW5nQ29udmVudGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGhlYWRlclNpemUgPSBvZmZzZXQ7Ci0KICAgICBDYWxsaW5nQ29udmVudGlvbihW
ZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVyQXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNh
dmVSZWdpc3RlcnMpCiAgICAgICAgIDogbV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3Vt
ZW50cykKICAgICAgICAgLCBtX2NhbGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVy
cykKQEAgLTY0LDE4ICs2OCw1MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQjM6OlZhbHVl
KiBhZGRyZXNzID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpBZGQsIG9y
aWdpbiwgZnJhbWVQb2ludGVyLAogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3
PEIzOjpDb25zdDY0VmFsdWU+KHByb2MsIG9yaWdpbiwgY3VycmVudE9mZnNldCkpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KHBy
b2MsIEIzOjpMb2FkLCB0b0IzVHlwZShhcmd1bWVudFR5cGVzW2ldKSwgb3JpZ2luLCBhZGRyZXNz
KTsKLSAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJlbnRP
ZmZzZXQsIGFyZ3VtZW50VHlwZXNbaV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQg
PSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEIzOjpW
YWx1ZSogc2V0dXBDYWxsKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9j
aywgQjM6Ok9yaWdpbiBvcmlnaW4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIGNvbnN0
IFZlY3RvcjxCMzo6VmFsdWUqPiYgYXJndW1lbnRzLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBjb25z
dCBGdW5jdG9yJiBwYXRjaHBvaW50RnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIHN0YWNrQXJndW1lbnRDb3VudCA9IGFyZ3VtZW50cy5zaXplKCkgPCBtX3JlZ2lzdGVyQXJn
dW1lbnRzLnNpemUoKSA/IDAgOiBhcmd1bWVudHMuc2l6ZSgpIC0gbV9yZWdpc3RlckFyZ3VtZW50
cy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGhlYWRlclNpemUgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQyk7CisKKyAgICAgICAgcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXpl
SW5CeXRlcyhXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBo
ZWFkZXJTaXplICsgKHN0YWNrQXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpKSk7Cisg
ICAgICAgIFZlY3RvcjxCMzo6Q29uc3RyYWluZWRWYWx1ZT4gY29uc3RyYWluZWRBcmd1bWVudHM7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCByZXA7CisgICAgICAgICAgICBpZiAoaSA8IG1f
cmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1
ZVJlcDo6cmVnKG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXQpOwor
ICAgICAgICAgICAgY29uc3RyYWluZWRBcmd1bWVudHMuYXBwZW5kKEIzOjpDb25zdHJhaW5lZFZh
bHVlKGFyZ3VtZW50c1tpXSwgcmVwKSk7CisgICAgICAgICAgICBvZmZzZXQgPSB1cGRhdGVPZmZz
ZXQob2Zmc2V0LCBhcmd1bWVudHNbaV0tPnR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCByZXR1cm5UeXBlLCBvcmlnaW4pOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVudHMpOworICAgICAgICBwYXRjaHBv
aW50RnVuY3RvcihwYXRjaHBvaW50KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0
LmNhbGwoKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rp
b25QdHIodGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpZiAocmV0dXJuVHlwZSAhPSBCMzo6Vm9pZCkKKyAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBjb25zdCBWZWN0b3I8R1BSUmVnPiBtX3JlZ2lzdGVyQXJndW1lbnRzOwogICAgIGNvbnN0
IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBjb25zdCBSZWdpc3RlclNl
dCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7CiB9OwogCi1pbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09m
ZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlKQoraW5saW5lIHVuc2lnbmVkIG5leHRK
U0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgQjM6OlR5cGUpCiB7CiAgICAgcmV0dXJu
IGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZvcm1hdC5oCmluZGV4IDdhMDQxMzdlM2M3MGYxODI0NzEwYWNkOTg4NDdmNzIx
NTYyNGQwMWQuLjFlMTA4MTBkM2ZmNmVlMGE4NzY0YjMyYjM2ZTgwNTZkZDM0NWE2YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNp
bmNsdWRlICJCM1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMjYsNiArMTI3LDExIEBAIHN0cnVjdCBGdW5jdGlvbklu
Zm9ybWF0aW9uIHsKICAgICBzaXplX3QgZW5kOwogfTsKIAorc3RydWN0IEZ1bmN0aW9uQ29tcGls
YXRpb24geworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGNvZGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4ganNFbnRyeVBvaW50OworfTsKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggYWU4NzQyNDBjOTIyOGQyZDgzOTc0NDZlMTU4N2EyZDQ0NjkxZmEzZC4uZjM1MDZlZDc1YmVk
NjNlN2EwNjRjM2QyNjU0ODFjYzZlZTQ4YjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTE1NCw2ICsxNTQsMzkgQEAgYm9vbCBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9P
UChDUkVBVEVfQ0FTRSkgeworICAgICAgICAvLyBUT0RPOiBXaGF0IGRvIEkgZG8gd2l0aCB0aGlz
PworICAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50
MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50
MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVz
dWx0OworICAgICAgICBpZiAoIW1fY29udGV4dC5sb2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+
KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpIHsKKyAgICAgICAgLy8gVE9ETzogV2hhdCBkbyBJIGRvIHdpdGggdGhpcz8KKyAg
ICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFs
aWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qg
b2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJl
c3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5z
dG9yZShzdGF0aWNfY2FzdDxTdG9yZU9wVHlwZT4ob3ApLCBvZmZzZXQsIHBvaW50ZXIsIHZhbHVl
KTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAgdWludDMy
X3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjI2YjY1
MmJmOTdkYTJjODYwY2Q2NmU5ODg5YTZhNmIzYmZmYzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK01lbW9yeTo6TWVtb3J5
KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVu
c2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycykKKyAgICA6IG1fbW9kZShNb2RlOjpCb3VuZHND
aGVja2luZykKKyAgICAsIG1fc2l6ZShzdGFydGluZ1NpemUpCisgICAgLCBtX21heFNpemUobWF4
U2l6ZSkKK3sKKyAgICBBU1NFUlQocGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgPiAwKTsKKyAg
ICB2b2lkKiByZXN1bHQgPSBtbWFwKG51bGxwdHIsIG1heFBhZ2VOdW0sIFBST1RfTk9ORSwgTUFQ
X1BSSVZBVEUgfCBNQVBfQU5PTiwgMCwgMCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
Ly8gVHJ5IGFnYWluIHdpdGggYSBkaWZmZXJlbnQgbnVtYmVyLgorICAgICAgICByZXN1bHQgPSBt
bWFwKG51bGxwdHIsIG1heFBhZ2VOdW0sIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5P
TiwgMCwgMCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtcHJvdGVjdChyZXN1bHQsIHN0YXJ0aW5nU2l6ZSwgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSkpIHsKKyAgICAgICAgbXVubWFwKHJlc3VsdCwgbWF4U2l6ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMg
PSBwaW5uZWRTaXplUmVnaXN0ZXJzLnNpemUoKSArIDE7CisgICAganNjQ2FsbGluZ0NvbnZlbnRp
b24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAg
ICAgR1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAgaWYgKGdwciA9PSBDQ2FsbEhlbHBl
cnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyIHx8IGdwciA9PSBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7CisgICAgICAgICAgICBtX3Bpbm5lZFJlZ2lzdGVy
cy5iYXNlTWVtb3J5UG9pbnRlciA9IGdwcjsKKyAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJl
Z2lzdGVycy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fcGlubmVkUmVnaXN0ZXJz
LnNpemVSZWdpc3RlcnMuYXBwZW5kKHsgZ3ByLCBwaW5uZWRTaXplUmVnaXN0ZXJzWy0tcmVtYWlu
aW5nUGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7CisgICAgfSk7CisKKyAgICBBU1NFUlQoIXJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycyk7CisgICAgbV9tZW1vcnkgPSByZXN1bHQ7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCit9IC8vIG5hbWVzcGFjZSBXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
TWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGJlNzI2YzgxOWJlMjllYWE2ODJmZDNmODA3ZDNmOTVlYTU2M2QwOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaApAQCAtMCww
ICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJXQVNN
Q2FsbGluZ0NvbnZlbnRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKKworc3RydWN0IFBpbm5lZFNpemVSZWdpc3Rlcklu
Zm8geworICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7CisgICAgdW5zaWduZWQgc2l6ZU9mZnNldDsK
K307CisKK3N0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8geworICAgIFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOworICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRl
cjsKK307CisKK2NvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlTnVtID0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpIC8gNjQgLyBLQjsKKworY2xhc3MgTWVtb3J5IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNZW1vcnkpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG90aGVyIG1vZGVz
LiBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAg
ICBlbnVtIGNsYXNzIE1vZGUgeworICAgICAgICBCb3VuZHNDaGVja2luZworICAgIH07CisKKyAg
ICBNZW1vcnkoKSA9IGRlZmF1bHQ7CisgICAgTWVtb3J5KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwg
dWludDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lz
dGVycyk7CisKKyAgICB+TWVtb3J5KCkKKyAgICB7CisgICAgICAgIGlmIChtX21lbW9yeSkKKyAg
ICAgICAgICAgIG11bm1hcChtX21lbW9yeSwgbV9tYXhTaXplKTsKKyAgICB9CisKKyAgICB2b2lk
KiBtZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeTsgfQorICAgIHVpbnQzMl90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8m
IHBpbm5lZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkUmVnaXN0ZXJzOyB9CisK
KyAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKworICAgIGJvb2wgZ3Jv
d01lbW9yeSh1aW50MzJfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5
KTsKKyAgICAgICAgaWYgKG5ld1NpemUgPiBtX21heFNpemUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgcmV0dXJuICFtcHJvdGVjdChtX21lbW9yeSwgbmV3U2l6ZSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIHZvaWQqIG1fbWVtb3J5IHsgbnVsbHB0ciB9OworICAgIFBpbm5l
ZFJlZ2lzdGVySW5mbyBtX3Bpbm5lZFJlZ2lzdGVyczsKKyAgICBNb2RlIG1fbW9kZTsKKyAgICB1
aW50MzJfdCBtX3NpemUgeyAwIH07CisgICAgdWludDMyX3QgbV9tYXhTaXplIHsgMCB9OworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNw
cAppbmRleCA1ZTA1M2E1YTc5MDNhNTRlYjg2NDU2NDY4MmUzZTlkMTcxMGIyMTY0Li5lODMwNDJl
MGVjYTg0MWY3OTIxY2IwMDQxOGRjYjllNzNiYzEzZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMjgsMTAgKzI4LDEzIEBACiAK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNp
bmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldB
U01TZWN0aW9ucy5oIgogCisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKwogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXQVNNIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpA
QCAtNjIsMTUgKzY1LDE2IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJTdGFydGluZyB0byBwYXJzZSBuZXh0
IHNlY3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNldCk7CiAKLSAgICAgICAgU2VjdGlvbnM6OlNl
Y3Rpb24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICB1aW50OF90IHNlY3Rp
b25CeXRlOwogICAgICAgICBpZiAoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0
YUxvZ0xuKCJTZWN0aW9uIGJ5dGU6ICIsIHNlY3Rpb25CeXRlKTsKKworICAgICAgICBTZWN0aW9u
czo6U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247CiAgICAgICAgIGlmIChzZWN0
aW9uQnl0ZSkgewotICAgICAgICAgICAgaWYgKHNlY3Rpb25CeXRlID49IFNlY3Rpb25zOjpVbmtu
b3duKQotICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93bjsKLSAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA8IFNlY3Rpb25zOjpVbmtu
b3duKQogICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2Vj
dGlvbj4oc2VjdGlvbkJ5dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdWludDMy
X3Qgc2VjdGlvbk5hbWVMZW5ndGg7CkBAIC05Niw2ICsxMDAsMTUgQEAgYm9vbCBNb2R1bGVQYXJz
ZXI6OnBhcnNlKCkKICAgICAgICAgdW5zaWduZWQgZW5kID0gbV9vZmZzZXQgKyBzZWN0aW9uTGVu
Z3RoOwogCiAgICAgICAgIHN3aXRjaCAoc2VjdGlvbikgeworCisgICAgICAgIGNhc2UgU2VjdGlv
bnM6Ok1lbW9yeTogeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJQYXJzaW5nIE1lbW9yeS4iKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VNZW1v
cnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU2VjdGlvbnM6OkZ1bmN0aW9uVHlwZXM6IHsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2lu
ZyB0eXBlcy4iKTsKQEAgLTE0Myw2ICsxNTYsMzQgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNl
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5
KCkKK3sKKyAgICB1aW50OF90IGZsYWdzOworICAgIGlmICghcGFyc2VWYXJVSW50MShmbGFncykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFw
YXJzZVZhclVJbnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzaXpl
ID4gbWF4UGFnZU51bSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDMyX3QgbWF4
ID0gbWF4UGFnZU51bTsKKyAgICBpZiAoZmxhZ3MpIHsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJ
bnQzMihtYXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc2l6ZSA+
IG1heCB8fCBtYXggPiBtYXhQYWdlTnVtKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIG1heCAqPSA2NCAqIEtCOworICAgIHNpemUgKj0gNjQgKiBLQjsKKworICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKKyAgICBtX21lbW9yeSA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVtb3J5PihzaXplLCBtYXgsIHBpbm5lZFNpemVzKTsKKyAgICByZXR1cm4g
bV9tZW1vcnktPm1lbW9yeSgpOworfQorCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlv
blR5cGVzKCkKIHsKICAgICB1aW50MzJfdCBjb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAppbmRleCA0NjBiZThmYmIzNmYwMmZhZjRhZDUzOGIx
Y2U1MmIyZWQ1MTI1NGZkLi43NWU0ZDEwYWRmNjAzNDc3Mzg3N2MxZWYwYWJkNjFjNGZhMjQ2NGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJX
QVNNTWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldBU01QYXJzZXIu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NSwxOCArNDYsMTkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsKIAotICAgIGNvbnN0IFZlY3Rv
cjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIHsgcmV0dXJuIG1f
ZnVuY3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5j
dGlvbkluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVtb3J5PiYgbWVtb3J5KCkgeyByZXR1cm4gbV9tZW1vcnk7IH0KIAogcHJp
dmF0ZToKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9yeSgpOwogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25UeXBlcygpOwogICAgIGJvb2wgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKCk7CiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCk7CiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24odWludDMyX3QgbnVtYmVyKTsK
LSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VFeHByZXNzaW9uKE9wVHlwZSk7CiAKICAgICBWZWN0b3I8RnVu
Y3Rpb25JbmZvcm1hdGlvbj4gbV9mdW5jdGlvbnM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9z
aWduYXR1cmVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+IG1fbWVtb3J5OwogfTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01PcHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMu
aAppbmRleCA2ZWY1YmQ0ZDE2MGQzMWY3MTAzMTllM2U3Y2M3NzhmYTRmYzg3N2RjLi42ZDM0ODhj
ZjQ5ODA0MzNlOTA0YmFlMDA1NDQ0ODM3Y2FkMDAyZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU9wcy5oCkBAIC0xNTksMTMgKzE1OSw0MiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIFdBU00gewogICAgIG1hY3JvKEY2NEd0LCAweDliLCBPb3BzKSBcCiAgICAgbWFjcm8oRjY0
R2UsIDB4OWMsIE9vcHMpCiAKKyNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUCht
YWNybykgXAorICAgIG1hY3JvKEkzMkxvYWQ4UywgMHgyMCwgT29wcykgXAorICAgIG1hY3JvKEkz
MkxvYWQ4VSwgMHgyMSwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQxNlMsIDB4MjIsIE9vcHMp
IFwKKyAgICBtYWNybyhJMzJMb2FkMTZVLCAweDIzLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9h
ZDhTLCAweDI0LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDhVLCAweDI1LCBPb3BzKSBcCisg
ICAgbWFjcm8oSTY0TG9hZDE2UywgMHgyNiwgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQxNlUs
IDB4MjcsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMzJTLCAweDI4LCBPb3BzKSBcCisgICAg
bWFjcm8oSTY0TG9hZDMyVSwgMHgyOSwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQsIDB4MmEs
IE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkLCAweDJiLCBPb3BzKSBcCisgICAgbWFjcm8oRjMy
TG9hZCwgMHgyYywgT29wcykgXAorICAgIG1hY3JvKEY2NExvYWQsIDB4MmQsIE9vcHMpCisKKyNk
ZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJ
MzJTdG9yZTgsIDB4MmUsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJTdG9yZTE2LCAweDJmLCBPb3Bz
KSBcCisgICAgbWFjcm8oSTY0U3RvcmU4LCAweDMwLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3Rv
cmUxNiwgMHgzMSwgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlMzIsIDB4MzIsIE9vcHMpIFwK
KyAgICBtYWNybyhJMzJTdG9yZSwgMHgzMywgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlLCAw
eDM0LCBPb3BzKSBcCisgICAgbWFjcm8oRjMyU3RvcmUsIDB4MzUsIE9vcHMpIFwKKyAgICBtYWNy
byhGNjRTdG9yZSwgMHgzNiwgT29wcykKKwogCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9PUCht
YWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykgXAogICAgIEZPUl9F
QUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFS
WV9PUChtYWNybykgXAotICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKQorICAgIEZP
Ul9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllf
TE9BRF9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3Jv
KQogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQs
CiAKQEAgLTE4OSw2ICsyMTgsMTQgQEAgZW51bSBjbGFzcyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCiB9OwogCitl
bnVtIGNsYXNzIExvYWRPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9S
WV9MT0FEX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKworZW51bSBjbGFzcyBTdG9yZU9wVHlw
ZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9F
TlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9FTlVNX1ZBTFVFCiAKIGlubGluZSBib29s
IGlzQ29udHJvbE9wKE9wVHlwZSBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFu
LmNwcAppbmRleCA3YmQ2MGQyM2YxMWEyOWFjZTFlMzdhNjE4NzVmZTRiNWNmMGRiY2I5Li5hMDgz
NzM4NTg0ZDU2NjkyNmEyNTIyZGI5MWNkNmM5NGY4ZTZhNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJCM0Nv
bXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUIzSVJHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJX
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJXQVNNTW9kdWxlUGFyc2VyLmgiCiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIApAQCAtNTMsOCArNTQsOSBAQCBQbGFuOjpQbGFuKFZN
JiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5m
b3JtYXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1
bmNpb24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5m
by5lbmQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNl
LCBpbmZvKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQocGFyc2VBbmRDb21waWxlKHZtLCBzb3Vy
Y2UsIG1vZHVsZVBhcnNlci5tZW1vcnkoKS5nZXQoKSwgaW5mbykpOwogICAgIH0KKyAgICBtZW1v
cnkgPSBXVEZNb3ZlKG1vZHVsZVBhcnNlci5tZW1vcnkoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
UGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaAppbmRleCBkM2M5
ZTIyYTVhYmExNzI2NDNmMzc5MTYwYzM4YjhlNGI0OTJiMThjLi5iODQ1ZWUxNDg5NzhmOTYwMTA3
NjkwNjQwYTVkMTBiNmZjN2YzNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFu
LmgKQEAgLTI5LDIzICsyOSwyMCBAQAogCiAjaW5jbHVkZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIK
ICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVz
cGFjZSBKU0MgewotCi1uYW1lc3BhY2UgQjMgewotY2xhc3MgQ29tcGlsYXRpb247Ci19IC8vIG5h
bWVzcGFjZSBCMwotCi1uYW1lc3BhY2UgV0FTTSB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdBU00geworY2xhc3MgTWVtb3J5OwogCiAvLyBUT0RPOiBUaGlzIHNob3VsZCBjcmVhdGUgYSBX
QVNNIE1vZHVsZSBub3QgYSBsaXN0IG9mIGZ1bmN0aW9ucy4KIGNsYXNzIFBsYW4gewogcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBWZWN0b3I8dWludDhfdD4gc291cmNl
KTsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPj4gcmVzdWx0
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4+IHJlc3Vs
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBtZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTVNlY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMu
aAppbmRleCA1M2U5MzU2ZTIzOGZhNDJjNWI1ODcxMDk5MzZiNTcwMDhlN2M2Nzk5Li4wN2M3MmQ0
MWQzYmVlZGNkMTcyMzhhOGMyMDA0MjMyNzUxM2I0NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNU2VjdGlvbnMuaApAQCAtMzMsNiArMzMsNyBAQCBzdHJ1Y3QgU2VjdGlvbnMg
ewogICAgIGVudW0gU2VjdGlvbiA6IHVpbnQ4X3QgewogICAgICAgICBGdW5jdGlvblR5cGVzID0g
MSwKICAgICAgICAgU2lnbmF0dXJlcyA9IDMsCisgICAgICAgIE1lbW9yeSA9IDUsCiAgICAgICAg
IERlZmluaXRpb25zID0gMTAsCiAgICAgICAgIFVua25vd24KICAgICB9OwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1NGNhNjQ3ZWY0ZjE1
Y2Y5MTMxMmYwNzc0YzhiNGIwMGExNTAzNzU0Li5jZTc4ZTZmMTdkODI3YmQzMWQ0ZmIyOTgyYzJi
MWVlZWNjMmI0ZGQ0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTA0ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXQVNNIE1l
bW9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTcxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdG9yZSBhbmQgbG9hZCBvcGNvZGVzIHRvIHdhc20uanNvbi4gQWRkaXRpb25hbGx5LCBhZGQg
bmV3CisgICAgICAgIGVudW1zIGZvciB0aG9zZSBvcGNvZGVzIGluIHRoZSBnZW5lcmF0b3IuCisK
KyAgICAgICAgKiBzdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qczoKKyAgICAg
ICAgKGNvbnN0LnRlbXBsYXRlLnByYWdtYS5vbmNlLkVOQUJMRS5XRUJBU1NFTUJMWS5pbmNsdWRl
LmNzdGRpbnQubmFtZXNwYWNlLkpTQy5uYW1lc3BhY2UuV0FTTS5lbnVtLkxvYWRPcFR5cGUpOgor
ICAgICAgICAoY29uc3QudGVtcGxhdGUucHJhZ21hLm9uY2UuRU5BQkxFLldFQkFTU0VNQkxZLmlu
Y2x1ZGUuY3N0ZGludC5uYW1lc3BhY2UuSlNDLm5hbWVzcGFjZS5XQVNNLmVudW0uU3RvcmVPcFR5
cGUpOgorICAgICAgICAqIHN0cmVzcy93YXNtL3dhc20uanNvbjoKKwogMjAxNi0xMC0wNCAgSkYg
QmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IGhh
bmRsZSBhIGZldyBjb3JuZXIgY2FzZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3dhc20v
Z2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy93YXNtL2dlbmVyYXRl
LXdhc21vcHMtaGVhZGVyLmpzCmluZGV4IGNlNTI4OTcxOTI3NjRhZDk5ZjU1MTExMTNhY2QyMmVi
MmEzMTU2ZGUuLjg0Y2IyZmZlMTg0YzE1MDQyZmJmYWMwMjNkZjVjYmQzYzhmNGY3ZjQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcwpAQCAtMzYs
NiArMzYsMTAgQEAgY29uc3QgZGVmaW5lcyA9IFsKICAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3Ag
PT4gb3AuY2F0ZWdvcnkgPT09ICJhcml0aG1ldGljIiAmJiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09
PSAxKSwKICAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pIiwK
ICAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAiYXJpdGhtZXRp
YyIgfHwgb3AuY2F0ZWdvcnkgPT09ICJjb21wYXJpc29uIikgJiYgb3AucGFyYW1ldGVyLmxlbmd0
aCA9PT0gMiksCisgICAgIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1Ao
bWFjcm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAi
bG9hZCIpKSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1Ao
bWFjcm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAi
c3RvcmUiKSksCiAgICAgIlxuXG4iXS5qb2luKCIiKTsKIAogY29uc3Qgb3BWYWx1ZVNldCA9IG5l
dyBTZXQob3Bjb2RlSXRlcmF0b3Iob3AgPT4gdHJ1ZSwgb3AgPT4gb3Bjb2Rlc1tvcF0udmFsdWUp
KCkpOwpAQCAtOTQsNyArOTgsOSBAQCAke2RlZmluZXN9CiAgICAgRk9SX0VBQ0hfV0FTTV9TUEVD
SUFMX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3Jv
KSBcXAogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AobWFjcm8pIFxcCi0gICAgRk9SX0VBQ0hf
V0FTTV9CSU5BUllfT1AobWFjcm8pCisgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8p
IFxcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXFwKKyAgICBGT1Jf
RUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9W
QUxVRShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCkBAIC0xMTgsNiArMTI0LDE0IEBAIGVu
dW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZ
X09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBjbGFzcyBMb2FkT3BUeXBlIDogdWlu
dDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfRU5VTV9WQUxV
RSkKK307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKICN1bmRlZiBD
UkVBVEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9vbCBpc0NvbnRyb2xPcChPcFR5cGUgb3ApCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvc3RyZXNz
L3dhc20vd2FzbS5qc29uCmluZGV4IDY2MzYxYjdkNmE2YjlkMjRkNmFiNzNiMzM5NWJmZTVjYjk3
MmQ1MzUuLjU1MTYzYjA1ZjNhYTRjNDM5NmMwMDVhZWEyYjllM2UzNTBjNGFkNGEgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvc3RyZXNzL3dh
c20vd2FzbS5qc29uCkBAIC02NywyOSArNjcsMjkgQEAKICAgICAgICAgInNldF9nbG9iYWwiOiAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMTg4LCAicmV0dXJu
IjogWyJhbnkiXSwgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMjIsICJyZXR1cm4iOiBb
ImFueSJdLCAgInBhcmFtZXRlciI6IFsiYW55KiJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2Fs
bCBhIGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIzLCAicmV0dXJuIjog
WyJhbnkiXSwgICJwYXJhbWV0ZXIiOiBbImFueSoiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNh
bGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKLSAg
ICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAg
InZhbHVlIjogIDMyLCAicmV0dXJuIjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJpMzIu
bG9hZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICAz
MywgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNj
cmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTMyLmxvYWQxNl9zIjog
ICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgMzQsICJyZXR1cm4i
OiBbImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
bG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5sb2FkMTZfdSI6ICAgICAgICB7ICJj
YXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJpMzIiXSwg
ICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9m
ZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBt
ZW1vcnkiIH0sCi0gICAgICAgICJpNjQubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
bWVtb3J5IiwgICAgICJ2YWx1ZSI6ICAzNiwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVy
IjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAot
ICAgICAgICAiaTY0LmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJd
LCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImk2
NC5sb2FkMTZfcyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjog
IDM4LCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRl
c2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJpNjQubG9hZDE2X3Ui
OiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICAzOSwgInJldHVy
biI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQzMl9zIjogICAgICAgIHsg
ImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDAsICJyZXR1cm4iOiBbImk2NCJd
LCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAi
b2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9t
IG1lbW9yeSIgfSwKLSAgICAgICAgImk2NC5sb2FkMzJfdSI6ICAgICAgICB7ICJjYXRlZ29yeSI6
ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQxLCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0
ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0s
Ci0gICAgICAgICJpMzIubG9hZCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5Iiwg
ICAgICJ2YWx1ZSI6ICA0MiwgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRy
Il0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAg
ICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAi
aTY0LmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUi
OiAgNDMsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImYzMi5sb2FkIjog
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0
dXJuIjogWyJmMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJmNjQubG9hZCI6ICAgICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiZjY0
Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZy
b20gbWVtb3J5IiB9LAotICAgICAgICAiaTMyLnN0b3JlOCI6ICAgICAgICAgIHsgImNhdGVnb3J5
IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFt
ZXRlciI6IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJm
bGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0Iiwg
InR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9
LAotICAgICAgICAiaTMyLnN0b3JlMTYiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIs
ICAgICAidmFsdWUiOiAgNDcsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRk
ciIsICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFy
dWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAi
aTY0LnN0b3JlOCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUi
OiAgNDgsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LnN0b3JlMTYi
OiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDksICJyZXR1
cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LnN0b3JlMzIiOiAgICAgICAgIHsg
ImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTAsICJyZXR1cm4iOiBbXSwgICAg
ICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAi
b2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8g
bWVtb3J5IiB9LAotICAgICAgICAiaTMyLnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5Ijog
Im1lbW9yeSIsICAgICAidmFsdWUiOiAgNTEsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFn
cyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAot
ICAgICAgICAiaTY0LnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNTIsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIs
ICJpNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiZjMy
LnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NTMsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJmMzIiXSwgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVz
Y3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiZjY0LnN0b3JlIjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTQsICJyZXR1cm4i
OiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJmNjQiXSwgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
c3RvcmUgdG8gbWVtb3J5IiB9LAorICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNh
dGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgMzIsICJyZXR1cm4iOiBbImkzMiJdLCAg
InBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zm
c2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1l
bW9yeSIgfSwKKyAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJs
b2FkIiwgICAgICAgInZhbHVlIjogIDMzLCAicmV0dXJuIjogWyJpMzIiXSwgICJwYXJhbWV0ZXIi
OiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3Mi
LCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisg
ICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAg
ICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0s
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAiaTMy
LmxvYWQxNl91IjogICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAg
MzUsICJyZXR1cm4iOiBbImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVz
Y3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImk2NC5sb2FkOF9zIjog
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDM2LCAicmV0dXJu
IjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpNjQubG9hZDhfdSI6ICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiaTY0Il0s
ICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20g
bWVtb3J5IiB9LAorICAgICAgICAiaTY0LmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5Ijog
ImxvYWQiLCAgICAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFn
cyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
KyAgICAgICAgImk2NC5sb2FkMTZfdSI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAg
ICAgInZhbHVlIjogIDM5LCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIi
XSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJp
NjQubG9hZDMyX3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1ZSI6
ICA0MCwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAi
dmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAiaTY0LmxvYWQzMl91
IjogICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgNDEsICJyZXR1
cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImkzMi5sb2FkIjogICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDQyLCAicmV0dXJuIjogWyJpMzIi
XSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
Im9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJv
bSBtZW1vcnkiIH0sCisgICAgICAgICJpNjQubG9hZCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnki
OiAibG9hZCIsICAgICAgICJ2YWx1ZSI6ICA0MywgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1l
dGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9
LAorICAgICAgICAiZjMyLmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAg
ICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImYzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRk
ciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFy
dWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAg
ImY2NC5sb2FkIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVl
IjogIDQ1LCAicmV0dXJuIjogWyJmNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpMzIuc3RvcmU4
IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA0NiwgInJl
dHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlv
biI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpMzIuc3RvcmUxNiI6ICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA0NywgInJldHVybiI6IFtdLCAg
ICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0
byBtZW1vcnkiIH0sCisgICAgICAgICJpNjQuc3RvcmU4IjogICAgICAgICAgeyAiY2F0ZWdvcnki
OiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA0OCwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1l
dGVyIjogWyJhZGRyIiwgImk2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0s
CisgICAgICAgICJpNjQuc3RvcmUxNiI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAg
ICAgICJ2YWx1ZSI6ICA0OSwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRy
IiwgImk2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAg
ICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJp
NjQuc3RvcmUzMiI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6
ICA1MCwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImk2NCJdLCAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAi
dmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpMzIuc3RvcmUiOiAg
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA1MSwgInJldHVy
biI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpNjQuc3RvcmUiOiAgICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA1MiwgInJldHVybiI6IFtdLCAgICAg
ICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImk2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBt
ZW1vcnkiIH0sCisgICAgICAgICJmMzIuc3RvcmUiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA1MywgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVy
IjogWyJhZGRyIiwgImYzMiJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisg
ICAgICAgICJmNjQuc3RvcmUiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAg
ICJ2YWx1ZSI6ICA1NCwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwg
ImY2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCiAgICAgICAgICJjdXJy
ZW50X21lbW9yeSI6ICAgICAgeyAiY2F0ZWdvcnkiOiAib3BlcmF0aW9uIiwgICJ2YWx1ZSI6ICA1
OSwgInJldHVybiI6IFsic2l6ZSJdLCAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJxdWVyeSB0aGUgc2l6ZSBvZiBtZW1vcnkiIH0sCiAgICAgICAgICJncm93X21l
bW9yeSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAib3BlcmF0aW9uIiwgICJ2YWx1ZSI6ICA1Nywg
InJldHVybiI6IFsic2l6ZSJdLCAicGFyYW1ldGVyIjogWyJzaXplIl0sICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJncm93IHRoZSBzaXplIG9mIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5hZGQiOiAg
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogIDY0LCAicmV0
dXJuIjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJpMzIiXSwgImIzb3AiOiAiQWRk
IiAgICAgICAgICB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290716</attachid>
            <date>2016-10-05 09:46:30 -0700</date>
            <delta_ts>2016-10-05 10:37:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20161005094317.patch</filename>
            <type>text/plain</type>
            <size>95201</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTJkOThlMTg1MGI5ODMxMDJiZGU1YWE0YmJlN2Y2MjFlMTcwOWUxLi4yNDg0M2FmMGZjOWIxY2Q5
MDc2Yzc4YmJkZWZlNDhmNDMzMGQ4ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIEN1cnJlbnRseSwgQjMgb25seSBiYXJlbHkgd29y
a3Mgd2l0aCBwaW5uZWQgdmFsdWVzIGJlY2F1c2UKKyAgICAgICAgd2UgY2Fubm90IGNoYW5nZSB0
aGUgc2l6ZSBvZiBtZW1vcnkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RXQVNN
LmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Y3JlYXRl
SlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAg
ICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246Oml0
ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6c2V0dXBDYWxs
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAgICogd2FzbS9X
QVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6
Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAgICAgKEpTQzo6
V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVtb3J5OjptZW1v
cnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAgICAoSlNDOjpX
QVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9y
eTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9yeSk6CisgICAg
ICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKiB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6Cisg
ICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAg
KiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6Cisg
ICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6
CisKIDIwMTYtMTAtMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogZG9uJ3Qgc3luY2hyb25vdXNseSBzZW5kIGEgbGlzdGluZyBtZXNzYWdl
IGlmIHdlIG1pZ2h0IG5lZWQgdG8gcXVlcnkgX1dLQXV0b21hdGlvbkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQ3Y2RlZmQzODFkNGFjNmIwMDJkMmY0NWM1
OGU2N2NmZjY4MWJjYi4uMzViYmU0YTI5ZmU2OTMxYTNiMzQ0OWQyMGNjYTMzMjVmZTI0ZjRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDYgKzg1OCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUuY3BwCiAgICAg
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKICAgICB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlv
bi5jcHAKKyAgICB3YXNtL1dBU01NZW1vcnkuY3BwCiAgICAgd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmNwcAogICAgIHdhc20vV0FTTVBsYW4uY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwppbmRl
eCA4MzFkMDk2MDA0MjFjZmJiNDMxNDJhM2Q5OTlhNGRjNjk2NDkwYmVmLi5mNTQwMWZjOTJjZGIx
YmEzZGIyNmI3YTk2ZDdiMmNiNTBjYzZjZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCkBA
IC0zMSw2ICszMSw3IEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX21pbmlkb20gPSBlbnRp
dGxlbWVudHMucGxpc3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YWlyID0gZW50
aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFwaSA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RiMyA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKK0NPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RXQVNNID0g
ZW50aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdFJlZ0V4
cCA9IGVudGl0bGVtZW50cy5wbGlzdDsKIAogU0tJUF9JTlNUQUxMID0gJChTS0lQX0lOU1RBTExf
JChGT1JDRV9UT09MX0lOU1RBTEwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGM0NDI2ZWJlY2I4MGVmZGJlZTQ4MWJiZTY4ZWQ4YmMzZTlmYWYxNy4uYWRiMDg4NTdkMmUzMmYw
MTNjMzNjNjc2MDI2ZjQ1OTQzY2EzNjdhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTIsNiArMTIxMiw4IEBACiAJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0QzQ1N0UxQkM3MjU0OTAwNzQ3NkE3IC8qIEpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzRDNDU3RDFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNTM1MjlBNEMxQzQ1N0I3NTAwMEI0OUM2
IC8qIEFQSVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLzsgfTsKKwkJNTM1
NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTU1NzEzMUQ5RDlFQTUwMDZENTgzQiAvKiBX
QVNNTWVtb3J5LmggKi87IH07CisJCTUzNTU1NzE2MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVt
b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NTU1NzE1MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLzsgfTsKIAkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuY3BwICovOyB9OwogCQk1MzcwQjRGNjFCRjI2MjA1MDA1QzQwRkMg
LyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM3MEI0RjQxQkYyNUVBMjAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAq
LzsgfTsKIAkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTM0NDIsNiArMzQ0NCw4IEBA
CiAJCTUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNEM0NTdEMUJDNzI1
NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2
IC8qIEFQSVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVV0aWxz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzEzMUQ5RDlFQTUwMDZENTgz
QiAvKiBXQVNNTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01N
ZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM1NTU3MTUxRDlERkEzMjAw
NkQ1ODNCIC8qIFdBU01NZW1vcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0FTTU1lbW9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBC
NEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY1Nyw2ICs1NjYxLDgg
QEAKIAkJCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovLAogCQkJCTdC
QzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi8sCiAJCQkJNTNGNDBFOEEx
RDU5MDFCQjAwOTlBMUI2IC8qIFdBU01GdW5jdGlvblBhcnNlci5oICovLAorCQkJCTUzNTU1NzE1
MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLywKKwkJCQk1MzU1NTcxMzFEOUQ5
RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oICovLAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5
QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5
OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oICovLAogCQkJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFG
N0EwQiAvKiBXQVNNUGxhbi5jcHAgKi8sCkBAIC03ODE0LDYgKzc4MjAsNyBAQAogCQkJCTE0MkUz
MTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjEwRjFBMzFDNDIwQkYwMDAxQzA3RDIgLyogQWlyQ3VzdG9tLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MzU1NTcxNDFEOUQ5RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNTIsNiArOTE1OSw3IEBACiAJCQkJMEY1QTEyNzMxOTJE
OUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUzNTU1NzE2MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEYxNDMzMUFERjA5MDEwMEVENzkyQyAvKiBERkdFcG9jaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxl
ZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0V0FTTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3Bw
CmluZGV4IGQ5ZWQ5MWZlMTg0ZGVhYjExNzY5OTVjOGJkNjY5Y2ZjOWQ4ZTRjNmQuLjJjM2M5ZmFi
NmIzMGJkZmY5ZDkzMWQ0YTJhN2FjNDg2OTA5YWVhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RX
QVNNLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01N
ZW1vcnkuaCIKICNpbmNsdWRlICJXQVNNUGxhbi5oIgorCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KICNpbmNsdWRlIDx3dGYvTEVCRGVjb2Rlci5oPgogCkBAIC0yNDIsOCArMjQ0LDQ2OSBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogewogICAgIHsKICAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAgICAg
ICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFt
ICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTY0LnN0b3JlIChnZXRfbG9j
YWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTY0LmxvYWQg
KGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4MDEsIDB4
MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwg
MHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4
MTQsCisgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCisgICAg
ICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBs
YW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94
KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAg
ICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhf
cyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAg
ICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAg
ICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAg
ICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAg
ICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIs
IDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4
MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAx
LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAw
eDAwLCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgw
MiwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0s
IHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5y
ZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21w
aWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMTApIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToK
KyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAg
ICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFy
YW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8v
ICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9j
aworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkz
Mi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAg
ICAgICAgKGkzMi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMyLm11bCAoZ2V0X2xv
Y2FsICRpKSAoaTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAg
ICAoc2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQor
ICAgICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8v
ICAgICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAg
ICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAg
ICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAg
ICAweDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4
NzQsIDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAs
IDB4MGEsIDB4YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAw
eGFjLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAw
LCAweDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwg
MHgwMywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgw
MywgMHgxMCwgMHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQsIDB4MDAsIDB4MzMs
IDB4MDIsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4
MDYsIDB4MDAsIDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07
CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVz
dWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7
CisgICAgICAgIHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBsYW4u
bWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOwor
ICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVt
b3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBs
ZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAg
ICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3Qp
OworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDUpLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBz
aXplb2YodWludDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEw
MHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBD
SEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAg
ICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIp
IChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2Fs
ICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisg
ICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8v
ICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVu
Z3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlOCAoaTMyLmFkZCAoZ2V0X2xvY2Fs
ICRwKSAoZ2V0X2xvY2FsICRpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAo
c2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAg
ICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAg
ICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAg
ICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAg
ICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEs
IDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAw
eDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQs
IDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4
MGEsIDB4YWYsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGE5
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAw
eDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgw
MywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywg
MHg0MCwgMHgxNCwgMHgwMCwKKyAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4
MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYs
IDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBd
KSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3Jy
ZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KHBsYW4ubWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgp
IH0pOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zm
c2V0ID0gNTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVD
S19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlb
b2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAv
LyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAo
ZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGdldF9sb2NhbCAk
cHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhf
cyAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwg
MHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1l
bW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAg
ICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3Mi
KSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAoaTMyLnN0b3Jl
OCAoaTMyLmNvbnN0IDgpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgICAgIChyZXR1cm4g
KGkzMi5sb2FkOF9zIChpMzIuY29uc3QgOCkpKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAg
Ly8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAg
IDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
ODYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAx
LCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwYiwgMHg2OSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4
NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAxLCAweDhmLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAw
LCAweDAwLCAweDEwLCAweDA4LAorICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwg
MHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAg
ICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4i
KTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSks
IDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBH
ZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAx
KQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMy
KSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3RvcmUg
KGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJuIChp
MzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8vICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMiwg
MHgwMSwgMHgwMSwgMHgwMiwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzNCwgMHgwMywg
MHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goLTEyKSwgYm94KHBsYW4ubWVtb3J5LT5zaXplKCkgLSBzaXplb2YodWludDY0X3QpKSB9
KSwgLTEyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAg
ICAgICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVu
YyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikg
KHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChn
ZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwg
JHB0cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4
MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAw
eDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgz
LCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgz
MywKKyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4Mzgs
IDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisg
ICAgICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAw
LCAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAg
ICAgICAgMHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisg
ICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5z
aXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
TW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKICAgICAgICAgLy8gICAgKG1vZHVsZQotICAgICAgICAvLyAg
ICAgKGZ1bmMgKGV4cG9ydCAiZHVtYi1lcSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIp
IChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAg
KGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMy
KSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8vICAgICAgKHNl
dF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9jaworICAgICAg
ICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChn
ZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAgICAgICAgKGkz
Mi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMyLm11bCAoZ2V0X2xvY2FsICRpKSAo
aTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAoc2V0X2xv
Y2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAgICAgICAv
LyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAgICAgICkK
KyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8g
ICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4
MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAzLCAw
eDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQsIDB4NjUs
IDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4MGEsIDB4
YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGFjLCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAweDE1LCAw
eDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgwMywgMHgx
NCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywgMHgxMCwg
MHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQsIDB4MDAsIDB4MzMsIDB4MDIsIDB4
MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAs
IDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUo
KSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1
bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7CisgICAgICAg
IHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBsYW4ubWVtb3J5LT5t
ZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBv
ZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNl
dCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAw
dSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVu
Z3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3QpOworICAgICAg
ICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBi
b3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXplb2YodWlu
dDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAg
ICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUSht
ZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVy
YXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5
IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAk
eCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2FsICRpIGkzMikK
KyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisgICAgICAgIC8v
ICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8vICAgICAgICAo
YnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVuZ3RoKSkpCisg
ICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlOCAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoZ2V0
X2xvY2FsICRpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAoc2V0X2xvY2Fs
ICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAgICAgICAvLyAg
ICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAgICAgICkKKyAg
ICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAg
ICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAs
IDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAzLCAweDAx
LCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQsIDB4NjUsIDB4
NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4MGEsIDB4YWYs
IDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGE5LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAweDE1LCAweDAz
LCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgwMywgMHgxNCwg
MHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgx
NCwgMHgwMCwKKyAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQs
IDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1l
bW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMTsK
KyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHBsYW4ubWVt
b3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAg
ICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZz
ZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zmc2V0ID0gNTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVDS19FUShtZW1v
cnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsg
bGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9k
dWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhw
b3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3Vs
dCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGdldF9sb2NhbCAkcHRyKSAoZ2V0
X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhfcyAoZ2V0X2xv
Y2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDcz
LCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgw
MSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwg
MHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIs
IDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAw
eDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgw
LCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgx
NCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAg
ICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxh
bi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAg
ICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeS0+c2l6
ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDAp
LCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5l
cmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9y
eSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0g
JGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAoaTMyLnN0b3JlOCAoaTMyLmNv
bnN0IDgpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2Fk
OF9zIChpMzIuY29uc3QgOCkpKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4
NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODYsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAxLCAweDAxLCAw
eDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAw
LCAweDA1LCAweDgzLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHgwMCwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
YiwgMHg2OSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEs
IDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAw
eDEwLCAweDA4LAorICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAg
ICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChw
bGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSksIDEwMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQg
ZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKGZ1bmMgImR1bWIt
ZXEiIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKQogICAgICAgICAv
LyAgICAgIChpZiAoaTMyLmVxIChnZXRfbG9jYWwgJHgpIChnZXRfbG9jYWwgJHkpKQogICAgICAg
ICAvLyAgICAgICAodGhlbiAoYnIgMCkpCiAgICAgICAgIC8vICAgICAgIChlbHNlIChyZXR1cm4g
KGkzMi5jb25zdCAxKSkpKQpAQCAtMjY1LDE0ICs3MjgsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FT
TVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDAp
LCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDEpOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSks
IDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEpOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2
KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MCkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94
KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJv
eCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCks
IGJveCg2KSB9KSwgMSk7CiAgICAgfQogCiAgICAgewpAQCAtMzA2LDE0ICs3NjksMTQgQEAgc3Rh
dGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSks
IDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDEpLCBib3goMikgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikg
fSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEwMCksIGJveCg2KSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDEpLCBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEwMCksIGJveCg2KSB9KSwgMCk7CiAgICAgfQogCiAKQEAgLTMzMyw3ICs3OTYs
NyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyB9KSwgNSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0pLCA1KTsKICAgICB9CiAKIApAQCAtMzU0
LDcgKzgxNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCAxMSk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0pLCAxMSk7CiAgICAgfQog
CiAgICAgewpAQCAtMzc0LDcgKzgzNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCAxMSk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0p
LCAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtMzk0LDcgKzg1Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0p
LCAxMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IH0pLCAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtNDEzLDEwICs4NzYsMTAg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgxKSB9KSwgMTAxKTsK
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgtMSks
IGJveCgxKX0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94KDEpIH0pLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goLTEpLCBib3go
MSl9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94
KDEpIH0pLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKICAgICB9CiAKICAgICB7
CkBAIC00NDIsOCArOTA1LDggQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApIH0pLCAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMCkgfSksIDEwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwKSB9KSwgMTApOwogICAgIH0KIAogICAg
IHsKQEAgLTQ3OCwxMCArOTQxLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSkgfSksIDEp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIp
fSksIDMpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEwMCkgfSksIDUwNTApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSkgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMil9KSwgMyk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCA1MDUwKTsKICAgICB9
CiAKICAgICB7CkBAIC01MjIsMTQgKzk4NSwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgx
KSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9KSwgMik7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMik7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgyKSB9KSwgNCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCg2KSB9KSwgMTIpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2KSB9KSwgNjAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMTAw
KSB9KSwgMTAwMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwg
Ym94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDIpOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSks
IGJveCgyKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCA0KTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIp
LCBib3goNikgfSksIDEyKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCg2KSB9KSwgNjAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveCgxMDApIH0pLCAxMDAwMCk7CiAgICAgfQogCiAgICAgewpAQCAtNTc1LDE0
ICsxMDM4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0p
LCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgyKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEp
IH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJv
eCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBi
b3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwg
Ym94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiks
IGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDApOwogICAgIH0KIAog
fQpAQCAtNTk2LDcgKzEwNTksNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgaWYgKG9wdGlvbnMubV9ydW5MRUJUZXN0cykKICAgICAgICAgcnVuTEVCVGVzdHMoKTsKIAot
CiAgICAgaWYgKG9wdGlvbnMubV9ydW5XQVNNVGVzdHMpIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBiNzFjMWFmYWE5
NDQ2MTZiYTE3ZmViZmM5NWVkYmNhYzYwZDNjYjQuLjE0OTlmZjBiZjZhN2M0YmZiMDAyNDYwOTgw
Y2I3MmUyMjk0MTcxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDb25z
dFB0clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKQEAgLTM3LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXQVNNQ2FsbGluZ0Nv
bnZlbnRpb24uaCIKICNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKKyNpbmNsdWRlICJX
QVNNTWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIHZvaWQgZHVtcFByb2Nl
ZHVyZSh2b2lkKiBwdHIpCkBAIC0xNjUsMTggKzE2OCwyNSBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBWZWN0b3I8VmFyaWFibGUqLCAxPiBSZXN1bHRMaXN0OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
RXhwcmVzc2lvblR5cGUgZW1wdHlFeHByZXNzaW9uID0gbnVsbHB0cjsKIAotICAgIEIzSVJHZW5l
cmF0b3IoUHJvY2VkdXJlJik7CisgICAgQjNJUkdlbmVyYXRvcihNZW1vcnkqLCBQcm9jZWR1cmUm
KTsKIAogICAgIHZvaWQgYWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYpOwogICAgIHZv
aWQgYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOwogICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0
YW50KFR5cGUsIHVpbnQ2NF90KTsKIAorICAgIC8vIExvY2FscwogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwg
RXhwcmVzc2lvblR5cGUgdmFsdWUpOwogCisgICAgLy8gTWVtb3J5CisgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gbG9hZChMb2FkT3BUeXBlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHN0b3JlKFN0b3JlT3BUeXBlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKworICAgIC8vIEJhc2ljIG9wZXJh
dG9ycwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGJpbmFyeU9wKEJpbmFyeU9wVHlwZSwg
RXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHVuYXJ5T3AoVW5hcnlPcFR5
cGUsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKKyAgICAv
LyBDb250cm9sIGZsb3cKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQmxv
Y2soVHlwZSBzaWduYXR1cmUpOwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRMb29wKFR5cGUgc2lnbmF0dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkSWYoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBUeXBlIHNpZ25hdHVyZSk7CkBAIC0x
OTEsMTYgKzIwMSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKGNvbnN0IFZlY3RvcjxDb250
cm9sVHlwZT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25T
dGFjayk7CiAKIHByaXZhdGU6CisgICAgRXhwcmVzc2lvblR5cGUgZW1pdENoZWNrQW5kUHJlcGFy
ZVBvaW50ZXIodWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJf
dCBzaXplT2ZPcCk7CisgICAgRXhwcmVzc2lvblR5cGUgZW1pdExvYWRPcChMb2FkT3BUeXBlLCBP
cmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIpOworICAgIHZvaWQgZW1pdFN0b3JlT3AoU3Rv
cmVPcFR5cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpOworCiAgICAgdm9pZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHByZXNz
aW9uVHlwZSBzb3VyY2UpOwogICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY29uc3QgRXhw
cmVzc2lvbkxpc3QmIHJlc3VsdFN0YWNrLCBSZXN1bHRMaXN0JiBzdGFjayk7CiAKKyAgICBNZW1v
cnkqIG1fbWVtb3J5OwogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1f
Y3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIC8vIEZJ
WE1FOiBUaGlzIHByb2JhYmx5IG5lZWRzIHRvIGJlIGEgdmFyaWFibGUgb3Igc29tZXRoaW5nLCBm
aXggaXQgd2hlbiB3ZSBjYW4gYWN0dWFsbHkgY2hhbmdlIG1lbW9yeSBzaXplLgorICAgIC8vIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcyNworICAgIFZh
bHVlKiBtX21lbW9yeUJhc2UgeyBudWxscHRyIH07CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlci4gc2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgVmFsdWUqIG1fbWVtb3J5U2l6ZSB7
IG51bGxwdHIgfTsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoUHJvY2VkdXJl
JiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVyYXRvcjo6QjNJ
UkdlbmVyYXRvcihNZW1vcnkqIG1lbW9yeSwgUHJvY2VkdXJlJiBwcm9jZWR1cmUpCisgICAgOiBt
X21lbW9yeShtZW1vcnkpCisgICAgLCBtX3Byb2MocHJvY2VkdXJlKQogewogICAgIG1fY3VycmVu
dEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiB9CkBAIC0yMjIsMjIgKzI0MywyMDEgQEAgdm9p
ZCBCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+JiB0eXBlcykK
ICAgICAgICAgICAgIG1fbG9jYWxzW2ldID0gYXJndW1lbnRWYXJpYWJsZTsKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9y
aWdpbigpLCBhcmd1bWVudFZhcmlhYmxlLCBhcmd1bWVudCk7CiAgICAgICAgIH0pOworCisgICAg
aWYgKG1fbWVtb3J5KSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFkZCB0aGUgY2FsbGlu
ZyBjb252ZW50aW9uIHdlIHNob3VsZCBoYXZlIHR3byBlbnRyeXBvaW50cyBhbmQgd2Ugc2hvdWxk
IGNoYW5nZSB0aGVzZSB0byByZWdpc3RlciBhcmd1bWVudHMuCisgICAgICAgIC8vIHNlZTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcyNworICAgICAgICBtX21l
bW9yeUJhc2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5iYXNlTWVtb3J5UG9p
bnRlcik7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25l
IHNpemUgcmVnaXN0ZXIuIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mjk1MgorICAgICAgICBtX21lbW9yeVNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5waW5uZWRS
ZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3Rlcik7CisgICAgfQogfQogCi1i
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6Z2V0TG9j
YWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KG1fbG9jYWxzW2luZGV4XSk7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tpbmRl
eF0pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lS
R2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUp
Citib29sIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgT3JpZ2lu
KCksIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxp
bmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHVpbnQz
Ml90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgc2l6ZU9mT3BlcmF0
aW9uKQoreworICAgIEFTU0VSVChtX21lbW9yeUJhc2UgJiYgbV9tZW1vcnlTaXplKTsKKyAgICAv
LyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFkZCB0aGUgbWVtb3J5T2Zmc2V0IHRvIHRo
ZSBwb2ludGVyIHdpdGggYSAzMmJpdCBhZGQKKyAgICAvLyBzbyBpZiBpdCBvdmVyZmxvd3Mgd2Ug
c3RheSB3aXRoaW4gb3VyIG1hcHBlZCBtZW1vcnkuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlci4gc2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgVmFsdWUqIG1lbW9yeU9mZnNldCA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9yaWdpbigpLCBJbnQz
Miwgb2Zmc2V0KTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBBZGQsIE9yaWdpbigpLCBwb2ludGVyLCBtZW1vcnlPZmZzZXQpOworICAgIHBv
aW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwg
T3JpZ2luKCksIHBvaW50ZXIpOworCisgICAgVmFsdWUqIHNpemVPZlZhbHVlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIEludDY0LCBzaXplT2ZP
cGVyYXRpb24pOworICAgIFZhbHVlKiBsYXN0Qnl0ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBPcmlnaW4oKSwgc2l6ZU9mVmFsdWUsIHBvaW50ZXIpOwor
ICAgIFZhbHVlKiBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgQWJvdmUsIE9yaWdpbigpLCBsYXN0Qnl0ZSwgbV9tZW1vcnlTaXplKTsKKyAgICBD
aGVja1ZhbHVlKiBib3VuZHNDaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4obV9wcm9jLCBDaGVjaywgT3JpZ2luKCksIG91dE9mQm91bmRzKTsKKyAgICBib3VuZHND
aGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgIH0pOwor
CisgICAgcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
QWRkLCBPcmlnaW4oKSwgbV9tZW1vcnlCYXNlLCBwb2ludGVyKTsKKyAgICByZXR1cm4gcG9pbnRl
cjsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZkxvYWRPcChMb2FkT3BUeXBlIG9wKQorewor
ICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzoKKyAgICBj
YXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4
UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4VToKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDE2UzoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2Fk
OgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyUzoKKyAgICBjYXNlIExvYWRPcFR5cGU6
Okk2NExvYWQzMlU6CisgICAgICAgIHJldHVybiA0OworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDoKKyAgICAgICAgcmV0dXJuIDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKy8vIEZJWE1FOiBC
MyBzaG91bGQgc3VwcG9ydCBJbnQ2NCBzbWFsbCBsb2FkcyBhbmQgMTYtYml0IHVuc2lnbmVkIGxv
YWRzLgoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRPcFR5cGUg
b3AsIE9yaWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIpCit7CisgICAgc3dpdGNo
IChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywg
b3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExv
YWQ4UzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywgb3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICAg
ICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMy
LCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4
VTogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgfQorCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwg
cG9pbnRlciwgMCk7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIFpFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJMzJMb2FkMTZTOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwg
MCk7CisgICAgfQorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzogeworICAgICAgICBW
YWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgICAgIHJldHVybiBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7
CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIElu
dDMyLCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDMyVTogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBa
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDMyUzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBT
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3As
IHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKworICAg
IHJlc3VsdCA9IGVtaXRMb2FkT3Aob3AsIE9yaWdpbigpLCBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9p
bnRlcihvZmZzZXQsIHBvaW50ZXIsIHNpemVPZkxvYWRPcChvcCkpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3ApCit7
CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTg6CisgICAgICAgIHJldHVybiAxOworICAgIGNh
c2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3Rv
cmUxNjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU6
CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUzMjoKKyAgICAgICAgcmV0dXJuIDQ7Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgICAgIHJldHVybiA4OworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCisKKy8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBzdXBwb3J0IGFuIEludDY0
IHN0b3JlOC4KK2lubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKFN0b3JlT3BU
eXBlIG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6
STY0U3RvcmU4OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsK
KworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTgsIG9yaWdpbiwgdmFsdWUs
IHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRT
dG9yZTE2OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKwor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUxNiwgb3JpZ2luLCB2YWx1ZSwg
cG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMzI6CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMy
U3RvcmU6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgU3RvcmUsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpzdG9yZShTdG9yZU9wVHlw
ZSBvcCwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKwor
ICAgIGVtaXRTdG9yZU9wKG9wLCBPcmlnaW4oKSwgZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIo
b2Zmc2V0LCBwb2ludGVyLCBzaXplT2ZTdG9yZU9wKG9wKSksIHZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9wLCBF
eHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBP
cmlnaW4oKSwgYXJnKTsKQEAgLTQwMywxMCArNjAzLDcwIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJl
c3NpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGls
YXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBG
dW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQorCitzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwg
TWVtb3J5KiBtZW1vcnkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBDaGVjayBhcmd1bWVudCBjb3VudCBp
cyBzYW5lLgorICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN1cHBvc2VkIHRvIHRyYXAgaWYgbGVzcyB0
aGFuIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHM/CisgICAgVmFsdWUqIGZyYW1lUG9pbnRl
ciA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBP
cmlnaW4oKSk7CisgICAgVmFsdWUqIG9mZlNldE9mQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpOworICAgIFZhbHVlKiBhcmd1bWVudENvdW50ID0g
YmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBm
cmFtZVBvaW50ZXIsIG9mZlNldE9mQXJndW1lbnRDb3VudCkpOworCisgICAgVmFsdWUqIGV4cGVj
dGVkQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpKTsKKworICAgIENoZWNrVmFsdWUq
IGFyZ3VtZW50Q291bnRDaGVjayA9IGJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2ssIE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
Ym92ZSwgT3JpZ2luKCksIGV4cGVjdGVkQXJndW1lbnRDb3VudCwgYXJndW1lbnRDb3VudCkpOwor
ICAgIGFyZ3VtZW50Q291bnRDaGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBqaXQuYnJlYWtw
b2ludCgpOworICAgIH0pOworCisgICAgLy8gTW92ZSBtZW1vcnkgdmFsdWVzIHRvIHRoZSBhcHBy
b3JpYXRlIHBsYWNlcywgaWYgbmVlZGVkLgorICAgIFZhbHVlKiBiYXNlTWVtb3J5ID0gbnVsbHB0
cjsKKyAgICBWZWN0b3I8VmFsdWUqPiBzaXplczsKKyAgICBpZiAobWVtb3J5KSB7CisgICAgICAg
IGJhc2VNZW1vcnkgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBtZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgVmFsdWUqIHNpemUgPSBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAg
ICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KG1lbW9yeSkgKyBNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKSk7CisgICAg
ICAgIHNpemVzLnJlc2VydmVDYXBhY2l0eShtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVS
ZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGluZm8gOiBtZW1vcnktPnBpbm5l
ZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHNpemVzLmFwcGVuZChi
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBzaXplLAorICAgICAg
ICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
aW5mby5zaXplT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gR2V0IG91ciBh
cmd1bWVudHMuCisgICAgVmVjdG9yPFZhbHVlKj4gYXJndW1lbnRzOworICAgIGpzY0NhbGxpbmdD
b252ZW50aW9uKCkuaXRlcmF0ZShzaWduYXR1cmUtPmFyZ3VtZW50cywgcHJvYywgYmxvY2ssIE9y
aWdpbigpLCBbJl0gKFZhbHVlKiBhcmd1bWVudCwgdW5zaWduZWQpIHsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgfSk7CisKKyAgICAvLyBNb3ZlIHRoZSBhcmd1bWVu
dHMgaW50byBwbGFjZS4KKyAgICBWYWx1ZSogcmVzdWx0ID0ganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS5zZXR1cENhbGwocHJvYywgYmxvY2ssIE9yaWdpbigpLCBtYWluRnVuY3Rpb24sIGFyZ3VtZW50
cywgdG9CM1R5cGUoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKSwgWyZdIChQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKG1lbW9yeSkgeworICAgICAgICAgICAgQVNTRVJU
KHNpemVzLnNpemUoKSA9PSBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGJhc2VNZW1vcnksIFZhbHVlUmVwOjpyZWcobWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5iYXNl
TWVtb3J5UG9pbnRlcikpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShzaXplc1tpXSwgVmFsdWVSZXA6OnJlZyhtZW1vcnktPnBpbm5lZFJlZ2lz
dGVycygpLnNpemVSZWdpc3RlcnNbaV0uc2l6ZVJlZ2lzdGVyKSkpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCwgaWYgbmVlZWRlZC4KKyAgICBpZiAoc2ln
bmF0dXJlLT5yZXR1cm5UeXBlICE9IFZvaWQpCisgICAgICAgIGJsb2NrLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgQjM6OlJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgZWxzZQor
ICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEIzOjpSZXR1cm4sIE9y
aWdpbigpKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwg
cHJvYyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgTWVtb3J5KiBtZW1vcnks
IEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCiB7CiAgICAgUHJv
Y2VkdXJlIHByb2NlZHVyZTsKLSAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQocHJvY2VkdXJlKTsK
KyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQobWVtb3J5LCBwcm9jZWR1cmUpOwogICAgIEZ1bmN0
aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBzb3VyY2UsIGluZm8pOwog
ICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC00MTcsNyArNjc3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4g
cGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIEZ1CiAgICAg
Zml4U1NBKHByb2NlZHVyZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlBv
c3QgU1NBOiAiLCBwcm9jZWR1cmUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1
bmN0aW9uQ29tcGlsYXRpb24+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb25Db21w
aWxhdGlvbj4oKTsKKworICAgIHJlc3VsdC0+Y29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGls
YXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKKyAgICByZXN1bHQtPmpzRW50cnlQb2lu
dCA9IGNyZWF0ZUpTV3JhcHBlcih2bSwgaW5mby5zaWduYXR1cmUsIHJlc3VsdC0+Y29kZS0+Y29k
ZSgpLCBtZW1vcnkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJ
UkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0
b3IuaAppbmRleCA5NTE5NmRiZTU3N2RhYWZhYmE5NzhhNTYwNGM5MDZjZDY1NWJmYzgzLi5mODI4
MmQwYzk1NWMyNmY3ZTdjMDEyNDU3OTdiOTkxNmQ0ZGI5MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDkgQEAgZXh0
ZXJuICJDIiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCopOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdBU00gewogCi1zdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mLCBWZWN0b3I8dWludDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNp
Z25lZCBvcHRMZXZlbCA9IDEpOworY2xhc3MgTWVtb3J5OworCitzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+Jiwg
TWVtb3J5KiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA3ODk1OTMxMDI0YTUzZDY3ZDVj
NzliOTQ0ZWNmMmIyYjUyYWIxNzQ1Li5iOTkyZjRiNzg3YjI3OWE4YWM5NGFhOWU0ZmI3NTVjMTNm
YTIzZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaApAQCAtMjcsMjMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKKyNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNs
dWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKICNp
bmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXR5cGVkZWYgdW5zaWduZWQg
KCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwordHlwZWRl
ZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBl
IHR5cGUpOwogCi10ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRlT2Zm
c2V0PgordGVtcGxhdGU8dW5zaWduZWQgaGVhZGVyU2l6ZSwgTmV4dE9mZnNldCB1cGRhdGVPZmZz
ZXQ+CiBjbGFzcyBDYWxsaW5nQ29udmVudGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGhlYWRlclNpemUgPSBvZmZzZXQ7Ci0KICAgICBDYWxsaW5nQ29udmVudGlvbihW
ZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVyQXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNh
dmVSZWdpc3RlcnMpCiAgICAgICAgIDogbV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3Vt
ZW50cykKICAgICAgICAgLCBtX2NhbGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVy
cykKQEAgLTY0LDE4ICs2OCw1MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQjM6OlZhbHVl
KiBhZGRyZXNzID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpBZGQsIG9y
aWdpbiwgZnJhbWVQb2ludGVyLAogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3
PEIzOjpDb25zdDY0VmFsdWU+KHByb2MsIG9yaWdpbiwgY3VycmVudE9mZnNldCkpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KHBy
b2MsIEIzOjpMb2FkLCB0b0IzVHlwZShhcmd1bWVudFR5cGVzW2ldKSwgb3JpZ2luLCBhZGRyZXNz
KTsKLSAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJlbnRP
ZmZzZXQsIGFyZ3VtZW50VHlwZXNbaV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQg
PSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEIzOjpW
YWx1ZSogc2V0dXBDYWxsKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9j
aywgQjM6Ok9yaWdpbiBvcmlnaW4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIGNvbnN0
IFZlY3RvcjxCMzo6VmFsdWUqPiYgYXJndW1lbnRzLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBjb25z
dCBGdW5jdG9yJiBwYXRjaHBvaW50RnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIHN0YWNrQXJndW1lbnRDb3VudCA9IGFyZ3VtZW50cy5zaXplKCkgPCBtX3JlZ2lzdGVyQXJn
dW1lbnRzLnNpemUoKSA/IDAgOiBhcmd1bWVudHMuc2l6ZSgpIC0gbV9yZWdpc3RlckFyZ3VtZW50
cy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGhlYWRlclNpemUgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQyk7CisKKyAgICAgICAgcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXpl
SW5CeXRlcyhXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBo
ZWFkZXJTaXplICsgKHN0YWNrQXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpKSk7Cisg
ICAgICAgIFZlY3RvcjxCMzo6Q29uc3RyYWluZWRWYWx1ZT4gY29uc3RyYWluZWRBcmd1bWVudHM7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCByZXA7CisgICAgICAgICAgICBpZiAoaSA8IG1f
cmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1
ZVJlcDo6cmVnKG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXQpOwor
ICAgICAgICAgICAgY29uc3RyYWluZWRBcmd1bWVudHMuYXBwZW5kKEIzOjpDb25zdHJhaW5lZFZh
bHVlKGFyZ3VtZW50c1tpXSwgcmVwKSk7CisgICAgICAgICAgICBvZmZzZXQgPSB1cGRhdGVPZmZz
ZXQob2Zmc2V0LCBhcmd1bWVudHNbaV0tPnR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCByZXR1cm5UeXBlLCBvcmlnaW4pOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVudHMpOworICAgICAgICBwYXRjaHBv
aW50RnVuY3RvcihwYXRjaHBvaW50KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0
LmNhbGwoKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rp
b25QdHIodGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpZiAocmV0dXJuVHlwZSAhPSBCMzo6Vm9pZCkKKyAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBjb25zdCBWZWN0b3I8R1BSUmVnPiBtX3JlZ2lzdGVyQXJndW1lbnRzOwogICAgIGNvbnN0
IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBjb25zdCBSZWdpc3RlclNl
dCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7CiB9OwogCi1pbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09m
ZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlKQoraW5saW5lIHVuc2lnbmVkIG5leHRK
U0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgQjM6OlR5cGUpCiB7CiAgICAgcmV0dXJu
IGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZvcm1hdC5oCmluZGV4IDdhMDQxMzdlM2M3MGYxODI0NzEwYWNkOTg4NDdmNzIx
NTYyNGQwMWQuLjFlMTA4MTBkM2ZmNmVlMGE4NzY0YjMyYjM2ZTgwNTZkZDM0NWE2YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNp
bmNsdWRlICJCM1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMjYsNiArMTI3LDExIEBAIHN0cnVjdCBGdW5jdGlvbklu
Zm9ybWF0aW9uIHsKICAgICBzaXplX3QgZW5kOwogfTsKIAorc3RydWN0IEZ1bmN0aW9uQ29tcGls
YXRpb24geworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGNvZGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4ganNFbnRyeVBvaW50OworfTsKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggYWU4NzQyNDBjOTIyOGQyZDgzOTc0NDZlMTU4N2EyZDQ0NjkxZmEzZC4uZjM1MDZlZDc1YmVk
NjNlN2EwNjRjM2QyNjU0ODFjYzZlZTQ4YjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTE1NCw2ICsxNTQsMzkgQEAgYm9vbCBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9P
UChDUkVBVEVfQ0FTRSkgeworICAgICAgICAvLyBUT0RPOiBXaGF0IGRvIEkgZG8gd2l0aCB0aGlz
PworICAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50
MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50
MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVz
dWx0OworICAgICAgICBpZiAoIW1fY29udGV4dC5sb2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+
KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpIHsKKyAgICAgICAgLy8gVE9ETzogV2hhdCBkbyBJIGRvIHdpdGggdGhpcz8KKyAg
ICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFs
aWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qg
b2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJl
c3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5z
dG9yZShzdGF0aWNfY2FzdDxTdG9yZU9wVHlwZT4ob3ApLCBvZmZzZXQsIHBvaW50ZXIsIHZhbHVl
KTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAgdWludDMy
X3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2VkOTAx
MzYzNGU3ODQ3NDcyMzczMzBmZjZhODMwZGIwYzllNjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK01lbW9yeTo6TWVtb3J5
KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVu
c2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycykKKyAgICA6IG1fbW9kZShNb2RlOjpCb3VuZHND
aGVja2luZykKKyAgICAsIG1fc2l6ZShzdGFydGluZ1NpemUpCisgICAgLCBtX21heFNpemUobWF4
U2l6ZSkKK3sKKyAgICBBU1NFUlQocGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgPiAwKTsKKyAg
ICB2b2lkKiByZXN1bHQgPSBtbWFwKG51bGxwdHIsIG1heFBhZ2VOdW0sIFBST1RfTk9ORSwgTUFQ
X1BSSVZBVEUgfCBNQVBfQU5PTiwgMCwgMCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
Ly8gVHJ5IGFnYWluIHdpdGggYSBkaWZmZXJlbnQgbnVtYmVyLgorICAgICAgICByZXN1bHQgPSBt
bWFwKG51bGxwdHIsIG1heFNpemUsIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwg
MCwgMCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtcHJvdGVjdChyZXN1bHQsIHN0YXJ0aW5nU2l6ZSwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSkpIHsKKyAgICAgICAgbXVubWFwKHJlc3VsdCwgbWF4U2l6ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBw
aW5uZWRTaXplUmVnaXN0ZXJzLnNpemUoKSArIDE7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAg
R1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAgaWYgKGdwciA9PSBDQ2FsbEhlbHBlcnM6
OmZyYW1lUG9pbnRlclJlZ2lzdGVyIHx8IGdwciA9PSBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7CisgICAgICAgICAgICBtX3Bpbm5lZFJlZ2lzdGVycy5i
YXNlTWVtb3J5UG9pbnRlciA9IGdwcjsKKyAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lz
dGVycy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fcGlubmVkUmVnaXN0ZXJzLnNp
emVSZWdpc3RlcnMuYXBwZW5kKHsgZ3ByLCBwaW5uZWRTaXplUmVnaXN0ZXJzWy0tcmVtYWluaW5n
UGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7CisgICAgfSk7CisKKyAgICBBU1NFUlQoIXJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyk7CisgICAgbV9tZW1vcnkgPSByZXN1bHQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCit9IC8vIG5hbWVzcGFjZSBXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
QVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVt
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGJlNzI2YzgxOWJlMjllYWE2ODJmZDNmODA3ZDNmOTVlYTU2M2QwOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaApAQCAtMCwwICsx
LDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJXQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKKworc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8g
eworICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7CisgICAgdW5zaWduZWQgc2l6ZU9mZnNldDsKK307
CisKK3N0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8geworICAgIFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOworICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsK
K307CisKK2NvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlTnVtID0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpIC8gNjQgLyBLQjsKKworY2xhc3MgTWVtb3J5IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNZW1vcnkpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG90aGVyIG1vZGVzLiBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAgICBl
bnVtIGNsYXNzIE1vZGUgeworICAgICAgICBCb3VuZHNDaGVja2luZworICAgIH07CisKKyAgICBN
ZW1vcnkoKSA9IGRlZmF1bHQ7CisgICAgTWVtb3J5KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWlu
dDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVy
cyk7CisKKyAgICB+TWVtb3J5KCkKKyAgICB7CisgICAgICAgIGlmIChtX21lbW9yeSkKKyAgICAg
ICAgICAgIG11bm1hcChtX21lbW9yeSwgbV9tYXhTaXplKTsKKyAgICB9CisKKyAgICB2b2lkKiBt
ZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeTsgfQorICAgIHVpbnQzMl90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBp
bm5lZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkUmVnaXN0ZXJzOyB9CisKKyAg
ICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKworICAgIGJvb2wgZ3Jvd01l
bW9yeSh1aW50MzJfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5KTsK
KyAgICAgICAgaWYgKG5ld1NpemUgPiBtX21heFNpemUpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgcmV0dXJuICFtcHJvdGVjdChtX21lbW9yeSwgbmV3U2l6ZSwgUFJPVF9S
RUFEIHwgUFJPVF9XUklURSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAg
Citwcml2YXRlOgorICAgIHZvaWQqIG1fbWVtb3J5IHsgbnVsbHB0ciB9OworICAgIFBpbm5lZFJl
Z2lzdGVySW5mbyBtX3Bpbm5lZFJlZ2lzdGVyczsKKyAgICBNb2RlIG1fbW9kZTsKKyAgICB1aW50
MzJfdCBtX3NpemUgeyAwIH07CisgICAgdWludDMyX3QgbV9tYXhTaXplIHsgMCB9OworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApp
bmRleCA1ZTA1M2E1YTc5MDNhNTRlYjg2NDU2NDY4MmUzZTlkMTcxMGIyMTY0Li5lODMwNDJlMGVj
YTg0MWY3OTIxY2IwMDQxOGRjYjllNzNiYzEzZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMjgsMTAgKzI4LDEzIEBACiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNs
dWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldBU01T
ZWN0aW9ucy5oIgogCisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKwogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBXQVNNIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAt
NjIsMTUgKzY1LDE2IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJTdGFydGluZyB0byBwYXJzZSBuZXh0IHNl
Y3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNldCk7CiAKLSAgICAgICAgU2VjdGlvbnM6OlNlY3Rp
b24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICB1aW50OF90IHNlY3Rpb25C
eXRlOwogICAgICAgICBpZiAoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxv
Z0xuKCJTZWN0aW9uIGJ5dGU6ICIsIHNlY3Rpb25CeXRlKTsKKworICAgICAgICBTZWN0aW9uczo6
U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247CiAgICAgICAgIGlmIChzZWN0aW9u
Qnl0ZSkgewotICAgICAgICAgICAgaWYgKHNlY3Rpb25CeXRlID49IFNlY3Rpb25zOjpVbmtub3du
KQotICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93bjsKLSAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA8IFNlY3Rpb25zOjpVbmtub3du
KQogICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2VjdGlv
bj4oc2VjdGlvbkJ5dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdWludDMyX3Qg
c2VjdGlvbk5hbWVMZW5ndGg7CkBAIC05Niw2ICsxMDAsMTUgQEAgYm9vbCBNb2R1bGVQYXJzZXI6
OnBhcnNlKCkKICAgICAgICAgdW5zaWduZWQgZW5kID0gbV9vZmZzZXQgKyBzZWN0aW9uTGVuZ3Ro
OwogCiAgICAgICAgIHN3aXRjaCAoc2VjdGlvbikgeworCisgICAgICAgIGNhc2UgU2VjdGlvbnM6
Ok1lbW9yeTogeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJQYXJzaW5nIE1lbW9yeS4iKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VNZW1vcnko
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2UgU2VjdGlvbnM6OkZ1bmN0aW9uVHlwZXM6IHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyB0
eXBlcy4iKTsKQEAgLTE0Myw2ICsxNTYsMzQgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5KCkK
K3sKKyAgICB1aW50OF90IGZsYWdzOworICAgIGlmICghcGFyc2VWYXJVSW50MShmbGFncykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFwYXJz
ZVZhclVJbnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzaXplID4g
bWF4UGFnZU51bSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDMyX3QgbWF4ID0g
bWF4UGFnZU51bTsKKyAgICBpZiAoZmxhZ3MpIHsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQz
MihtYXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc2l6ZSA+IG1h
eCB8fCBtYXggPiBtYXhQYWdlTnVtKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIG1heCAqPSA2NCAqIEtCOworICAgIHNpemUgKj0gNjQgKiBLQjsKKworICAgIFZlY3Rv
cjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKKyAgICBtX21lbW9yeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5PihzaXplLCBtYXgsIHBpbm5lZFNpemVzKTsKKyAgICByZXR1cm4gbV9t
ZW1vcnktPm1lbW9yeSgpOworfQorCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5
cGVzKCkKIHsKICAgICB1aW50MzJfdCBjb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAppbmRleCA0NjBiZThmYmIzNmYwMmZhZjRhZDUzOGIxY2U1
MmIyZWQ1MTI1NGZkLi43NWU0ZDEwYWRmNjAzNDc3Mzg3N2MxZWYwYWJkNjFjNGZhMjQ2NGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJXQVNN
TWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldBU01QYXJzZXIuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NSwxOCArNDYsMTkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxG
dW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIHsgcmV0dXJuIG1fZnVu
Y3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5jdGlv
bkluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVtb3J5PiYgbWVtb3J5KCkgeyByZXR1cm4gbV9tZW1vcnk7IH0KIAogcHJpdmF0
ZToKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9yeSgpOwogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25UeXBlcygpOwogICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKCk7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCk7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24odWludDMyX3QgbnVtYmVyKTsKLSAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VFeHByZXNzaW9uKE9wVHlwZSk7CiAKICAgICBWZWN0b3I8RnVuY3Rp
b25JbmZvcm1hdGlvbj4gbV9mdW5jdGlvbnM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9zaWdu
YXR1cmVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+IG1fbWVtb3J5OwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01PcHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApp
bmRleCA2ZWY1YmQ0ZDE2MGQzMWY3MTAzMTllM2U3Y2M3NzhmYTRmYzg3N2RjLi42ZDM0ODhjZjQ5
ODA0MzNlOTA0YmFlMDA1NDQ0ODM3Y2FkMDAyZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU9wcy5oCkBAIC0xNTksMTMgKzE1OSw0MiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdBU00gewogICAgIG1hY3JvKEY2NEd0LCAweDliLCBPb3BzKSBcCiAgICAgbWFjcm8oRjY0R2Us
IDB4OWMsIE9vcHMpCiAKKyNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNy
bykgXAorICAgIG1hY3JvKEkzMkxvYWQ4UywgMHgyMCwgT29wcykgXAorICAgIG1hY3JvKEkzMkxv
YWQ4VSwgMHgyMSwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQxNlMsIDB4MjIsIE9vcHMpIFwK
KyAgICBtYWNybyhJMzJMb2FkMTZVLCAweDIzLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDhT
LCAweDI0LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDhVLCAweDI1LCBPb3BzKSBcCisgICAg
bWFjcm8oSTY0TG9hZDE2UywgMHgyNiwgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQxNlUsIDB4
MjcsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMzJTLCAweDI4LCBPb3BzKSBcCisgICAgbWFj
cm8oSTY0TG9hZDMyVSwgMHgyOSwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQsIDB4MmEsIE9v
cHMpIFwKKyAgICBtYWNybyhJNjRMb2FkLCAweDJiLCBPb3BzKSBcCisgICAgbWFjcm8oRjMyTG9h
ZCwgMHgyYywgT29wcykgXAorICAgIG1hY3JvKEY2NExvYWQsIDB4MmQsIE9vcHMpCisKKyNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJMzJT
dG9yZTgsIDB4MmUsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJTdG9yZTE2LCAweDJmLCBPb3BzKSBc
CisgICAgbWFjcm8oSTY0U3RvcmU4LCAweDMwLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUx
NiwgMHgzMSwgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlMzIsIDB4MzIsIE9vcHMpIFwKKyAg
ICBtYWNybyhJMzJTdG9yZSwgMHgzMywgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlLCAweDM0
LCBPb3BzKSBcCisgICAgbWFjcm8oRjMyU3RvcmUsIDB4MzUsIE9vcHMpIFwKKyAgICBtYWNybyhG
NjRTdG9yZSwgMHgzNiwgT29wcykKKwogCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9PUChtYWNy
bykgXAogICAgIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykgXAogICAgIEZPUl9FQUNI
X1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9P
UChtYWNybykgXAotICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9F
QUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9B
RF9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKQog
CiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAK
QEAgLTE4OSw2ICsyMTgsMTQgQEAgZW51bSBjbGFzcyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCiB9OwogCitlbnVt
IGNsYXNzIExvYWRPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9M
T0FEX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKworZW51bSBjbGFzcyBTdG9yZU9wVHlwZSA6
IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9FTlVN
X1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9FTlVNX1ZBTFVFCiAKIGlubGluZSBib29sIGlz
Q29udHJvbE9wKE9wVHlwZSBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNw
cAppbmRleCA3YmQ2MGQyM2YxMWEyOWFjZTFlMzdhNjE4NzVmZTRiNWNmMGRiY2I5Li5hMDgzNzM4
NTg0ZDU2NjkyNmEyNTIyZGI5MWNkNmM5NGY4ZTZhNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTVBsYW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJCM0NvbXBp
bGF0aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUIzSVJHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJXQVNN
Q2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJXQVNNTW9kdWxlUGFyc2VyLmgiCiAjaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KIApAQCAtNTMsOCArNTQsOSBAQCBQbGFuOjpQbGFuKFZNJiB2
bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3Jt
YXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNp
b24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5l
bmQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBp
bmZvKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQocGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2Us
IG1vZHVsZVBhcnNlci5tZW1vcnkoKS5nZXQoKSwgaW5mbykpOwogICAgIH0KKyAgICBtZW1vcnkg
PSBXVEZNb3ZlKG1vZHVsZVBhcnNlci5tZW1vcnkoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxh
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaAppbmRleCBkM2M5ZTIy
YTVhYmExNzI2NDNmMzc5MTYwYzM4YjhlNGI0OTJiMThjLi5iODQ1ZWUxNDg5NzhmOTYwMTA3Njkw
NjQwYTVkMTBiNmZjN2YzNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgK
QEAgLTI5LDIzICsyOSwyMCBAQAogCiAjaW5jbHVkZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIKICNp
bmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFj
ZSBKU0MgewotCi1uYW1lc3BhY2UgQjMgewotY2xhc3MgQ29tcGlsYXRpb247Ci19IC8vIG5hbWVz
cGFjZSBCMwotCi1uYW1lc3BhY2UgV0FTTSB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdB
U00geworY2xhc3MgTWVtb3J5OwogCiAvLyBUT0RPOiBUaGlzIHNob3VsZCBjcmVhdGUgYSBXQVNN
IE1vZHVsZSBub3QgYSBsaXN0IG9mIGZ1bmN0aW9ucy4KIGNsYXNzIFBsYW4gewogcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBWZWN0b3I8dWludDhfdD4gc291cmNlKTsK
IAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPj4gcmVzdWx0Owor
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4+IHJlc3VsdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBtZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVNlY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaApp
bmRleCA1M2U5MzU2ZTIzOGZhNDJjNWI1ODcxMDk5MzZiNTcwMDhlN2M2Nzk5Li4wN2M3MmQ0MWQz
YmVlZGNkMTcyMzhhOGMyMDA0MjMyNzUxM2I0NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNU2VjdGlvbnMuaApAQCAtMzMsNiArMzMsNyBAQCBzdHJ1Y3QgU2VjdGlvbnMgewog
ICAgIGVudW0gU2VjdGlvbiA6IHVpbnQ4X3QgewogICAgICAgICBGdW5jdGlvblR5cGVzID0gMSwK
ICAgICAgICAgU2lnbmF0dXJlcyA9IDMsCisgICAgICAgIE1lbW9yeSA9IDUsCiAgICAgICAgIERl
ZmluaXRpb25zID0gMTAsCiAgICAgICAgIFVua25vd24KICAgICB9OwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1NGNhNjQ3ZWY0ZjE1Y2Y5
MTMxMmYwNzc0YzhiNGIwMGExNTAzNzU0Li5jZTc4ZTZmMTdkODI3YmQzMWQ0ZmIyOTgyYzJiMWVl
ZWNjMmI0ZGQ0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTA0ICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXQVNNIE1lbW9y
eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcx
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBz
dG9yZSBhbmQgbG9hZCBvcGNvZGVzIHRvIHdhc20uanNvbi4gQWRkaXRpb25hbGx5LCBhZGQgbmV3
CisgICAgICAgIGVudW1zIGZvciB0aG9zZSBvcGNvZGVzIGluIHRoZSBnZW5lcmF0b3IuCisKKyAg
ICAgICAgKiBzdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qczoKKyAgICAgICAg
KGNvbnN0LnRlbXBsYXRlLnByYWdtYS5vbmNlLkVOQUJMRS5XRUJBU1NFTUJMWS5pbmNsdWRlLmNz
dGRpbnQubmFtZXNwYWNlLkpTQy5uYW1lc3BhY2UuV0FTTS5lbnVtLkxvYWRPcFR5cGUpOgorICAg
ICAgICAoY29uc3QudGVtcGxhdGUucHJhZ21hLm9uY2UuRU5BQkxFLldFQkFTU0VNQkxZLmluY2x1
ZGUuY3N0ZGludC5uYW1lc3BhY2UuSlNDLm5hbWVzcGFjZS5XQVNNLmVudW0uU3RvcmVPcFR5cGUp
OgorICAgICAgICAqIHN0cmVzcy93YXNtL3dhc20uanNvbjoKKwogMjAxNi0xMC0wNCAgSkYgQmFz
dGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IGhhbmRs
ZSBhIGZldyBjb3JuZXIgY2FzZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2Vu
ZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy93YXNtL2dlbmVyYXRlLXdh
c21vcHMtaGVhZGVyLmpzCmluZGV4IGNlNTI4OTcxOTI3NjRhZDk5ZjU1MTExMTNhY2QyMmViMmEz
MTU2ZGUuLjg0Y2IyZmZlMTg0YzE1MDQyZmJmYWMwMjNkZjVjYmQzYzhmNGY3ZjQgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKKysrIGIv
SlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcwpAQCAtMzYsNiAr
MzYsMTAgQEAgY29uc3QgZGVmaW5lcyA9IFsKICAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4g
b3AuY2F0ZWdvcnkgPT09ICJhcml0aG1ldGljIiAmJiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09PSAx
KSwKICAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pIiwKICAg
ICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAiYXJpdGhtZXRpYyIg
fHwgb3AuY2F0ZWdvcnkgPT09ICJjb21wYXJpc29uIikgJiYgb3AucGFyYW1ldGVyLmxlbmd0aCA9
PT0gMiksCisgICAgIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AobWFj
cm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAibG9h
ZCIpKSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFj
cm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAic3Rv
cmUiKSksCiAgICAgIlxuXG4iXS5qb2luKCIiKTsKIAogY29uc3Qgb3BWYWx1ZVNldCA9IG5ldyBT
ZXQob3Bjb2RlSXRlcmF0b3Iob3AgPT4gdHJ1ZSwgb3AgPT4gb3Bjb2Rlc1tvcF0udmFsdWUpKCkp
OwpAQCAtOTQsNyArOTgsOSBAQCAke2RlZmluZXN9CiAgICAgRk9SX0VBQ0hfV0FTTV9TUEVDSUFM
X09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBc
XAogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AobWFjcm8pIFxcCi0gICAgRk9SX0VBQ0hfV0FT
TV9CSU5BUllfT1AobWFjcm8pCisgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pIFxc
CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXFwKKyAgICBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxV
RShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCkBAIC0xMTgsNiArMTI0LDE0IEBAIGVudW0g
Y2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09Q
KENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBjbGFzcyBMb2FkT3BUeXBlIDogdWludDhf
dCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkK
K307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9X
QVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKICN1bmRlZiBDUkVB
VEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9vbCBpc0NvbnRyb2xPcChPcFR5cGUgb3ApCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvc3RyZXNzL3dh
c20vd2FzbS5qc29uCmluZGV4IDY2MzYxYjdkNmE2YjlkMjRkNmFiNzNiMzM5NWJmZTVjYjk3MmQ1
MzUuLjU1MTYzYjA1ZjNhYTRjNDM5NmMwMDVhZWEyYjllM2UzNTBjNGFkNGEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvc3RyZXNzL3dhc20v
d2FzbS5qc29uCkBAIC02NywyOSArNjcsMjkgQEAKICAgICAgICAgInNldF9nbG9iYWwiOiAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMTg4LCAicmV0dXJuIjog
WyJhbnkiXSwgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndy
aXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMjIsICJyZXR1cm4iOiBbImFu
eSJdLCAgInBhcmFtZXRlciI6IFsiYW55KiJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBh
IGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAg
ICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIzLCAicmV0dXJuIjogWyJh
bnkiXSwgICJwYXJhbWV0ZXIiOiBbImFueSoiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6
IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwg
YSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKLSAgICAg
ICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZh
bHVlIjogIDMyLCAicmV0dXJuIjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJpMzIubG9h
ZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICAzMywg
InJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlw
dGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAg
ICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgMzQsICJyZXR1cm4iOiBb
ImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5h
bWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9h
ZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5sb2FkMTZfdSI6ICAgICAgICB7ICJjYXRl
Z29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJpMzIiXSwgICJw
YXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNl
dCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1v
cnkiIH0sCi0gICAgICAgICJpNjQubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVt
b3J5IiwgICAgICJ2YWx1ZSI6ICAzNiwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjog
WyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwg
ICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAg
ICAgICAiaTY0LmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAi
dmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMy
In1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImk2NC5s
b2FkMTZfcyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDM4
LCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1
aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2Ny
aXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJpNjQubG9hZDE2X3UiOiAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICAzOSwgInJldHVybiI6
IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJs
b2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQzMl9zIjogICAgICAgIHsgImNh
dGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDAsICJyZXR1cm4iOiBbImk2NCJdLCAg
InBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zm
c2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1l
bW9yeSIgfSwKLSAgICAgICAgImk2NC5sb2FkMzJfdSI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJt
ZW1vcnkiLCAgICAgInZhbHVlIjogIDQxLCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIi
OiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3Mi
LCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0g
ICAgICAgICJpMzIubG9hZCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAg
ICJ2YWx1ZSI6ICA0MiwgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0s
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0
LmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDMsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVz
Y3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKLSAgICAgICAgImYzMi5sb2FkIjogICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJu
IjogWyJmMzIiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCi0gICAgICAgICJmNjQubG9hZCI6ICAgICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiZjY0Il0s
ICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20g
bWVtb3J5IiB9LAotICAgICAgICAiaTMyLnN0b3JlOCI6ICAgICAgICAgIHsgImNhdGVnb3J5Ijog
Im1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFn
cyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAot
ICAgICAgICAiaTMyLnN0b3JlMTYiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNDcsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIs
ICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0
LnN0b3JlOCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDgsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVz
Y3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LnN0b3JlMTYiOiAg
ICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDksICJyZXR1cm4i
OiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
c3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LnN0b3JlMzIiOiAgICAgICAgIHsgImNh
dGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTAsICJyZXR1cm4iOiBbXSwgICAgICAg
InBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zm
c2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVt
b3J5IiB9LAotICAgICAgICAiaTMyLnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1l
bW9yeSIsICAgICAidmFsdWUiOiAgNTEsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6
IFsiYWRkciIsICJpMzIiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIs
ICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUi
OiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAg
ICAgICAiaTY0LnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAi
dmFsdWUiOiAgNTIsICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJp
NjQiXSwgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMy
In1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiZjMyLnN0
b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTMs
ICJyZXR1cm4iOiBbXSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJmMzIiXSwgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3Jp
cHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiZjY0LnN0b3JlIjogICAgICAg
ICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTQsICJyZXR1cm4iOiBb
XSwgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJmNjQiXSwgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5h
bWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3Rv
cmUgdG8gbWVtb3J5IiB9LAorICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVn
b3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgMzIsICJyZXR1cm4iOiBbImkzMiJdLCAgInBh
cmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6
ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0
IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9y
eSIgfSwKKyAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2Fk
IiwgICAgICAgInZhbHVlIjogIDMzLCAicmV0dXJuIjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBb
ImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAg
ICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAg
ICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2
YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiaTMyIl0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAiaTMyLmxv
YWQxNl91IjogICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgMzUs
ICJyZXR1cm4iOiBbImkzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3Jp
cHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImk2NC5sb2FkOF9zIjogICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDM2LCAicmV0dXJuIjog
WyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJu
YW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxv
YWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpNjQubG9hZDhfdSI6ICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiaTY0Il0sICAi
cGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZz
ZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVt
b3J5IiB9LAorICAgICAgICAiaTY0LmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogImxv
YWQiLCAgICAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbImk2NCJdLCAgInBhcmFtZXRlciI6
IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIs
ICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUi
OiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAg
ICAgICAgImk2NC5sb2FkMTZfdSI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAg
InZhbHVlIjogIDM5LCAicmV0dXJuIjogWyJpNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpNjQu
bG9hZDMyX3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibG9hZCIsICAgICAgICJ2YWx1ZSI6ICA0
MCwgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNj
cmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAorICAgICAgICAiaTY0LmxvYWQzMl91Ijog
ICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAgICAidmFsdWUiOiAgNDEsICJyZXR1cm4i
OiBbImk2NCJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
bG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImkzMi5sb2FkIjogICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjogIDQyLCAicmV0dXJuIjogWyJpMzIiXSwg
ICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9m
ZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBt
ZW1vcnkiIH0sCisgICAgICAgICJpNjQubG9hZCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
bG9hZCIsICAgICAgICJ2YWx1ZSI6ICA0MywgInJldHVybiI6IFsiaTY0Il0sICAicGFyYW1ldGVy
IjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAor
ICAgICAgICAiZjMyLmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImxvYWQiLCAgICAg
ICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImYzMiJdLCAgInBhcmFtZXRlciI6IFsiYWRkciJd
LCAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKKyAgICAgICAgImY2
NC5sb2FkIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJsb2FkIiwgICAgICAgInZhbHVlIjog
IDQ1LCAicmV0dXJuIjogWyJmNjQiXSwgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRl
c2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCisgICAgICAgICJpMzIuc3RvcmU4Ijog
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVy
biI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpMzIuc3RvcmUxNiI6ICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA0NywgInJldHVybiI6IFtdLCAgICAg
ICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBt
ZW1vcnkiIH0sCisgICAgICAgICJpNjQuc3RvcmU4IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA0OCwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVy
IjogWyJhZGRyIiwgImk2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisg
ICAgICAgICJpNjQuc3RvcmUxNiI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAg
ICJ2YWx1ZSI6ICA0OSwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwg
Imk2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpNjQu
c3RvcmUzMiI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA1
MCwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImk2NCJdLCAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNj
cmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpMzIuc3RvcmUiOiAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA1MSwgInJldHVybiI6
IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJz
dG9yZSB0byBtZW1vcnkiIH0sCisgICAgICAgICJpNjQuc3RvcmUiOiAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2YWx1ZSI6ICA1MiwgInJldHVybiI6IFtdLCAgICAgICAi
cGFyYW1ldGVyIjogWyJhZGRyIiwgImk2NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZz
ZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1v
cnkiIH0sCisgICAgICAgICJmMzIuc3RvcmUiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3Rv
cmUiLCAgICAgICJ2YWx1ZSI6ICA1MywgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjog
WyJhZGRyIiwgImYzMiJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwg
ICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCisgICAg
ICAgICJmNjQuc3RvcmUiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3RvcmUiLCAgICAgICJ2
YWx1ZSI6ICA1NCwgInJldHVybiI6IFtdLCAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImY2
NCJdLCAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCiAgICAgICAgICJjdXJyZW50
X21lbW9yeSI6ICAgICAgeyAiY2F0ZWdvcnkiOiAib3BlcmF0aW9uIiwgICJ2YWx1ZSI6ICA1OSwg
InJldHVybiI6IFsic2l6ZSJdLCAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJxdWVyeSB0aGUgc2l6ZSBvZiBtZW1vcnkiIH0sCiAgICAgICAgICJncm93X21lbW9y
eSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAib3BlcmF0aW9uIiwgICJ2YWx1ZSI6ICA1NywgInJl
dHVybiI6IFsic2l6ZSJdLCAicGFyYW1ldGVyIjogWyJzaXplIl0sICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJncm93IHRoZSBzaXplIG9mIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5hZGQiOiAgICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogIDY0LCAicmV0dXJu
IjogWyJpMzIiXSwgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJpMzIiXSwgImIzb3AiOiAiQWRkIiAg
ICAgICAgICB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290723</attachid>
            <date>2016-10-05 10:37:46 -0700</date>
            <delta_ts>2016-10-17 10:28:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20161005103433.patch</filename>
            <type>text/plain</type>
            <size>80785</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTJkOThlMTg1MGI5ODMxMDJiZGU1YWE0YmJlN2Y2MjFlMTcwOWUxLi4xNDY3YzVjYjA1ZmU5Yzk5
ODVmYWZiMzViMjQ0ZjNkYTU4ZDU1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0wNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIEN1cnJlbnRseSwgQjMgb25seSBiYXJlbHkgd29y
a3Mgd2l0aCBwaW5uZWQgdmFsdWVzIGJlY2F1c2UKKyAgICAgICAgd2UgY2Fubm90IGNoYW5nZSB0
aGUgc2l6ZSBvZiBtZW1vcnkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RXQVNN
LmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Y3JlYXRl
SlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAg
ICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246Oml0
ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6c2V0dXBDYWxs
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAgICogd2FzbS9X
QVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6
Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAgICAgKEpTQzo6
V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVtb3J5OjptZW1v
cnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAgICAoSlNDOjpX
QVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9y
eTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9yeSk6CisgICAg
ICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKiB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6Cisg
ICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAg
KiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6Cisg
ICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6
CisKIDIwMTYtMTAtMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogZG9uJ3Qgc3luY2hyb25vdXNseSBzZW5kIGEgbGlzdGluZyBtZXNzYWdl
IGlmIHdlIG1pZ2h0IG5lZWQgdG8gcXVlcnkgX1dLQXV0b21hdGlvbkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQ3Y2RlZmQzODFkNGFjNmIwMDJkMmY0NWM1
OGU2N2NmZjY4MWJjYi4uMzViYmU0YTI5ZmU2OTMxYTNiMzQ0OWQyMGNjYTMzMjVmZTI0ZjRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDYgKzg1OCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUuY3BwCiAgICAg
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKICAgICB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlv
bi5jcHAKKyAgICB3YXNtL1dBU01NZW1vcnkuY3BwCiAgICAgd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmNwcAogICAgIHdhc20vV0FTTVBsYW4uY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwppbmRl
eCA4MzFkMDk2MDA0MjFjZmJiNDMxNDJhM2Q5OTlhNGRjNjk2NDkwYmVmLi5mNTQwMWZjOTJjZGIx
YmEzZGIyNmI3YTk2ZDdiMmNiNTBjYzZjZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCkBA
IC0zMSw2ICszMSw3IEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX21pbmlkb20gPSBlbnRp
dGxlbWVudHMucGxpc3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YWlyID0gZW50
aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFwaSA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RiMyA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKK0NPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RXQVNNID0g
ZW50aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdFJlZ0V4
cCA9IGVudGl0bGVtZW50cy5wbGlzdDsKIAogU0tJUF9JTlNUQUxMID0gJChTS0lQX0lOU1RBTExf
JChGT1JDRV9UT09MX0lOU1RBTEwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGM0NDI2ZWJlY2I4MGVmZGJlZTQ4MWJiZTY4ZWQ4YmMzZTlmYWYxNy4uYWRiMDg4NTdkMmUzMmYw
MTNjMzNjNjc2MDI2ZjQ1OTQzY2EzNjdhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTIsNiArMTIxMiw4IEBACiAJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0QzQ1N0UxQkM3MjU0OTAwNzQ3NkE3IC8qIEpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzRDNDU3RDFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNTM1MjlBNEMxQzQ1N0I3NTAwMEI0OUM2
IC8qIEFQSVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLzsgfTsKKwkJNTM1
NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTU1NzEzMUQ5RDlFQTUwMDZENTgzQiAvKiBX
QVNNTWVtb3J5LmggKi87IH07CisJCTUzNTU1NzE2MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVt
b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NTU1NzE1MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLzsgfTsKIAkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuY3BwICovOyB9OwogCQk1MzcwQjRGNjFCRjI2MjA1MDA1QzQwRkMg
LyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM3MEI0RjQxQkYyNUVBMjAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAq
LzsgfTsKIAkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTM0NDIsNiArMzQ0NCw4IEBA
CiAJCTUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNEM0NTdEMUJDNzI1
NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2
IC8qIEFQSVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVV0aWxz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzEzMUQ5RDlFQTUwMDZENTgz
QiAvKiBXQVNNTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01N
ZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM1NTU3MTUxRDlERkEzMjAw
NkQ1ODNCIC8qIFdBU01NZW1vcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0FTTU1lbW9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBC
NEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY1Nyw2ICs1NjYxLDgg
QEAKIAkJCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovLAogCQkJCTdC
QzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi8sCiAJCQkJNTNGNDBFOEEx
RDU5MDFCQjAwOTlBMUI2IC8qIFdBU01GdW5jdGlvblBhcnNlci5oICovLAorCQkJCTUzNTU1NzE1
MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLywKKwkJCQk1MzU1NTcxMzFEOUQ5
RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oICovLAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5
QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5
OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oICovLAogCQkJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFG
N0EwQiAvKiBXQVNNUGxhbi5jcHAgKi8sCkBAIC03ODE0LDYgKzc4MjAsNyBAQAogCQkJCTE0MkUz
MTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjEwRjFBMzFDNDIwQkYwMDAxQzA3RDIgLyogQWlyQ3VzdG9tLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MzU1NTcxNDFEOUQ5RUE1MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNTIsNiArOTE1OSw3IEBACiAJCQkJMEY1QTEyNzMxOTJE
OUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUzNTU1NzE2MUQ5REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEYxNDMzMUFERjA5MDEwMEVENzkyQyAvKiBERkdFcG9jaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxl
ZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0V0FTTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3Bw
CmluZGV4IGQ5ZWQ5MWZlMTg0ZGVhYjExNzY5OTVjOGJkNjY5Y2ZjOWQ4ZTRjNmQuLjJjM2M5ZmFi
NmIzMGJkZmY5ZDkzMWQ0YTJhN2FjNDg2OTA5YWVhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RX
QVNNLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01N
ZW1vcnkuaCIKICNpbmNsdWRlICJXQVNNUGxhbi5oIgorCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KICNpbmNsdWRlIDx3dGYvTEVCRGVjb2Rlci5oPgogCkBAIC0yNDIsOCArMjQ0LDQ2OSBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogewogICAgIHsKICAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAgICAg
ICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFt
ICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTY0LnN0b3JlIChnZXRfbG9j
YWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTY0LmxvYWQg
KGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4MDEsIDB4
MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwg
MHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4
MTQsCisgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCisgICAg
ICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBs
YW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94
KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAg
ICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhf
cyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAg
ICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAg
ICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAg
ICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAg
ICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIs
IDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4
MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAx
LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAw
eDAwLCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgw
MiwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0s
IHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5y
ZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21w
aWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMTApIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToK
KyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAg
ICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFy
YW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8v
ICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9j
aworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkz
Mi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAg
ICAgICAgKGkzMi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMyLm11bCAoZ2V0X2xv
Y2FsICRpKSAoaTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAg
ICAoc2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQor
ICAgICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8v
ICAgICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAg
ICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAg
ICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAg
ICAweDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4
NzQsIDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAs
IDB4MGEsIDB4YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAw
eGFjLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAw
LCAweDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwg
MHgwMywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgw
MywgMHgxMCwgMHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQsIDB4MDAsIDB4MzMs
IDB4MDIsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4
MDYsIDB4MDAsIDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07
CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVz
dWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxv
Z0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7
CisgICAgICAgIHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBsYW4u
bWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOwor
ICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVt
b3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBs
ZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAg
ICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3Qp
OworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDUpLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBz
aXplb2YodWludDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEw
MHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBD
SEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAg
ICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIp
IChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2Fs
ICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisg
ICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8v
ICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVu
Z3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlOCAoaTMyLmFkZCAoZ2V0X2xvY2Fs
ICRwKSAoZ2V0X2xvY2FsICRpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAo
c2V0X2xvY2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAg
ICAgICAvLyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAg
ICAgICkKKyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAg
ICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAg
ICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEs
IDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAw
eDAzLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQs
IDB4NjUsIDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4
MGEsIDB4YWYsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGE5
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAw
eDE1LCAweDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgw
MywgMHgxNCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywg
MHg0MCwgMHgxNCwgMHgwMCwKKyAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4
MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYs
IDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBd
KSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3Jy
ZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMTsKKyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KHBsYW4ubWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgp
IH0pOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zm
c2V0ID0gNTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVD
S19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlb
b2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAv
LyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAo
ZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGdldF9sb2NhbCAk
cHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhf
cyAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwg
MHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1l
bW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAg
ICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3Mi
KSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAoaTMyLnN0b3Jl
OCAoaTMyLmNvbnN0IDgpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgICAgIChyZXR1cm4g
KGkzMi5sb2FkOF9zIChpMzIuY29uc3QgOCkpKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAg
Ly8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAg
IDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
ODYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAx
LCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwYiwgMHg2OSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4
NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAxLCAweDhmLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAw
LCAweDAwLCAweDEwLCAweDA4LAorICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwg
MHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAg
ICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4i
KTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSks
IDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBH
ZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAx
KQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMy
KSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3RvcmUg
KGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJuIChp
MzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8vICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMiwg
MHgwMSwgMHgwMSwgMHgwMiwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzNCwgMHgwMywg
MHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goLTEyKSwgYm94KHBsYW4ubWVtb3J5LT5zaXplKCkgLSBzaXplb2YodWludDY0X3QpKSB9
KSwgLTEyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAg
ICAgICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVu
YyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikg
KHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChn
ZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwg
JHB0cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4
MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAw
eDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgz
LCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgz
MywKKyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4Mzgs
IDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisg
ICAgICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAw
LCAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAweDAwLCAweDE0LAorICAgICAg
ICAgICAgMHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisg
ICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5z
aXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
TW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBHZW5lcmF0ZWQgZnJvbToKICAgICAgICAgLy8gICAgKG1vZHVsZQotICAgICAgICAvLyAg
ICAgKGZ1bmMgKGV4cG9ydCAiZHVtYi1lcSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIp
IChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAg
KGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMy
KSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8vICAgICAgKHNl
dF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChibG9jaworICAgICAg
ICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChn
ZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAgICAgICAgKGkz
Mi5zdG9yZSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoaTMyLm11bCAoZ2V0X2xvY2FsICRpKSAo
aTMyLmNvbnN0IDQpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAoc2V0X2xv
Y2FsICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAgICAgICAv
LyAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAgICAgICkK
KyAgICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8g
ICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4
MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAzLCAw
eDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQsIDB4NjUs
IDB4NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4MGEsIDB4
YjIsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGFjLCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAweDE1LCAw
eDAzLCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgwMywgMHgx
NCwgMHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywgMHgxMCwg
MHgwNCwgMHg0MiwKKyAgICAgICAgICAgIDB4NDAsIDB4MTQsIDB4MDAsIDB4MzMsIDB4MDIsIDB4
MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAs
IDB4MGYsCisgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUo
KSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1
bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7CisgICAgICAg
IHVpbnQzMl90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBsYW4ubWVtb3J5LT5t
ZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQ
b2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBv
ZmZzZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNl
dCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAw
dSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVu
Z3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDUgKiBzaXplb2YodWludDMyX3QpOworICAgICAg
ICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBi
b3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXplb2YodWlu
dDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAg
ICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUSht
ZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVy
YXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5
IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAk
eCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikgKGxvY2FsICRpIGkzMikK
KyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisgICAgICAgIC8v
ICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8vICAgICAgICAo
YnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2NhbCAkbGVuZ3RoKSkpCisg
ICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlOCAoaTMyLmFkZCAoZ2V0X2xvY2FsICRwKSAoZ2V0
X2xvY2FsICRpKSkgKGdldF9sb2NhbCAkeCkpCisgICAgICAgIC8vICAgICAgICAoc2V0X2xvY2Fs
ICRpIChpMzIuYWRkIChpMzIuY29uc3QgMSkgKGdldF9sb2NhbCAkaSkpKQorICAgICAgICAvLyAg
ICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICApCisgICAgICAgIC8vICAgICAgICkKKyAg
ICAgICAgLy8gICAgICAocmV0dXJuKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAg
ICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAs
IDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAzLCAweDAx
LCAweDAxLCAweDAxLCAweDAwLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwYiwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4NzQsIDB4NjUsIDB4
NWYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MDAsIDB4MDAsIDB4MGEsIDB4YWYs
IDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweGE5LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAweDE1LCAweDAz
LCAweDAxLCAweDAwLAorICAgICAgICAgICAgMHgwMiwgMHgwMCwgMHgxNCwgMHgwMywgMHgxNCwg
MHgwMiwgMHg1NiwgMHgwNywgMHgwMSwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgx
NCwgMHgwMCwKKyAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQs
IDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1l
bW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMTsK
KyAgICAgICAgdWludDhfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHBsYW4ubWVt
b3J5LT5tZW1vcnkoKSk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAg
ICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZz
ZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zmc2V0ID0gNTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBDSEVDS19FUShtZW1v
cnlbb2Zmc2V0IC0gMV0sIDEwMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsg
bGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDV1KTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9k
dWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhw
b3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJlc3Vs
dCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGdldF9sb2NhbCAkcHRyKSAoZ2V0
X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhfcyAoZ2V0X2xv
Y2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDcz
LCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAw
eDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgw
MSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwg
MHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIs
IDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAw
eDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgw
LCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgx
NCwKKyAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAg
ICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxh
bi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAg
ICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeS0+c2l6
ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDAp
LCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5l
cmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9y
eSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0g
JGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAoaTMyLnN0b3JlOCAoaTMyLmNv
bnN0IDgpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2Fk
OF9zIChpMzIuY29uc3QgOCkpKQorICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4
NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODYsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAxLCAweDAxLCAw
eDAxLCAweDAxLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAw
LCAweDA1LCAweDgzLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHgwMCwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
YiwgMHg2OSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEs
IDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAw
eDEwLCAweDA4LAorICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAg
ICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChw
bGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCkgfSksIDEwMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSB9KSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQg
ZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKGZ1bmMgImR1bWIt
ZXEiIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKQogICAgICAgICAv
LyAgICAgIChpZiAoaTMyLmVxIChnZXRfbG9jYWwgJHgpIChnZXRfbG9jYWwgJHkpKQogICAgICAg
ICAvLyAgICAgICAodGhlbiAoYnIgMCkpCiAgICAgICAgIC8vICAgICAgIChlbHNlIChyZXR1cm4g
KGkzMi5jb25zdCAxKSkpKQpAQCAtMjY1LDE0ICs3MjgsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FT
TVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDAp
LCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDEpOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSks
IDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEpOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2
KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MCkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94
KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJv
eCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCks
IGJveCg2KSB9KSwgMSk7CiAgICAgfQogCiAgICAgewpAQCAtMzA2LDE0ICs3NjksMTQgQEAgc3Rh
dGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSks
IDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDEpLCBib3goMikgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikg
fSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEwMCksIGJveCg2KSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDEpLCBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEwMCksIGJveCg2KSB9KSwgMCk7CiAgICAgfQogCiAKQEAgLTMzMyw3ICs3OTYs
NyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyB9KSwgNSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0pLCA1KTsKICAgICB9CiAKIApAQCAtMzU0
LDcgKzgxNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCAxMSk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0pLCAxMSk7CiAgICAgfQog
CiAgICAgewpAQCAtMzc0LDcgKzgzNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCAxMSk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IH0p
LCAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtMzk0LDcgKzg1Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0p
LCAxMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IH0pLCAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtNDEzLDEwICs4NzYsMTAg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgxKSB9KSwgMTAxKTsK
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgtMSks
IGJveCgxKX0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94KDEpIH0pLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goLTEpLCBib3go
MSl9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94
KDEpIH0pLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKICAgICB9CiAKICAgICB7
CkBAIC00NDIsOCArOTA1LDggQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApIH0pLCAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMCkgfSksIDEwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwKSB9KSwgMTApOwogICAgIH0KIAogICAg
IHsKQEAgLTQ3OCwxMCArOTQxLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSkgfSksIDEp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIp
fSksIDMpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEwMCkgfSksIDUwNTApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSkgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMil9KSwgMyk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCA1MDUwKTsKICAgICB9
CiAKICAgICB7CkBAIC01MjIsMTQgKzk4NSwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgx
KSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9KSwgMik7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMik7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgyKSB9KSwgNCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCg2KSB9KSwgMTIpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2KSB9KSwgNjAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMTAw
KSB9KSwgMTAwMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwg
Ym94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDIpOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSks
IGJveCgyKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCA0KTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIp
LCBib3goNikgfSksIDEyKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCg2KSB9KSwgNjAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveCgxMDApIH0pLCAxMDAwMCk7CiAgICAgfQogCiAgICAgewpAQCAtNTc1LDE0
ICsxMDM4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0p
LCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgyKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEp
IH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJv
eCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBi
b3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwg
Ym94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiks
IGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDApOwogICAgIH0KIAog
fQpAQCAtNTk2LDcgKzEwNTksNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgaWYgKG9wdGlvbnMubV9ydW5MRUJUZXN0cykKICAgICAgICAgcnVuTEVCVGVzdHMoKTsKIAot
CiAgICAgaWYgKG9wdGlvbnMubV9ydW5XQVNNVGVzdHMpIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBiNzFjMWFmYWE5
NDQ2MTZiYTE3ZmViZmM5NWVkYmNhYzYwZDNjYjQuLjE0OTlmZjBiZjZhN2M0YmZiMDAyNDYwOTgw
Y2I3MmUyMjk0MTcxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDb25z
dFB0clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKQEAgLTM3LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXQVNNQ2FsbGluZ0Nv
bnZlbnRpb24uaCIKICNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKKyNpbmNsdWRlICJX
QVNNTWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIHZvaWQgZHVtcFByb2Nl
ZHVyZSh2b2lkKiBwdHIpCkBAIC0xNjUsMTggKzE2OCwyNSBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBWZWN0b3I8VmFyaWFibGUqLCAxPiBSZXN1bHRMaXN0OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
RXhwcmVzc2lvblR5cGUgZW1wdHlFeHByZXNzaW9uID0gbnVsbHB0cjsKIAotICAgIEIzSVJHZW5l
cmF0b3IoUHJvY2VkdXJlJik7CisgICAgQjNJUkdlbmVyYXRvcihNZW1vcnkqLCBQcm9jZWR1cmUm
KTsKIAogICAgIHZvaWQgYWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYpOwogICAgIHZv
aWQgYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOwogICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0
YW50KFR5cGUsIHVpbnQ2NF90KTsKIAorICAgIC8vIExvY2FscwogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwg
RXhwcmVzc2lvblR5cGUgdmFsdWUpOwogCisgICAgLy8gTWVtb3J5CisgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gbG9hZChMb2FkT3BUeXBlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHN0b3JlKFN0b3JlT3BUeXBlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKworICAgIC8vIEJhc2ljIG9wZXJh
dG9ycwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGJpbmFyeU9wKEJpbmFyeU9wVHlwZSwg
RXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHVuYXJ5T3AoVW5hcnlPcFR5
cGUsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKKyAgICAv
LyBDb250cm9sIGZsb3cKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQmxv
Y2soVHlwZSBzaWduYXR1cmUpOwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRMb29wKFR5cGUgc2lnbmF0dXJlKTsKICAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkSWYoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBUeXBlIHNpZ25hdHVyZSk7CkBAIC0x
OTEsMTYgKzIwMSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKGNvbnN0IFZlY3RvcjxDb250
cm9sVHlwZT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25T
dGFjayk7CiAKIHByaXZhdGU6CisgICAgRXhwcmVzc2lvblR5cGUgZW1pdENoZWNrQW5kUHJlcGFy
ZVBvaW50ZXIodWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJf
dCBzaXplT2ZPcCk7CisgICAgRXhwcmVzc2lvblR5cGUgZW1pdExvYWRPcChMb2FkT3BUeXBlLCBP
cmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIpOworICAgIHZvaWQgZW1pdFN0b3JlT3AoU3Rv
cmVPcFR5cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpOworCiAgICAgdm9pZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHByZXNz
aW9uVHlwZSBzb3VyY2UpOwogICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY29uc3QgRXhw
cmVzc2lvbkxpc3QmIHJlc3VsdFN0YWNrLCBSZXN1bHRMaXN0JiBzdGFjayk7CiAKKyAgICBNZW1v
cnkqIG1fbWVtb3J5OwogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1f
Y3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIC8vIEZJ
WE1FOiBUaGlzIHByb2JhYmx5IG5lZWRzIHRvIGJlIGEgdmFyaWFibGUgb3Igc29tZXRoaW5nLCBm
aXggaXQgd2hlbiB3ZSBjYW4gYWN0dWFsbHkgY2hhbmdlIG1lbW9yeSBzaXplLgorICAgIC8vIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcyNworICAgIFZh
bHVlKiBtX21lbW9yeUJhc2UgeyBudWxscHRyIH07CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlci4gc2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgVmFsdWUqIG1fbWVtb3J5U2l6ZSB7
IG51bGxwdHIgfTsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoUHJvY2VkdXJl
JiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVyYXRvcjo6QjNJ
UkdlbmVyYXRvcihNZW1vcnkqIG1lbW9yeSwgUHJvY2VkdXJlJiBwcm9jZWR1cmUpCisgICAgOiBt
X21lbW9yeShtZW1vcnkpCisgICAgLCBtX3Byb2MocHJvY2VkdXJlKQogewogICAgIG1fY3VycmVu
dEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiB9CkBAIC0yMjIsMjIgKzI0MywyMDEgQEAgdm9p
ZCBCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+JiB0eXBlcykK
ICAgICAgICAgICAgIG1fbG9jYWxzW2ldID0gYXJndW1lbnRWYXJpYWJsZTsKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9y
aWdpbigpLCBhcmd1bWVudFZhcmlhYmxlLCBhcmd1bWVudCk7CiAgICAgICAgIH0pOworCisgICAg
aWYgKG1fbWVtb3J5KSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFkZCB0aGUgY2FsbGlu
ZyBjb252ZW50aW9uIHdlIHNob3VsZCBoYXZlIHR3byBlbnRyeXBvaW50cyBhbmQgd2Ugc2hvdWxk
IGNoYW5nZSB0aGVzZSB0byByZWdpc3RlciBhcmd1bWVudHMuCisgICAgICAgIC8vIHNlZTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcyNworICAgICAgICBtX21l
bW9yeUJhc2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5iYXNlTWVtb3J5UG9p
bnRlcik7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25l
IHNpemUgcmVnaXN0ZXIuIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mjk1MgorICAgICAgICBtX21lbW9yeVNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIG1fbWVtb3J5LT5waW5uZWRS
ZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3Rlcik7CisgICAgfQogfQogCi1i
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6Z2V0TG9j
YWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KG1fbG9jYWxzW2luZGV4XSk7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tpbmRl
eF0pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lS
R2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUp
Citib29sIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgT3JpZ2lu
KCksIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxp
bmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHVpbnQz
Ml90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgc2l6ZU9mT3BlcmF0
aW9uKQoreworICAgIEFTU0VSVChtX21lbW9yeUJhc2UgJiYgbV9tZW1vcnlTaXplKTsKKyAgICAv
LyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFkZCB0aGUgbWVtb3J5T2Zmc2V0IHRvIHRo
ZSBwb2ludGVyIHdpdGggYSAzMmJpdCBhZGQKKyAgICAvLyBzbyBpZiBpdCBvdmVyZmxvd3Mgd2Ug
c3RheSB3aXRoaW4gb3VyIG1hcHBlZCBtZW1vcnkuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlci4gc2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgVmFsdWUqIG1lbW9yeU9mZnNldCA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9yaWdpbigpLCBJbnQz
Miwgb2Zmc2V0KTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBBZGQsIE9yaWdpbigpLCBwb2ludGVyLCBtZW1vcnlPZmZzZXQpOworICAgIHBv
aW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwg
T3JpZ2luKCksIHBvaW50ZXIpOworCisgICAgVmFsdWUqIHNpemVPZlZhbHVlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIEludDY0LCBzaXplT2ZP
cGVyYXRpb24pOworICAgIFZhbHVlKiBsYXN0Qnl0ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBPcmlnaW4oKSwgc2l6ZU9mVmFsdWUsIHBvaW50ZXIpOwor
ICAgIFZhbHVlKiBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgQWJvdmUsIE9yaWdpbigpLCBsYXN0Qnl0ZSwgbV9tZW1vcnlTaXplKTsKKyAgICBD
aGVja1ZhbHVlKiBib3VuZHNDaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4obV9wcm9jLCBDaGVjaywgT3JpZ2luKCksIG91dE9mQm91bmRzKTsKKyAgICBib3VuZHND
aGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgIH0pOwor
CisgICAgcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
QWRkLCBPcmlnaW4oKSwgbV9tZW1vcnlCYXNlLCBwb2ludGVyKTsKKyAgICByZXR1cm4gcG9pbnRl
cjsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZkxvYWRPcChMb2FkT3BUeXBlIG9wKQorewor
ICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzoKKyAgICBj
YXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4
UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4VToKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDE2UzoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2Fk
OgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyUzoKKyAgICBjYXNlIExvYWRPcFR5cGU6
Okk2NExvYWQzMlU6CisgICAgICAgIHJldHVybiA0OworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDoKKyAgICAgICAgcmV0dXJuIDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKy8vIEZJWE1FOiBC
MyBzaG91bGQgc3VwcG9ydCBJbnQ2NCBzbWFsbCBsb2FkcyBhbmQgMTYtYml0IHVuc2lnbmVkIGxv
YWRzLgoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRPcFR5cGUg
b3AsIE9yaWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIpCit7CisgICAgc3dpdGNo
IChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywg
b3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExv
YWQ4UzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywgb3JpZ2luLCBwb2ludGVyLCAwKTsKKyAgICAg
ICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMy
LCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4
VTogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgfQorCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwg
cG9pbnRlciwgMCk7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIFpFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJMzJMb2FkMTZTOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwg
MCk7CisgICAgfQorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzogeworICAgICAgICBW
YWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwgMCk7CisgICAgICAgIHJldHVybiBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7
CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIElu
dDMyLCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDMyVTogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBa
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDMyUzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBT
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3As
IHVpbnQzMl90IG9mZnNldCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKworICAg
IHJlc3VsdCA9IGVtaXRMb2FkT3Aob3AsIE9yaWdpbigpLCBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9p
bnRlcihvZmZzZXQsIHBvaW50ZXIsIHNpemVPZkxvYWRPcChvcCkpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3ApCit7
CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTg6CisgICAgICAgIHJldHVybiAxOworICAgIGNh
c2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3Rv
cmUxNjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU6
CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUzMjoKKyAgICAgICAgcmV0dXJuIDQ7Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgICAgIHJldHVybiA4OworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCisKKy8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBzdXBwb3J0IGFuIEludDY0
IHN0b3JlOC4KK2lubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKFN0b3JlT3BU
eXBlIG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6
STY0U3RvcmU4OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsK
KworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTgsIG9yaWdpbiwgdmFsdWUs
IHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRT
dG9yZTE2OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKwor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUxNiwgb3JpZ2luLCB2YWx1ZSwg
cG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMzI6CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMy
U3RvcmU6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgU3RvcmUsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpzdG9yZShTdG9yZU9wVHlw
ZSBvcCwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9u
VHlwZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKwor
ICAgIGVtaXRTdG9yZU9wKG9wLCBPcmlnaW4oKSwgZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIo
b2Zmc2V0LCBwb2ludGVyLCBzaXplT2ZTdG9yZU9wKG9wKSksIHZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9wLCBF
eHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBP
cmlnaW4oKSwgYXJnKTsKQEAgLTQwMywxMCArNjAzLDcwIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJl
c3NpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGls
YXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBG
dW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQorCitzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwg
TWVtb3J5KiBtZW1vcnkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBDaGVjayBhcmd1bWVudCBjb3VudCBp
cyBzYW5lLgorICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN1cHBvc2VkIHRvIHRyYXAgaWYgbGVzcyB0
aGFuIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHM/CisgICAgVmFsdWUqIGZyYW1lUG9pbnRl
ciA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBP
cmlnaW4oKSk7CisgICAgVmFsdWUqIG9mZlNldE9mQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpOworICAgIFZhbHVlKiBhcmd1bWVudENvdW50ID0g
YmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBm
cmFtZVBvaW50ZXIsIG9mZlNldE9mQXJndW1lbnRDb3VudCkpOworCisgICAgVmFsdWUqIGV4cGVj
dGVkQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpKTsKKworICAgIENoZWNrVmFsdWUq
IGFyZ3VtZW50Q291bnRDaGVjayA9IGJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2ssIE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
Ym92ZSwgT3JpZ2luKCksIGV4cGVjdGVkQXJndW1lbnRDb3VudCwgYXJndW1lbnRDb3VudCkpOwor
ICAgIGFyZ3VtZW50Q291bnRDaGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBqaXQuYnJlYWtw
b2ludCgpOworICAgIH0pOworCisgICAgLy8gTW92ZSBtZW1vcnkgdmFsdWVzIHRvIHRoZSBhcHBy
b3JpYXRlIHBsYWNlcywgaWYgbmVlZGVkLgorICAgIFZhbHVlKiBiYXNlTWVtb3J5ID0gbnVsbHB0
cjsKKyAgICBWZWN0b3I8VmFsdWUqPiBzaXplczsKKyAgICBpZiAobWVtb3J5KSB7CisgICAgICAg
IGJhc2VNZW1vcnkgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBtZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgVmFsdWUqIHNpemUgPSBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAg
ICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KG1lbW9yeSkgKyBNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKSk7CisgICAg
ICAgIHNpemVzLnJlc2VydmVDYXBhY2l0eShtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVS
ZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGluZm8gOiBtZW1vcnktPnBpbm5l
ZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHNpemVzLmFwcGVuZChi
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBzaXplLAorICAgICAg
ICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
aW5mby5zaXplT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gR2V0IG91ciBh
cmd1bWVudHMuCisgICAgVmVjdG9yPFZhbHVlKj4gYXJndW1lbnRzOworICAgIGpzY0NhbGxpbmdD
b252ZW50aW9uKCkuaXRlcmF0ZShzaWduYXR1cmUtPmFyZ3VtZW50cywgcHJvYywgYmxvY2ssIE9y
aWdpbigpLCBbJl0gKFZhbHVlKiBhcmd1bWVudCwgdW5zaWduZWQpIHsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgfSk7CisKKyAgICAvLyBNb3ZlIHRoZSBhcmd1bWVu
dHMgaW50byBwbGFjZS4KKyAgICBWYWx1ZSogcmVzdWx0ID0ganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS5zZXR1cENhbGwocHJvYywgYmxvY2ssIE9yaWdpbigpLCBtYWluRnVuY3Rpb24sIGFyZ3VtZW50
cywgdG9CM1R5cGUoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKSwgWyZdIChQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKG1lbW9yeSkgeworICAgICAgICAgICAgQVNTRVJU
KHNpemVzLnNpemUoKSA9PSBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGJhc2VNZW1vcnksIFZhbHVlUmVwOjpyZWcobWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5iYXNl
TWVtb3J5UG9pbnRlcikpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShzaXplc1tpXSwgVmFsdWVSZXA6OnJlZyhtZW1vcnktPnBpbm5lZFJlZ2lz
dGVycygpLnNpemVSZWdpc3RlcnNbaV0uc2l6ZVJlZ2lzdGVyKSkpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCwgaWYgbmVlZWRlZC4KKyAgICBpZiAoc2ln
bmF0dXJlLT5yZXR1cm5UeXBlICE9IFZvaWQpCisgICAgICAgIGJsb2NrLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgQjM6OlJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgZWxzZQor
ICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEIzOjpSZXR1cm4sIE9y
aWdpbigpKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwg
cHJvYyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgTWVtb3J5KiBtZW1vcnks
IEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCiB7CiAgICAgUHJv
Y2VkdXJlIHByb2NlZHVyZTsKLSAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQocHJvY2VkdXJlKTsK
KyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQobWVtb3J5LCBwcm9jZWR1cmUpOwogICAgIEZ1bmN0
aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBzb3VyY2UsIGluZm8pOwog
ICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC00MTcsNyArNjc3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4g
cGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIEZ1CiAgICAg
Zml4U1NBKHByb2NlZHVyZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlBv
c3QgU1NBOiAiLCBwcm9jZWR1cmUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1
bmN0aW9uQ29tcGlsYXRpb24+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb25Db21w
aWxhdGlvbj4oKTsKKworICAgIHJlc3VsdC0+Y29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGls
YXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKKyAgICByZXN1bHQtPmpzRW50cnlQb2lu
dCA9IGNyZWF0ZUpTV3JhcHBlcih2bSwgaW5mby5zaWduYXR1cmUsIHJlc3VsdC0+Y29kZS0+Y29k
ZSgpLCBtZW1vcnkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJ
UkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0
b3IuaAppbmRleCA5NTE5NmRiZTU3N2RhYWZhYmE5NzhhNTYwNGM5MDZjZDY1NWJmYzgzLi5mODI4
MmQwYzk1NWMyNmY3ZTdjMDEyNDU3OTdiOTkxNmQ0ZGI5MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDkgQEAgZXh0
ZXJuICJDIiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCopOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdBU00gewogCi1zdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mLCBWZWN0b3I8dWludDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNp
Z25lZCBvcHRMZXZlbCA9IDEpOworY2xhc3MgTWVtb3J5OworCitzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+Jiwg
TWVtb3J5KiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA3ODk1OTMxMDI0YTUzZDY3ZDVj
NzliOTQ0ZWNmMmIyYjUyYWIxNzQ1Li5iOTkyZjRiNzg3YjI3OWE4YWM5NGFhOWU0ZmI3NTVjMTNm
YTIzZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaApAQCAtMjcsMjMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKKyNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNs
dWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKICNp
bmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXR5cGVkZWYgdW5zaWduZWQg
KCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwordHlwZWRl
ZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBl
IHR5cGUpOwogCi10ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRlT2Zm
c2V0PgordGVtcGxhdGU8dW5zaWduZWQgaGVhZGVyU2l6ZSwgTmV4dE9mZnNldCB1cGRhdGVPZmZz
ZXQ+CiBjbGFzcyBDYWxsaW5nQ29udmVudGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGhlYWRlclNpemUgPSBvZmZzZXQ7Ci0KICAgICBDYWxsaW5nQ29udmVudGlvbihW
ZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVyQXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNh
dmVSZWdpc3RlcnMpCiAgICAgICAgIDogbV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3Vt
ZW50cykKICAgICAgICAgLCBtX2NhbGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVy
cykKQEAgLTY0LDE4ICs2OCw1MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQjM6OlZhbHVl
KiBhZGRyZXNzID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpBZGQsIG9y
aWdpbiwgZnJhbWVQb2ludGVyLAogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3
PEIzOjpDb25zdDY0VmFsdWU+KHByb2MsIG9yaWdpbiwgY3VycmVudE9mZnNldCkpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KHBy
b2MsIEIzOjpMb2FkLCB0b0IzVHlwZShhcmd1bWVudFR5cGVzW2ldKSwgb3JpZ2luLCBhZGRyZXNz
KTsKLSAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJlbnRP
ZmZzZXQsIGFyZ3VtZW50VHlwZXNbaV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQg
PSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEIzOjpW
YWx1ZSogc2V0dXBDYWxsKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9j
aywgQjM6Ok9yaWdpbiBvcmlnaW4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIGNvbnN0
IFZlY3RvcjxCMzo6VmFsdWUqPiYgYXJndW1lbnRzLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBjb25z
dCBGdW5jdG9yJiBwYXRjaHBvaW50RnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIHN0YWNrQXJndW1lbnRDb3VudCA9IGFyZ3VtZW50cy5zaXplKCkgPCBtX3JlZ2lzdGVyQXJn
dW1lbnRzLnNpemUoKSA/IDAgOiBhcmd1bWVudHMuc2l6ZSgpIC0gbV9yZWdpc3RlckFyZ3VtZW50
cy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGhlYWRlclNpemUgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQyk7CisKKyAgICAgICAgcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXpl
SW5CeXRlcyhXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBo
ZWFkZXJTaXplICsgKHN0YWNrQXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpKSk7Cisg
ICAgICAgIFZlY3RvcjxCMzo6Q29uc3RyYWluZWRWYWx1ZT4gY29uc3RyYWluZWRBcmd1bWVudHM7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCByZXA7CisgICAgICAgICAgICBpZiAoaSA8IG1f
cmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1
ZVJlcDo6cmVnKG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXQpOwor
ICAgICAgICAgICAgY29uc3RyYWluZWRBcmd1bWVudHMuYXBwZW5kKEIzOjpDb25zdHJhaW5lZFZh
bHVlKGFyZ3VtZW50c1tpXSwgcmVwKSk7CisgICAgICAgICAgICBvZmZzZXQgPSB1cGRhdGVPZmZz
ZXQob2Zmc2V0LCBhcmd1bWVudHNbaV0tPnR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCByZXR1cm5UeXBlLCBvcmlnaW4pOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVudHMpOworICAgICAgICBwYXRjaHBv
aW50RnVuY3RvcihwYXRjaHBvaW50KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0
LmNhbGwoKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rp
b25QdHIodGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpZiAocmV0dXJuVHlwZSAhPSBCMzo6Vm9pZCkKKyAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBjb25zdCBWZWN0b3I8R1BSUmVnPiBtX3JlZ2lzdGVyQXJndW1lbnRzOwogICAgIGNvbnN0
IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBjb25zdCBSZWdpc3RlclNl
dCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7CiB9OwogCi1pbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09m
ZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlKQoraW5saW5lIHVuc2lnbmVkIG5leHRK
U0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgQjM6OlR5cGUpCiB7CiAgICAgcmV0dXJu
IGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZvcm1hdC5oCmluZGV4IDdhMDQxMzdlM2M3MGYxODI0NzEwYWNkOTg4NDdmNzIx
NTYyNGQwMWQuLjFlMTA4MTBkM2ZmNmVlMGE4NzY0YjMyYjM2ZTgwNTZkZDM0NWE2YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNp
bmNsdWRlICJCM1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMjYsNiArMTI3LDExIEBAIHN0cnVjdCBGdW5jdGlvbklu
Zm9ybWF0aW9uIHsKICAgICBzaXplX3QgZW5kOwogfTsKIAorc3RydWN0IEZ1bmN0aW9uQ29tcGls
YXRpb24geworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGNvZGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4ganNFbnRyeVBvaW50OworfTsKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggYWU4NzQyNDBjOTIyOGQyZDgzOTc0NDZlMTU4N2EyZDQ0NjkxZmEzZC4uZjM1MDZlZDc1YmVk
NjNlN2EwNjRjM2QyNjU0ODFjYzZlZTQ4YjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTE1NCw2ICsxNTQsMzkgQEAgYm9vbCBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9P
UChDUkVBVEVfQ0FTRSkgeworICAgICAgICAvLyBUT0RPOiBXaGF0IGRvIEkgZG8gd2l0aCB0aGlz
PworICAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50
MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50
MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVz
dWx0OworICAgICAgICBpZiAoIW1fY29udGV4dC5sb2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+
KG9wKSwgb2Zmc2V0LCBwb2ludGVyLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpIHsKKyAgICAgICAgLy8gVE9ETzogV2hhdCBkbyBJIGRvIHdpdGggdGhpcz8KKyAg
ICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFs
aWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qg
b2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJl
c3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5z
dG9yZShzdGF0aWNfY2FzdDxTdG9yZU9wVHlwZT4ob3ApLCBvZmZzZXQsIHBvaW50ZXIsIHZhbHVl
KTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAgdWludDMy
X3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2VkOTAx
MzYzNGU3ODQ3NDcyMzczMzBmZjZhODMwZGIwYzllNjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK01lbW9yeTo6TWVtb3J5
KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVu
c2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycykKKyAgICA6IG1fbW9kZShNb2RlOjpCb3VuZHND
aGVja2luZykKKyAgICAsIG1fc2l6ZShzdGFydGluZ1NpemUpCisgICAgLCBtX21heFNpemUobWF4
U2l6ZSkKK3sKKyAgICBBU1NFUlQocGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgPiAwKTsKKyAg
ICB2b2lkKiByZXN1bHQgPSBtbWFwKG51bGxwdHIsIG1heFBhZ2VOdW0sIFBST1RfTk9ORSwgTUFQ
X1BSSVZBVEUgfCBNQVBfQU5PTiwgMCwgMCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
Ly8gVHJ5IGFnYWluIHdpdGggYSBkaWZmZXJlbnQgbnVtYmVyLgorICAgICAgICByZXN1bHQgPSBt
bWFwKG51bGxwdHIsIG1heFNpemUsIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwg
MCwgMCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtcHJvdGVjdChyZXN1bHQsIHN0YXJ0aW5nU2l6ZSwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSkpIHsKKyAgICAgICAgbXVubWFwKHJlc3VsdCwgbWF4U2l6ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBw
aW5uZWRTaXplUmVnaXN0ZXJzLnNpemUoKSArIDE7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAg
R1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAgaWYgKGdwciA9PSBDQ2FsbEhlbHBlcnM6
OmZyYW1lUG9pbnRlclJlZ2lzdGVyIHx8IGdwciA9PSBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7CisgICAgICAgICAgICBtX3Bpbm5lZFJlZ2lzdGVycy5i
YXNlTWVtb3J5UG9pbnRlciA9IGdwcjsKKyAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lz
dGVycy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fcGlubmVkUmVnaXN0ZXJzLnNp
emVSZWdpc3RlcnMuYXBwZW5kKHsgZ3ByLCBwaW5uZWRTaXplUmVnaXN0ZXJzWy0tcmVtYWluaW5n
UGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7CisgICAgfSk7CisKKyAgICBBU1NFUlQoIXJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyk7CisgICAgbV9tZW1vcnkgPSByZXN1bHQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCit9IC8vIG5hbWVzcGFjZSBXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
QVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVt
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGJlNzI2YzgxOWJlMjllYWE2ODJmZDNmODA3ZDNmOTVlYTU2M2QwOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaApAQCAtMCwwICsx
LDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJXQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKKworc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8g
eworICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7CisgICAgdW5zaWduZWQgc2l6ZU9mZnNldDsKK307
CisKK3N0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8geworICAgIFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOworICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsK
K307CisKK2NvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlTnVtID0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpIC8gNjQgLyBLQjsKKworY2xhc3MgTWVtb3J5IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNZW1vcnkpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG90aGVyIG1vZGVzLiBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAgICBl
bnVtIGNsYXNzIE1vZGUgeworICAgICAgICBCb3VuZHNDaGVja2luZworICAgIH07CisKKyAgICBN
ZW1vcnkoKSA9IGRlZmF1bHQ7CisgICAgTWVtb3J5KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWlu
dDMyX3QgbWF4U2l6ZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVy
cyk7CisKKyAgICB+TWVtb3J5KCkKKyAgICB7CisgICAgICAgIGlmIChtX21lbW9yeSkKKyAgICAg
ICAgICAgIG11bm1hcChtX21lbW9yeSwgbV9tYXhTaXplKTsKKyAgICB9CisKKyAgICB2b2lkKiBt
ZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeTsgfQorICAgIHVpbnQzMl90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBp
bm5lZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkUmVnaXN0ZXJzOyB9CisKKyAg
ICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKworICAgIGJvb2wgZ3Jvd01l
bW9yeSh1aW50MzJfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5KTsK
KyAgICAgICAgaWYgKG5ld1NpemUgPiBtX21heFNpemUpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgcmV0dXJuICFtcHJvdGVjdChtX21lbW9yeSwgbmV3U2l6ZSwgUFJPVF9S
RUFEIHwgUFJPVF9XUklURSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAg
Citwcml2YXRlOgorICAgIHZvaWQqIG1fbWVtb3J5IHsgbnVsbHB0ciB9OworICAgIFBpbm5lZFJl
Z2lzdGVySW5mbyBtX3Bpbm5lZFJlZ2lzdGVyczsKKyAgICBNb2RlIG1fbW9kZTsKKyAgICB1aW50
MzJfdCBtX3NpemUgeyAwIH07CisgICAgdWludDMyX3QgbV9tYXhTaXplIHsgMCB9OworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApp
bmRleCA1ZTA1M2E1YTc5MDNhNTRlYjg2NDU2NDY4MmUzZTlkMTcxMGIyMTY0Li5lODMwNDJlMGVj
YTg0MWY3OTIxY2IwMDQxOGRjYjllNzNiYzEzZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMjgsMTAgKzI4LDEzIEBACiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNs
dWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldBU01T
ZWN0aW9ucy5oIgogCisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKwogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBXQVNNIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAt
NjIsMTUgKzY1LDE2IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJTdGFydGluZyB0byBwYXJzZSBuZXh0IHNl
Y3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNldCk7CiAKLSAgICAgICAgU2VjdGlvbnM6OlNlY3Rp
b24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICB1aW50OF90IHNlY3Rpb25C
eXRlOwogICAgICAgICBpZiAoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxv
Z0xuKCJTZWN0aW9uIGJ5dGU6ICIsIHNlY3Rpb25CeXRlKTsKKworICAgICAgICBTZWN0aW9uczo6
U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247CiAgICAgICAgIGlmIChzZWN0aW9u
Qnl0ZSkgewotICAgICAgICAgICAgaWYgKHNlY3Rpb25CeXRlID49IFNlY3Rpb25zOjpVbmtub3du
KQotICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93bjsKLSAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA8IFNlY3Rpb25zOjpVbmtub3du
KQogICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2VjdGlv
bj4oc2VjdGlvbkJ5dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdWludDMyX3Qg
c2VjdGlvbk5hbWVMZW5ndGg7CkBAIC05Niw2ICsxMDAsMTUgQEAgYm9vbCBNb2R1bGVQYXJzZXI6
OnBhcnNlKCkKICAgICAgICAgdW5zaWduZWQgZW5kID0gbV9vZmZzZXQgKyBzZWN0aW9uTGVuZ3Ro
OwogCiAgICAgICAgIHN3aXRjaCAoc2VjdGlvbikgeworCisgICAgICAgIGNhc2UgU2VjdGlvbnM6
Ok1lbW9yeTogeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJQYXJzaW5nIE1lbW9yeS4iKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VNZW1vcnko
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2UgU2VjdGlvbnM6OkZ1bmN0aW9uVHlwZXM6IHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyB0
eXBlcy4iKTsKQEAgLTE0Myw2ICsxNTYsMzQgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5KCkK
K3sKKyAgICB1aW50OF90IGZsYWdzOworICAgIGlmICghcGFyc2VWYXJVSW50MShmbGFncykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFwYXJz
ZVZhclVJbnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzaXplID4g
bWF4UGFnZU51bSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDMyX3QgbWF4ID0g
bWF4UGFnZU51bTsKKyAgICBpZiAoZmxhZ3MpIHsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQz
MihtYXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc2l6ZSA+IG1h
eCB8fCBtYXggPiBtYXhQYWdlTnVtKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIG1heCAqPSA2NCAqIEtCOworICAgIHNpemUgKj0gNjQgKiBLQjsKKworICAgIFZlY3Rv
cjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKKyAgICBtX21lbW9yeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5PihzaXplLCBtYXgsIHBpbm5lZFNpemVzKTsKKyAgICByZXR1cm4gbV9t
ZW1vcnktPm1lbW9yeSgpOworfQorCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5
cGVzKCkKIHsKICAgICB1aW50MzJfdCBjb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAppbmRleCA0NjBiZThmYmIzNmYwMmZhZjRhZDUzOGIxY2U1
MmIyZWQ1MTI1NGZkLi43NWU0ZDEwYWRmNjAzNDc3Mzg3N2MxZWYwYWJkNjFjNGZhMjQ2NGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJXQVNN
TWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldBU01QYXJzZXIuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NSwxOCArNDYsMTkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxG
dW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIHsgcmV0dXJuIG1fZnVu
Y3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5jdGlv
bkluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVtb3J5PiYgbWVtb3J5KCkgeyByZXR1cm4gbV9tZW1vcnk7IH0KIAogcHJpdmF0
ZToKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9yeSgpOwogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25UeXBlcygpOwogICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKCk7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCk7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24odWludDMyX3QgbnVtYmVyKTsKLSAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VFeHByZXNzaW9uKE9wVHlwZSk7CiAKICAgICBWZWN0b3I8RnVuY3Rp
b25JbmZvcm1hdGlvbj4gbV9mdW5jdGlvbnM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9zaWdu
YXR1cmVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+IG1fbWVtb3J5OwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01PcHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApp
bmRleCA2ZWY1YmQ0ZDE2MGQzMWY3MTAzMTllM2U3Y2M3NzhmYTRmYzg3N2RjLi42ZDM0ODhjZjQ5
ODA0MzNlOTA0YmFlMDA1NDQ0ODM3Y2FkMDAyZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU9wcy5oCkBAIC0xNTksMTMgKzE1OSw0MiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdBU00gewogICAgIG1hY3JvKEY2NEd0LCAweDliLCBPb3BzKSBcCiAgICAgbWFjcm8oRjY0R2Us
IDB4OWMsIE9vcHMpCiAKKyNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNy
bykgXAorICAgIG1hY3JvKEkzMkxvYWQ4UywgMHgyMCwgT29wcykgXAorICAgIG1hY3JvKEkzMkxv
YWQ4VSwgMHgyMSwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQxNlMsIDB4MjIsIE9vcHMpIFwK
KyAgICBtYWNybyhJMzJMb2FkMTZVLCAweDIzLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDhT
LCAweDI0LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDhVLCAweDI1LCBPb3BzKSBcCisgICAg
bWFjcm8oSTY0TG9hZDE2UywgMHgyNiwgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQxNlUsIDB4
MjcsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMzJTLCAweDI4LCBPb3BzKSBcCisgICAgbWFj
cm8oSTY0TG9hZDMyVSwgMHgyOSwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQsIDB4MmEsIE9v
cHMpIFwKKyAgICBtYWNybyhJNjRMb2FkLCAweDJiLCBPb3BzKSBcCisgICAgbWFjcm8oRjMyTG9h
ZCwgMHgyYywgT29wcykgXAorICAgIG1hY3JvKEY2NExvYWQsIDB4MmQsIE9vcHMpCisKKyNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIFwKKyAgICBtYWNybyhJMzJT
dG9yZTgsIDB4MmUsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJTdG9yZTE2LCAweDJmLCBPb3BzKSBc
CisgICAgbWFjcm8oSTY0U3RvcmU4LCAweDMwLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUx
NiwgMHgzMSwgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlMzIsIDB4MzIsIE9vcHMpIFwKKyAg
ICBtYWNybyhJMzJTdG9yZSwgMHgzMywgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlLCAweDM0
LCBPb3BzKSBcCisgICAgbWFjcm8oRjMyU3RvcmUsIDB4MzUsIE9vcHMpIFwKKyAgICBtYWNybyhG
NjRTdG9yZSwgMHgzNiwgT29wcykKKwogCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9PUChtYWNy
bykgXAogICAgIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykgXAogICAgIEZPUl9FQUNI
X1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9P
UChtYWNybykgXAotICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9F
QUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9B
RF9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKQog
CiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAK
QEAgLTE4OSw2ICsyMTgsMTQgQEAgZW51bSBjbGFzcyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCiB9OwogCitlbnVt
IGNsYXNzIExvYWRPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9M
T0FEX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKworZW51bSBjbGFzcyBTdG9yZU9wVHlwZSA6
IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9FTlVN
X1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9FTlVNX1ZBTFVFCiAKIGlubGluZSBib29sIGlz
Q29udHJvbE9wKE9wVHlwZSBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNw
cAppbmRleCA3YmQ2MGQyM2YxMWEyOWFjZTFlMzdhNjE4NzVmZTRiNWNmMGRiY2I5Li5hMDgzNzM4
NTg0ZDU2NjkyNmEyNTIyZGI5MWNkNmM5NGY4ZTZhNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTVBsYW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJCM0NvbXBp
bGF0aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUIzSVJHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJXQVNN
Q2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJXQVNNTW9kdWxlUGFyc2VyLmgiCiAjaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KIApAQCAtNTMsOCArNTQsOSBAQCBQbGFuOjpQbGFuKFZNJiB2
bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3Jt
YXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNp
b24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5l
bmQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBp
bmZvKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQocGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2Us
IG1vZHVsZVBhcnNlci5tZW1vcnkoKS5nZXQoKSwgaW5mbykpOwogICAgIH0KKyAgICBtZW1vcnkg
PSBXVEZNb3ZlKG1vZHVsZVBhcnNlci5tZW1vcnkoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxh
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaAppbmRleCBkM2M5ZTIy
YTVhYmExNzI2NDNmMzc5MTYwYzM4YjhlNGI0OTJiMThjLi5iODQ1ZWUxNDg5NzhmOTYwMTA3Njkw
NjQwYTVkMTBiNmZjN2YzNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgK
QEAgLTI5LDIzICsyOSwyMCBAQAogCiAjaW5jbHVkZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIKICNp
bmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFj
ZSBKU0MgewotCi1uYW1lc3BhY2UgQjMgewotY2xhc3MgQ29tcGlsYXRpb247Ci19IC8vIG5hbWVz
cGFjZSBCMwotCi1uYW1lc3BhY2UgV0FTTSB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdB
U00geworY2xhc3MgTWVtb3J5OwogCiAvLyBUT0RPOiBUaGlzIHNob3VsZCBjcmVhdGUgYSBXQVNN
IE1vZHVsZSBub3QgYSBsaXN0IG9mIGZ1bmN0aW9ucy4KIGNsYXNzIFBsYW4gewogcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBWZWN0b3I8dWludDhfdD4gc291cmNlKTsK
IAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPj4gcmVzdWx0Owor
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4+IHJlc3VsdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBtZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVNlY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaApp
bmRleCA1M2U5MzU2ZTIzOGZhNDJjNWI1ODcxMDk5MzZiNTcwMDhlN2M2Nzk5Li4wN2M3MmQ0MWQz
YmVlZGNkMTcyMzhhOGMyMDA0MjMyNzUxM2I0NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNU2VjdGlvbnMuaApAQCAtMzMsNiArMzMsNyBAQCBzdHJ1Y3QgU2VjdGlvbnMgewog
ICAgIGVudW0gU2VjdGlvbiA6IHVpbnQ4X3QgewogICAgICAgICBGdW5jdGlvblR5cGVzID0gMSwK
ICAgICAgICAgU2lnbmF0dXJlcyA9IDMsCisgICAgICAgIE1lbW9yeSA9IDUsCiAgICAgICAgIERl
ZmluaXRpb25zID0gMTAsCiAgICAgICAgIFVua25vd24KICAgICB9OwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1NGNhNjQ3ZWY0ZjE1Y2Y5
MTMxMmYwNzc0YzhiNGIwMGExNTAzNzU0Li4zNTY4ZWNlNTBkMDc2YjA0YmNlYmViYTBlMmUwMzhj
YTE3OThiMTQ4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTA1ICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXQVNNIE1lbW9y
eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcx
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBz
dG9yZSBhbmQgbG9hZCBvcGNvZGVzIHRvIHdhc20uanNvbi4gQWRkaXRpb25hbGx5LCBhZGQgbmV3
CisgICAgICAgIGVudW1zIGZvciB0aG9zZSBvcGNvZGVzIGluIHRoZSBnZW5lcmF0b3IuCisKKyAg
ICAgICAgKiBzdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qczoKKyAgICAgICAg
KGNvbnN0LnRlbXBsYXRlLnByYWdtYS5vbmNlLkVOQUJMRS5XRUJBU1NFTUJMWS5pbmNsdWRlLmNz
dGRpbnQubmFtZXNwYWNlLkpTQy5uYW1lc3BhY2UuV0FTTS5lbnVtLkxvYWRPcFR5cGUpOgorICAg
ICAgICAoY29uc3QudGVtcGxhdGUucHJhZ21hLm9uY2UuRU5BQkxFLldFQkFTU0VNQkxZLmluY2x1
ZGUuY3N0ZGludC5uYW1lc3BhY2UuSlNDLm5hbWVzcGFjZS5XQVNNLmVudW0uU3RvcmVPcFR5cGUp
OgorCiAyMDE2LTEwLTA0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJBc3NlbWJseTogaGFuZGxlIGEgZmV3IGNvcm5lciBjYXNlcwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcyBiL0pTVGVzdHMv
c3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKaW5kZXggY2U1Mjg5NzE5Mjc2
NGFkOTlmNTUxMTExM2FjZDIyZWIyYTMxNTZkZS4uNzM4NWJiZjE2MTk0OGRjYjJjMGI5Mzc5MDE5
MGFjZDY3ODRmMzhlYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0ZS13
YXNtb3BzLWhlYWRlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy93YXNtL2dlbmVyYXRlLXdhc21v
cHMtaGVhZGVyLmpzCkBAIC0zNiw2ICszNiwxMCBAQCBjb25zdCBkZWZpbmVzID0gWwogICAgIC4u
Lm9wY29kZU1hY3JvaXplcihvcCA9PiBvcC5jYXRlZ29yeSA9PT0gImFyaXRobWV0aWMiICYmIG9w
LnBhcmFtZXRlci5sZW5ndGggPT09IDEpLAogICAgICJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNN
X0JJTkFSWV9PUChtYWNybykiLAogICAgIC4uLm9wY29kZU1hY3JvaXplcihvcCA9PiAob3AuY2F0
ZWdvcnkgPT09ICJhcml0aG1ldGljIiB8fCBvcC5jYXRlZ29yeSA9PT0gImNvbXBhcmlzb24iKSAm
JiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09PSAyKSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykiLAorICAgIC4uLm9wY29kZU1hY3JvaXplcihvcCA9
PiAob3AuY2F0ZWdvcnkgPT09ICJtZW1vcnkiICYmIG9wLnJldHVybi5sZW5ndGggPT09IDEpKSwK
KyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIiwK
KyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAibWVtb3J5IiAm
JiBvcC5yZXR1cm4ubGVuZ3RoID09PSAwKSksCiAgICAgIlxuXG4iXS5qb2luKCIiKTsKIAogY29u
c3Qgb3BWYWx1ZVNldCA9IG5ldyBTZXQob3Bjb2RlSXRlcmF0b3Iob3AgPT4gdHJ1ZSwgb3AgPT4g
b3Bjb2Rlc1tvcF0udmFsdWUpKCkpOwpAQCAtOTQsNyArOTgsOSBAQCAke2RlZmluZXN9CiAgICAg
Rk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fQ09O
VFJPTF9GTE9XX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AobWFjcm8p
IFxcCi0gICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pCisgICAgRk9SX0VBQ0hfV0FT
TV9CSU5BUllfT1AobWFjcm8pIFxcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUCht
YWNybykgXFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykKIAogI2Rl
ZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCkBAIC0x
MTgsNiArMTI0LDE0IEBAIGVudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAgICBG
T1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBjbGFz
cyBMb2FkT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9P
UChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5cGUgOiB1aW50
OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfRU5VTV9WQUxV
RSkKK307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9vbCBpc0NvbnRy
b2xPcChPcFR5cGUgb3ApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291830</attachid>
            <date>2016-10-17 10:28:52 -0700</date>
            <delta_ts>2016-10-17 16:53:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161710-20161017102518.patch</filename>
            <type>text/plain</type>
            <size>80227</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjM5MDExMzMxYTYyNDczMjBhNDA3YzlmZDgxMzhhMGNmMjgyZmUyLi5mMDgwMDZiZmFjMzk4MTMy
Y2RmODk0M2Q4YTBmM2QwNDA3ZmNjMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIEN1cnJlbnRseSwgQjMgb25seSBiYXJlbHkgd29y
a3Mgd2l0aCBwaW5uZWQgdmFsdWVzIGJlY2F1c2UKKyAgICAgICAgd2UgY2Fubm90IGNoYW5nZSB0
aGUgc2l6ZSBvZiBtZW1vcnkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RXQVNN
LmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Y3JlYXRl
SlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAg
ICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZlbnRpb246Oml0
ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6c2V0dXBDYWxs
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAgICogd2FzbS9X
QVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6
Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAgICAgKEpTQzo6
V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVtb3J5OjptZW1v
cnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAgICAoSlNDOjpX
QVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9y
eTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9yeSk6CisgICAg
ICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKiB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6Cisg
ICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldBU006Ok1v
ZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAg
KiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6Cisg
ICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6
CisKIDIwMTYtMTAtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgQjMgbmVlZHMgYSBzcGVjaWFsIFdhc21BZGRyZXNzIE9wY29kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGRjZWFmNzM2ZDgzZmRiNTA4NDA3M2Zm
NzM0OTczYmVkODQuLmFhMGIzY2I1NWEzOTQ4M2U0MDE4MDFlYjJjYTQ2NzU2NDc4NjFkNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2MSw2ICs4NjEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vSlNXQVNNTW9kdWxlLmNwcAogICAgIHdh
c20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCiAgICAgd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwCisgICAgd2FzbS9XQVNNTWVtb3J5LmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5j
cHAKICAgICB3YXNtL1dBU01QbGFuLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKaW5kZXgg
ODMxZDA5NjAwNDIxY2ZiYjQzMTQyYTNkOTk5YTRkYzY5NjQ5MGJlZi4uZjU0MDFmYzkyY2RiMWJh
M2RiMjZiN2E5NmQ3YjJjYjUwY2M2Y2U5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwpAQCAt
MzEsNiArMzEsNyBAQCBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc19taW5pZG9tID0gZW50aXRs
ZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFpciA9IGVudGl0
bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhcGkgPSBlbnRp
dGxlbWVudHMucGxpc3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YjMgPSBlbnRp
dGxlbWVudHMucGxpc3Q7CitDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0V0FTTSA9IGVu
dGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RSZWdFeHAg
PSBlbnRpdGxlbWVudHMucGxpc3Q7CiAKIFNLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxMXyQo
Rk9SQ0VfVE9PTF9JTlNUQUxMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVl
OGM3ZjliZjMwOWU4OWY3OTUyMWY0MTRkMjYyN2I3YWIzM2FlYzIuLjQxZGUwNDFlNjA0MTEzNmJl
Y2VhYzEzMGMzMmFmZjllYWZmOGJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMjE0LDYgKzEyMTQsOCBAQAogCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmggKi87IH07CiAJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlDNiAv
KiBBUElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07CisJCTUzNTU1
NzE0MUQ5RDlFQTUwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0IgLyogV0FT
TU1lbW9yeS5oICovOyB9OworCQk1MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9y
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzU1
NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi87IH07CiAJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0MUJGMjVFQTIwMDVD
NDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi87
IH07CiAJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi87IH07CkBAIC0zNDU1LDYgKzM0NTcsOCBAQAog
CQk1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzRDNDU3RDFCQzcyNTQ5
MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNTI5QTRCMUM0NTdCNzUwMDBCNDlDNiAv
KiBBUElVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVdGlscy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0Ig
LyogV0FTTU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTWVt
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzE1MUQ5REZBMzIwMDZE
NTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdBU01NZW1vcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzcwQjRG
MzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBv
aW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2ODMsNiArNTY4Nyw4IEBA
CiAJCQkJNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLywKIAkJCQk3QkM1
NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovLAogCQkJCTUzRjQwRThBMUQ1
OTAxQkIwMDk5QTFCNiAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLywKKwkJCQk1MzU1NTcxNTFE
OURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi8sCisJCQkJNTM1NTU3MTMxRDlEOUVB
NTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLywKIAkJCQk1M0Y0MEU5NjFENUE3QkVDMDA5OUEx
QjYgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8sCiAJCQkJNTNGNDBFOTQxRDVBN0FFRjAwOTlB
MUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLywKIAkJCQk1MzEzNzRCRTFENUNFOTUwMDBBRjdB
MEIgLyogV0FTTVBsYW4uY3BwICovLApAQCAtNzg1MCw2ICs3ODU2LDcgQEAKIAkJCQkxNDJFMzEz
ODEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTM1NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjMyQkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC05MTkyLDYgKzkxOTksNyBAQAogCQkJCTBGNUExMjczMTkyRDlG
REYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0M4MjYx
NDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYw
RjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjhGMTQzMzFBREYwOTAxMDBFRDc5MkMgLyogREZHRXBvY2guY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3OEE5Nzc0MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRG
aW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdFdBU00uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcApp
bmRleCBkOWVkOTFmZTE4NGRlYWIxMTc2OTk1YzhiZDY2OWNmYzlkOGU0YzZkLi4yYzNjOWZhYjZi
MzBiZGZmOWQ5MzFkNGEyYTdhYzQ4NjkwOWFlYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFdBU00uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FT
TS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1
ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXQVNNTWVt
b3J5LmgiCiAjaW5jbHVkZSAiV0FTTVBsYW4uaCIKKwogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CiAjaW5jbHVkZSA8d3RmL0xFQkRlY29kZXIuaD4KIApAQCAtMjQyLDggKzI0NCw0NjkgQEAgc3Rh
dGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKIHsKICAgICB7CiAgICAgICAgIC8vIEdlbmVyYXRlZCBm
cm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAg
IC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAk
cHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgKGk2NC5zdG9yZSAoZ2V0X2xvY2Fs
ICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGk2NC5sb2FkIChn
ZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMs
IDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAweDAxLCAweDAx
LCAweDAyLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAw
eDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
MSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwg
MHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4
NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAs
IDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDE0
LAorICAgICAgICAgICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgwZgorICAgICAg
ICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFu
LnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRh
dGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAg
ICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgy
KSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgfQorCisgICAg
eworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVsZQorICAgICAg
ICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3Mi
KSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAv
LyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAg
Ly8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICAp
CisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAg
ICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAw
eDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAg
ICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAw
eDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAw
LCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwg
MHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgw
MCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4MDIs
IDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVz
dWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGls
ZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwg
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEw
MCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206Cisg
ICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAg
Ly8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFt
ICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAg
ICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sK
KyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIu
Z2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAg
ICAgIChpMzIuc3RvcmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9sb2Nh
bCAkaSkgKGkzMi5jb25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAg
KHNldF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAg
ICAgICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAg
ICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAg
ICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAg
ICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAg
MHgwMywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0
LCAweDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAw
eDBhLCAweGIyLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhh
YywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwg
MHgxNSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4
MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMs
IDB4MTAsIDB4MDQsIDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMzLCAw
eDAyLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2
LCAweDAwLCAweDBmLAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9Owor
CisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3Vs
dC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOwor
CisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3QpOwor
ICAgICAgICB1aW50MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFuLm1l
bW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAg
ICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9y
eVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVu
Z3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAg
ICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6
ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1
KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hF
Q0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAv
LyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAg
KG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAo
cGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAk
aSBpMzIpCisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAg
ICAgICAvLyAgICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAg
ICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0
aCkpKQorICAgICAgICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAk
cCkgKGdldF9sb2NhbCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNl
dF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAg
ICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAg
ICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAg
IC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAg
ICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAw
eDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgw
MywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAw
eDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBh
LCAweGFmLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgx
NSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMs
IDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4
NDAsIDB4MTQsIDB4MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAx
LCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAw
eDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsK
KyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkg
eworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVj
dGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
cGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IDE7CisgICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihw
bGFuLm1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9
KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENI
RUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtp
ICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNl
dCA9IDU7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tf
RVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29m
ZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7
CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8g
ICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1
bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIp
IChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwgJHB0
cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3Mg
KGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQor
ICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2
MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2Ziwg
MHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4
MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4
MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBm
CisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
aWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1v
cnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAg
IChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikg
KHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTgg
KGkzMi5jb25zdCA4KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChp
MzIubG9hZDhfcyAoaTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8v
ICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAw
eDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwg
MHgwMCwgMHgxMCwgMHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAx
MDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2Vu
ZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkK
KyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikg
KHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChn
ZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMy
LmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQor
ICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2
MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDIsIDB4
MDEsIDB4MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2Ziwg
MHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4
MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4
MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBm
CisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
aWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBk
b2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAw
KSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KC0xMiksIGJveChwbGFuLm1lbW9yeS0+c2l6ZSgpIC0gc2l6ZW9mKHVpbnQ2NF90KSkgfSks
IC0xMik7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAg
ICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMg
KGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChy
ZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0
X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0X2xvY2FsICRw
dHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBj
LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
MywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4Mywg
MHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMs
CisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAw
eDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAg
ICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg
MHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwKKyAgICAgICAg
ICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAg
ICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6
ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1v
ZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGVkIGZyb206CiAgICAgICAgIC8vICAgIChtb2R1bGUKLSAgICAgICAgLy8gICAg
IChmdW5jIChleHBvcnQgImR1bWItZXEiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAo
cmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChm
dW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkzMikg
KHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChzZXRf
bG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAg
Ly8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAoZ2V0
X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChpMzIu
c3RvcmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9sb2NhbCAkaSkgKGkz
Mi5jb25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2Nh
bCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8g
ICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisg
ICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAg
ICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAw
LCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgw
MSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAw
eDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGIy
LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhYywgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgw
MywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQs
IDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4MTAsIDB4
MDQsIDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMzLCAweDAyLCAweDAw
LCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAw
eDBmLAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkg
IT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxl
IGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAgICAg
IC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSA1
OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3QpOworICAgICAgICB1
aW50MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFuLm1lbW9yeS0+bWVt
b3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zm
c2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQg
LSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3RoXSwgMHUp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAgIGxlbmd0
aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAg
aW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCg1KSwgYm94
KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6ZW9mKHVpbnQz
Ml90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAg
ICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVt
b3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0
ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAx
KQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAocGFyYW0gJHgg
aTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAkaSBpMzIpCisg
ICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAg
ICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgKGJy
X2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0aCkpKQorICAg
ICAgICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGdldF9s
b2NhbCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAk
aSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAgICAgLy8gICAg
ICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAg
ICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMywgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAweDY1LCAweDVm
LCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBhLCAweGFmLCAw
eDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwMywg
MHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTQsIDB4
MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTQs
IDB4MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAw
eDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAweDA5LCAweDBm
CisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
aWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1v
cnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDE7Cisg
ICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwbGFuLm1lbW9y
eS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAg
ICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENIRUNLX0VRKG1l
bW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0
XSwgMTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNldCA9IDU7Cisg
ICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
NSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxl
bmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQor
CisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVs
ZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9y
dCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQg
aTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwgJHB0cikgKGdldF9s
b2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGdldF9sb2Nh
bCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3Mywg
MHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4
MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAx
LCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAw
eDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2
NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwg
MHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTQs
CisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAg
IH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4u
cmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUo
KSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwg
Ym94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJh
dGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkg
MSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRp
IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTggKGkzMi5jb25z
dCA4KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChpMzIubG9hZDhf
cyAoaTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYx
LCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwgMHgwMSwgMHgw
MSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwg
MHgwNSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIs
IDB4NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZmLCAweDYxLCAw
eDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgw
LCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHgx
MCwgMHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAg
ICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxh
bi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAg
ICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAxMDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZy
b206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5jICJkdW1iLWVx
IiAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikKICAgICAgICAgLy8g
ICAgICAoaWYgKGkzMi5lcSAoZ2V0X2xvY2FsICR4KSAoZ2V0X2xvY2FsICR5KSkKICAgICAgICAg
Ly8gICAgICAgKHRoZW4gKGJyIDApKQogICAgICAgICAvLyAgICAgICAoZWxzZSAocmV0dXJuIChp
MzIuY29uc3QgMSkpKSkKQEAgLTI2NSwxNCArNzI4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01U
ZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4K
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwg
Ym94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAx
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgy
KSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikg
fSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDAp
IH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgy
KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3go
MSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBi
b3goNikgfSksIDEpOwogICAgIH0KIAogICAgIHsKQEAgLTMwNiwxNCArNzY5LDE0IEBAIHN0YXRp
YyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMg
ZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pLCAw
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgx
KSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0p
LCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxMDApLCBib3goNikgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgxKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQs
IHsgYm94KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgxMDApLCBib3goNikgfSksIDApOwogICAgIH0KIAogCkBAIC0zMzMsNyArNzk2LDcg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgfSksIDUpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgNSk7CiAgICAgfQogCiAKQEAgLTM1NCw3
ICs4MTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0KIAog
ICAgIHsKQEAgLTM3NCw3ICs4MzcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwg
MTEpOwogICAgIH0KIAogICAgIHsKQEAgLTM5NCw3ICs4NTcsNyBAQCBzdGF0aWMgdm9pZCBydW5X
QVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwg
MTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTQxMywxMCArODc2LDEwIEBA
IHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0
IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMSkgfSksIDEwMSk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goLTEpLCBi
b3goMSl9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgxKSB9KSwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAx
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEwMCksIGJveCgxKSB9KSwgMTAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KC0xKSwgYm94KDEp
fSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgx
KSB9KSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CiAgICAgfQogCiAgICAgewpA
QCAtNDQyLDggKzkwNSw4IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTApIH0pLCAxMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMCkgfSksIDEwKTsKICAgICB9CiAKICAgICB7
CkBAIC00NzgsMTAgKzk0MSwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAg
ICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCkgfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpIH0pLCAxKTsK
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKX0p
LCAzKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJv
eCgxMDApIH0pLCA1MDUwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0pLCAx
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDIpfSksIDMpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgNTA1MCk7CiAgICAgfQog
CiAgICAgewpAQCAtNTIyLDE0ICs5ODUsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkg
fSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsg
Ym94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDIpOwotICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSksIDIpOwotICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3go
MikgfSksIDQpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDIpLCBib3goNikgfSksIDEyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7Ci0gICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDEwMCkg
fSksIDEwMDAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJv
eCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAyKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBi
b3goMikgfSksIDIpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgNCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwg
Ym94KDYpIH0pLCAxMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxMDApLCBib3goMTAwKSB9KSwgMTAwMDApOwogICAgIH0KIAogICAgIHsKQEAgLTU3NSwxNCAr
MTAzOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgwKSB9KSwg
MCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3go
MiksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7Ci0gICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgxKSB9
KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3go
MSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94
KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJv
eCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBi
b3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKICAgICB9CiAKIH0K
QEAgLTU5Niw3ICsxMDU5LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAg
IGlmIChvcHRpb25zLm1fcnVuTEVCVGVzdHMpCiAgICAgICAgIHJ1bkxFQlRlc3RzKCk7CiAKLQog
ICAgIGlmIChvcHRpb25zLm1fcnVuV0FTTVRlc3RzKSB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwYjcxYzFhZmFhOTQ0
NjE2YmExN2ZlYmZjOTVlZGJjYWM2MGQzY2I0Li5mMzg4YjM2MmVhM2RiNmM4ZjVmZTc1MWIxMjgz
YzJmOTYxYTM2YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC0yOSwxNCArMjksMTkgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDb25z
dFB0clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNsdWRlICJCM1Zh
cmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21BZGRyZXNzVmFsdWUuaCIKKyNpbmNsdWRl
ICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgi
CiAjaW5jbHVkZSAiV0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0
aW9uUGFyc2VyLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogCiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCogcHRyKQpAQCAtMTY1LDE4ICsxNzAs
MjUgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFZhcmlhYmxlKiwgMT4gUmVzdWx0TGlz
dDsKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVtcHR5RXhwcmVzc2lvbiA9
IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKFByb2NlZHVyZSYpOworICAgIEIzSVJHZW5l
cmF0b3IoTWVtb3J5KiwgUHJvY2VkdXJlJik7CiAKICAgICB2b2lkIGFkZEFyZ3VtZW50cyhjb25z
dCBWZWN0b3I8VHlwZT4mKTsKICAgICB2b2lkIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKICAg
ICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBlLCB1aW50NjRfdCk7CiAKKyAgICAvLyBM
b2NhbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRl
eCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAorICAgIC8v
IE1lbW9yeQorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGxvYWQoTG9hZE9wVHlwZSwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zm
c2V0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBzdG9yZShTdG9yZU9wVHlwZSwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90IG9mZnNl
dCk7CisKKyAgICAvLyBCYXNpYyBvcGVyYXRvcnMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGxlZnQsIEV4cHJlc3Npb25U
eXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBib29sIFdBUk5fVU5VU0VE
X1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwogCisgICAgLy8gQ29udHJvbCBmbG93CiAgICAgQ29udHJvbERhdGEg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZEJsb2NrKFR5cGUgc2lnbmF0dXJlKTsKICAgICBDb250cm9s
RGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9vcChUeXBlIHNpZ25hdHVyZSk7CiAgICAgQ29u
dHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZElmKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlv
biwgVHlwZSBzaWduYXR1cmUpOwpAQCAtMTkxLDE4ICsyMDMsNDEgQEAgcHVibGljOgogICAgIHZv
aWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4
cHJlc3Npb25MaXN0JiBleHByZXNzaW9uU3RhY2spOwogCiBwcml2YXRlOgorICAgIEV4cHJlc3Np
b25UeXBlIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IHVpbnQzMl90IG9mZnNldCwgdWludDMyX3Qgc2l6ZU9mT3ApOworICAgIEV4cHJlc3Npb25UeXBl
IGVtaXRMb2FkT3AoTG9hZE9wVHlwZSwgT3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1
aW50MzJfdCBvZmZzZXQpOworICAgIHZvaWQgZW1pdFN0b3JlT3AoU3RvcmVPcFR5cGUsIE9yaWdp
biwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90
IG9mZnNldCk7CisKICAgICB2b2lkIHVuaWZ5KFZhcmlhYmxlKiB0YXJnZXQsIGNvbnN0IEV4cHJl
c3Npb25UeXBlIHNvdXJjZSk7CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBF
eHByZXNzaW9uTGlzdCYgcmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNrKTsKIAorICAgIE1l
bW9yeSogbV9tZW1vcnk7CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgQmFzaWNCbG9jayog
bV9jdXJyZW50QmxvY2s7CiAgICAgVmVjdG9yPFZhcmlhYmxlKj4gbV9sb2NhbHM7CisgICAgR1BS
UmVnIG1fbWVtb3J5QmFzZUdQUjsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9y
ZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVyLiBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOwogfTsKIAot
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKLSAgICA6
IG1fcHJvYyhwcm9jZWR1cmUpCitCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKE1lbW9yeSog
bWVtb3J5LCBQcm9jZWR1cmUmIHByb2NlZHVyZSkKKyAgICA6IG1fbWVtb3J5KG1lbW9yeSkKKyAg
ICAsIG1fcHJvYyhwcm9jZWR1cmUpCiB7CiAgICAgbV9jdXJyZW50QmxvY2sgPSBtX3Byb2MuYWRk
QmxvY2soKTsKKworICAgIGlmIChtX21lbW9yeSkgeworICAgICAgICBtX21lbW9yeUJhc2VHUFIg
PSBtX21lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAg
IG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJhc2VHUFIpOworICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVyLiBzZWU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICAgICAgbV9tZW1v
cnlTaXplR1BSID0gbV9tZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbMF0u
c2l6ZVJlZ2lzdGVyOworICAgICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlTaXplR1BS
KTsKKyAgICB9CisKKyAgICBtX3Byb2Muc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkKSB7CisgICAgICAg
IEFTU0VSVChtX21lbW9yeVNpemVHUFIgPT0gcGlubmVkR1BSKTsKKyAgICAgICAgLy8gRklYTUU6
IENoYW5nZSB0aGlzIHdoZW4gd2UgYWRkIHRyYXBwaW5nLiBTZWU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMzNTEKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVp
bnQzMl90IGNvdW50KQpAQCAtMjI0LDIwICsyNTksMTc5IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYgdHlwZXMpCiAgICAgICAgIH0pOwogfQog
Ci1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6Z2V0
TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgQVNT
RVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tp
bmRleF0pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBC
M0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFs
dWUpCitib29sIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNz
aW9uVHlwZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgT3Jp
Z2luKCksIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCitp
bmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKEV4
cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3Qgc2l6ZU9mT3Bl
cmF0aW9uKQoreworICAgIEFTU0VSVChtX21lbW9yeUJhc2VHUFIgJiYgbV9tZW1vcnlTaXplR1BS
KTsKKyAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVyLiBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIE9y
aWdpbigpLCBwb2ludGVyLCBtX21lbW9yeVNpemVHUFIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNl
dCAtIDEpOworICAgIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPiht
X3Byb2MsIFpFeHQzMiwgT3JpZ2luKCksIHBvaW50ZXIpOworICAgIHJldHVybiBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFdhc21BZGRyZXNzVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHBvaW50
ZXIsIG1fbWVtb3J5QmFzZUdQUik7Cit9CisKK2lubGluZSB1aW50MzJfdCBzaXplT2ZMb2FkT3Ao
TG9hZE9wVHlwZSBvcCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJMzJMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFU6CisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJNjRMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6Cisg
ICAgICAgIHJldHVybiAxOworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDE2UzoKKyAgICBj
YXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlM6CisgICAgICAgIHJldHVybiAyOworICAgIGNhc2Ug
TG9hZE9wVHlwZTo6STMyTG9hZDoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlM6Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJVOgorICAgICAgICByZXR1cm4gNDsKKyAgICBj
YXNlIExvYWRPcFR5cGU6Okk2NExvYWQ6CisgICAgICAgIHJldHVybiA4OworICAgIGRlZmF1bHQ6
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCisvLyBGSVhNRTogQjMgc2hvdWxkIHN1cHBvcnQgSW50NjQgc21hbGwgbG9hZHMgYW5k
IDE2LWJpdCB1bnNpZ25lZCBsb2Fkcy4KK2lubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1p
dExvYWRPcChMb2FkT3BUeXBlIG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBwb2lu
dGVyLCB1aW50MzJfdCBvZmZzZXQpCit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgTG9h
ZE9wVHlwZTo6STMyTG9hZDhTOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywgb3JpZ2luLCBwb2ludGVyLCBvZmZz
ZXQpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhTOiB7CisgICAgICAg
IFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZDhTLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQzMiwgb3JpZ2luLCB2
YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFU6IHsKKyAgICAg
ICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZDhaLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7CisgICAgfQorCisgICAgY2FzZSBMb2Fk
T3BUeXBlOjpJNjRMb2FkOFU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbiwgcG9pbnRl
ciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgWkV4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExv
YWRPcFR5cGU6OkkzMkxvYWQxNlM6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDE2Uywgb3JpZ2luLCBwb2ludGVyLCBv
ZmZzZXQpOworICAgIH0KKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlM6IHsKKyAgICAg
ICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBMb2FkMTZTLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQzMiwgb3JpZ2lu
LCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOiB7CisgICAg
ICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9w
VHlwZTo6STY0TG9hZDMyVTogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBv
aW50ZXIpOworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBaRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9w
VHlwZTo6STY0TG9hZDMyUzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4sIHBv
aW50ZXIpOworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9w
VHlwZTo6STY0TG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luLCBwb2ludGVyKTsKKyAg
ICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9yOjpsb2FkKExvYWRP
cFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQs
IHVpbnQzMl90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMy
KTsKKworICAgIHJlc3VsdCA9IGVtaXRMb2FkT3Aob3AsIE9yaWdpbigpLCBlbWl0Q2hlY2tBbmRQ
cmVwYXJlUG9pbnRlcihwb2ludGVyLCBvZmZzZXQsIHNpemVPZkxvYWRPcChvcCkpLCBvZmZzZXQp
OworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdWludDMyX3Qgc2l6ZU9mU3RvcmVPcChT
dG9yZU9wVHlwZSBvcCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBTdG9yZU9wVHlw
ZTo6STMyU3RvcmU4OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlODoKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmUxNjoKKyAgICBjYXNlIFN0
b3JlT3BUeXBlOjpJNjRTdG9yZTE2OgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIFN0b3Jl
T3BUeXBlOjpJMzJTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTMyOgorICAg
ICAgICByZXR1cm4gNDsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZToKKyAgICAgICAg
cmV0dXJuIDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKworLy8gRklYTUU6IFdlIHNob3VsZCBqdXN0
IHN1cHBvcnQgYW4gSW50NjQgc3RvcmU4LgoraW5saW5lIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1p
dFN0b3JlT3AoU3RvcmVPcFR5cGUgb3AsIE9yaWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpCit7CisgICAgc3dp
dGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlODoKKyAgICAgICAgdmFs
dWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFRydW5jLCBvcmln
aW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisKKyAgICBjYXNlIFN0b3JlT3BUeXBl
OjpJMzJTdG9yZTg6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgU3RvcmU4LCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyLCBvZmZzZXQpOworICAg
ICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTE2OgorICAgICAg
ICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgVHJ1bmMs
IG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKworICAgIGNhc2UgU3RvcmVP
cFR5cGU6OkkzMlN0b3JlMTY6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgU3RvcmUxNiwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlciwgb2Zmc2V0
KTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUzMjoK
KyAgICAgICAgdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IFRydW5jLCBvcmlnaW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisKKyAgICBjYXNl
IFN0b3JlT3BUeXBlOjpJNjRTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZToK
KyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBT
dG9yZSwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6c3RvcmUoU3RvcmVPcFR5
cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpCit7CisgICAgQVNTRVJUKHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisK
KyAgICBlbWl0U3RvcmVPcChvcCwgT3JpZ2luKCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVy
KHBvaW50ZXIsIG9mZnNldCwgc2l6ZU9mU3RvcmVPcChvcCkpLCB2YWx1ZSwgb2Zmc2V0KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BU
eXBlIG9wLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAg
ICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0Iz
T3Aob3ApLCBPcmlnaW4oKSwgYXJnKTsKQEAgLTQwMywxMCArNTk3LDcwIEBAIHZvaWQgQjNJUkdl
bmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNv
bnN0IEV4cHJlc3NpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYg
c291cmNlLCBGdW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQorCitz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZt
LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5G
dW5jdGlvbiwgTWVtb3J5KiBtZW1vcnkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBDaGVjayBhcmd1bWVu
dCBjb3VudCBpcyBzYW5lLgorICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN1cHBvc2VkIHRvIHRyYXAg
aWYgbGVzcyB0aGFuIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHM/CisgICAgVmFsdWUqIGZy
YW1lUG9pbnRlciA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6RnJhbWVQ
b2ludGVyLCBPcmlnaW4oKSk7CisgICAgVmFsdWUqIG9mZlNldE9mQXJndW1lbnRDb3VudCA9IGJs
b2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpOworICAgIFZhbHVlKiBhcmd1bWVu
dENvdW50ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBmcmFtZVBvaW50ZXIsIG9mZlNldE9mQXJndW1lbnRDb3VudCkpOworCisgICAgVmFs
dWUqIGV4cGVjdGVkQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpKTsKKworICAgIENo
ZWNrVmFsdWUqIGFyZ3VtZW50Q291bnRDaGVjayA9IGJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBYm92ZSwgT3JpZ2luKCksIGV4cGVjdGVkQXJndW1lbnRDb3VudCwgYXJndW1lbnRD
b3VudCkpOworICAgIGFyZ3VtZW50Q291bnRDaGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBq
aXQuYnJlYWtwb2ludCgpOworICAgIH0pOworCisgICAgLy8gTW92ZSBtZW1vcnkgdmFsdWVzIHRv
IHRoZSBhcHByb3JpYXRlIHBsYWNlcywgaWYgbmVlZGVkLgorICAgIFZhbHVlKiBiYXNlTWVtb3J5
ID0gbnVsbHB0cjsKKyAgICBWZWN0b3I8VmFsdWUqPiBzaXplczsKKyAgICBpZiAobWVtb3J5KSB7
CisgICAgICAgIGJhc2VNZW1vcnkgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBtZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgVmFsdWUqIHNpemUgPSBi
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
CisgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KG1lbW9yeSkgKyBNZW1vcnk6Om9mZnNldE9mU2l6ZSgp
KSk7CisgICAgICAgIHNpemVzLnJlc2VydmVDYXBhY2l0eShtZW1vcnktPnBpbm5lZFJlZ2lzdGVy
cygpLnNpemVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGluZm8gOiBtZW1v
cnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHNpemVz
LmFwcGVuZChibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBzaXpl
LAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgaW5mby5zaXplT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
R2V0IG91ciBhcmd1bWVudHMuCisgICAgVmVjdG9yPFZhbHVlKj4gYXJndW1lbnRzOworICAgIGpz
Y0NhbGxpbmdDb252ZW50aW9uKCkuaXRlcmF0ZShzaWduYXR1cmUtPmFyZ3VtZW50cywgcHJvYywg
YmxvY2ssIE9yaWdpbigpLCBbJl0gKFZhbHVlKiBhcmd1bWVudCwgdW5zaWduZWQpIHsKKyAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgfSk7CisKKyAgICAvLyBNb3ZlIHRo
ZSBhcmd1bWVudHMgaW50byBwbGFjZS4KKyAgICBWYWx1ZSogcmVzdWx0ID0ganNjQ2FsbGluZ0Nv
bnZlbnRpb24oKS5zZXR1cENhbGwocHJvYywgYmxvY2ssIE9yaWdpbigpLCBtYWluRnVuY3Rpb24s
IGFyZ3VtZW50cywgdG9CM1R5cGUoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKSwgWyZdIChQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKG1lbW9yeSkgeworICAgICAgICAg
ICAgQVNTRVJUKHNpemVzLnNpemUoKSA9PSBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVS
ZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGJhc2VNZW1vcnksIFZhbHVlUmVwOjpyZWcobWVtb3J5LT5waW5uZWRSZWdpc3Rl
cnMoKS5iYXNlTWVtb3J5UG9pbnRlcikpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzaXplc1tpXSwgVmFsdWVSZXA6OnJlZyhtZW1vcnktPnBp
bm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbaV0uc2l6ZVJlZ2lzdGVyKSkpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCwgaWYgbmVlZGVkLgorICAg
IGlmIChzaWduYXR1cmUtPnJldHVyblR5cGUgIT0gVm9pZCkKKyAgICAgICAgYmxvY2stPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBCMzo6UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAg
ICBlbHNlCisgICAgICAgIGJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgQjM6OlJl
dHVybiwgT3JpZ2luKCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRp
b24+KHZtLCBwcm9jKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+
IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBNZW1vcnkq
IG1lbW9yeSwgRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKIHsK
ICAgICBQcm9jZWR1cmUgcHJvY2VkdXJlOwotICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChwcm9j
ZWR1cmUpOworICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChtZW1vcnksIHByb2NlZHVyZSk7CiAg
ICAgRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGNvbnRleHQsIHNvdXJjZSwg
aW5mbyk7CiAgICAgaWYgKCFwYXJzZXIucGFyc2UoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQxNyw3ICs2NzEsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPENvbXBp
bGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwg
RnUKICAgICBmaXhTU0EocHJvY2VkdXJlKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb25Db21waWxhdGlvbj4oKTsKKworICAgIHJlc3Vs
dC0+Y29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUsIG9w
dExldmVsKTsKKyAgICByZXN1bHQtPmpzRW50cnlQb2ludCA9IGNyZWF0ZUpTV3JhcHBlcih2bSwg
aW5mby5zaWduYXR1cmUsIHJlc3VsdC0+Y29kZS0+Y29kZSgpLCBtZW1vcnkpOworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaAppbmRleCA5NTE5NmRiZTU3N2Rh
YWZhYmE5NzhhNTYwNGM5MDZjZDY1NWJmYzgzLi5mODI4MmQwYzk1NWMyNmY3ZTdjMDEyNDU3OTdi
OTkxNmQ0ZGI5MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lS
R2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDkgQEAgZXh0ZXJuICJDIiB2b2lkIGR1bXBQcm9jZWR1
cmUodm9pZCopOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewogCi1zdGQ6OnVu
aXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBWZWN0b3I8dWlu
dDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNpZ25lZCBvcHRMZXZlbCA9IDEpOworY2xh
c3MgTWVtb3J5OworCitzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4gcGFyc2VB
bmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+JiwgTWVtb3J5KiwgRnVuY3Rpb25JbmZvcm1h
dGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldB
U00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdD
b252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZl
bnRpb24uaAppbmRleCA3ODk1OTMxMDI0YTUzZDY3ZDVjNzliOTQ0ZWNmMmIyYjUyYWIxNzQ1Li5i
OTkyZjRiNzg3YjI3OWE4YWM5NGFhOWU0ZmI3NTVjMTNmYTIzZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMjcsMjMg
KzI3LDI3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUu
aCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5o
IgorI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFs
dWUuaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzUHJvY2Vk
dXJlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0
ZXJTZXQuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV0FTTSB7CiAKLXR5cGVkZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBj
dXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwordHlwZWRlZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQp
KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBlIHR5cGUpOwogCi10ZW1wbGF0ZTx1bnNp
Z25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRlT2Zmc2V0PgordGVtcGxhdGU8dW5zaWduZWQg
aGVhZGVyU2l6ZSwgTmV4dE9mZnNldCB1cGRhdGVPZmZzZXQ+CiBjbGFzcyBDYWxsaW5nQ29udmVu
dGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhlYWRlclNpemUgPSBv
ZmZzZXQ7Ci0KICAgICBDYWxsaW5nQ29udmVudGlvbihWZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVy
QXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNhdmVSZWdpc3RlcnMpCiAgICAgICAgIDog
bV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3VtZW50cykKICAgICAgICAgLCBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVycykKQEAgLTY0LDE4ICs2OCw1MyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgQjM6OlZhbHVlKiBhZGRyZXNzID0gYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpBZGQsIG9yaWdpbiwgZnJhbWVQb2ludGVyLAogICAg
ICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdDY0VmFsdWU+KHByb2Ms
IG9yaWdpbiwgY3VycmVudE9mZnNldCkpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYmxv
Y2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KHByb2MsIEIzOjpMb2FkLCB0b0IzVHlwZShh
cmd1bWVudFR5cGVzW2ldKSwgb3JpZ2luLCBhZGRyZXNzKTsKLSAgICAgICAgICAgICAgICBjdXJy
ZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJlbnRPZmZzZXQsIGFyZ3VtZW50VHlwZXNbaV0p
OworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSB1cGRhdGVPZmZzZXQoY3VycmVudE9m
ZnNldCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEIzOjpWYWx1ZSogc2V0dXBDYWxsKEIzOjpQcm9j
ZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9jaywgQjM6Ok9yaWdpbiBvcmlnaW4sIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIGNvbnN0IFZlY3RvcjxCMzo6VmFsdWUqPiYgYXJn
dW1lbnRzLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBjb25zdCBGdW5jdG9yJiBwYXRjaHBvaW50RnVu
Y3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHN0YWNrQXJndW1lbnRDb3VudCA9
IGFyZ3VtZW50cy5zaXplKCkgPCBtX3JlZ2lzdGVyQXJndW1lbnRzLnNpemUoKSA/IDAgOiBhcmd1
bWVudHMuc2l6ZSgpIC0gbV9yZWdpc3RlckFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgIHVuc2ln
bmVkIG9mZnNldCA9IGhlYWRlclNpemUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CisKKyAg
ICAgICAgcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXplSW5CeXRlcyhXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBoZWFkZXJTaXplICsgKHN0YWNrQXJndW1l
bnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpKSk7CisgICAgICAgIFZlY3RvcjxCMzo6Q29uc3Ry
YWluZWRWYWx1ZT4gY29uc3RyYWluZWRBcmd1bWVudHM7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEIzOjpWYWx1
ZVJlcCByZXA7CisgICAgICAgICAgICBpZiAoaSA8IG1fcmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgp
KQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1ZVJlcDo6cmVnKG1fcmVnaXN0ZXJBcmd1
bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpW
YWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXQpOworICAgICAgICAgICAgY29uc3RyYWluZWRB
cmd1bWVudHMuYXBwZW5kKEIzOjpDb25zdHJhaW5lZFZhbHVlKGFyZ3VtZW50c1tpXSwgcmVwKSk7
CisgICAgICAgICAgICBvZmZzZXQgPSB1cGRhdGVPZmZzZXQob2Zmc2V0LCBhcmd1bWVudHNbaV0t
PnR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCByZXR1
cm5UeXBlLCBvcmlnaW4pOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3Ry
YWluZWRBcmd1bWVudHMpOworICAgICAgICBwYXRjaHBvaW50RnVuY3RvcihwYXRjaHBvaW50KTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKKyAgICAgICAgICAgIGpp
dC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAg
ICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIodGFyZ2V0LmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpZiAo
cmV0dXJuVHlwZSAhPSBCMzo6Vm9pZCkKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50Owor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBjb25zdCBWZWN0b3I8R1BSUmVn
PiBtX3JlZ2lzdGVyQXJndW1lbnRzOwogICAgIGNvbnN0IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2
ZVJlZ2lzdGVyczsKICAgICBjb25zdCBSZWdpc3RlclNldCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7
CiB9OwogCi1pbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09mZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zm
c2V0LCBUeXBlKQoraW5saW5lIHVuc2lnbmVkIG5leHRKU0NPZmZzZXQodW5zaWduZWQgY3VycmVu
dE9mZnNldCwgQjM6OlR5cGUpCiB7CiAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBzaXplb2Yo
UmVnaXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCmluZGV4
IDdhMDQxMzdlM2M3MGYxODI0NzEwYWNkOTg4NDdmNzIxNTYyNGQwMWQuLjFlMTA4MTBkM2ZmNmVl
MGE4NzY0YjMyYjM2ZTgwNTZkZDM0NWE2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNRm9ybWF0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
IAorI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJCM1R5cGUuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0x
MjYsNiArMTI3LDExIEBAIHN0cnVjdCBGdW5jdGlvbkluZm9ybWF0aW9uIHsKICAgICBzaXplX3Qg
ZW5kOwogfTsKIAorc3RydWN0IEZ1bmN0aW9uQ29tcGlsYXRpb24geworICAgIHN0ZDo6dW5pcXVl
X3B0cjxCMzo6Q29tcGlsYXRpb24+IGNvZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21w
aWxhdGlvbj4ganNFbnRyeVBvaW50OworfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00K
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggYWU4NzQyNDBjOTIyOGQyZDgzOTc0
NDZlMTU4N2EyZDQ0NjkxZmEzZC4uNDQ3MWEyY2Y1NzE3ODE4MjU5NTI0MmQwMzk0ZjQ3NjllNzll
M2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9u
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFy
c2VyLmgKQEAgLTE1NCw2ICsxNTQsMzcgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfQ0FTRSkgeworICAgICAg
ICB1aW50MzJfdCBhbGlnbm1lbnQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoYWxpZ25t
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50MzJfdCBvZmZz
ZXQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0gbV9leHByZXNz
aW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAg
ICAgICBpZiAoIW1fY29udGV4dC5sb2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+KG9wKSwgcG9p
bnRlciwgcmVzdWx0LCBvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
IHsKKyAgICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUlu
dDMyKGFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWlu
dDMyX3Qgb2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBt
X2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2lu
dGVyID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC5zdG9yZShzdGF0aWNfY2FzdDxTdG9yZU9wVHlwZT4ob3ApLCBwb2ludGVyLCB2YWx1ZSwg
b2Zmc2V0KTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAg
dWludDMyX3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NGRmMmExMmM2ZWUyYzUyZjgyYWFhNTRjYzEwOTRkOGIyMzU5ZGUyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK01lbW9yeTo6
TWVtb3J5KHVpbnQzMl90IHN0YXJ0aW5nQnl0ZXMsIHVpbnQzMl90IG1heEJ5dGVzLCBjb25zdCBW
ZWN0b3I8dW5zaWduZWQ+JiBwaW5uZWRTaXplUmVnaXN0ZXJzKQorICAgIDogbV9tb2RlKE1vZGU6
OkJvdW5kc0NoZWNraW5nKQorICAgICwgbV9zaXplKHN0YXJ0aW5nQnl0ZXMpCisgICAgLCBtX21h
eEJ5dGVzKG1heEJ5dGVzKQorICAgIC8vIEZJWE1FOiBJZiB3ZSBhZGQgc2lnbmFsIGJhc2VkIGJv
dW5kcyBjaGVja2luZyB0aGVuIHdlIG5lZWQgZXh0cmEgc3BhY2UgZm9yIG92ZXJmbG93IG9uIGxv
YWQuCisgICAgLy8gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyNjkzCisgICAgLCBtX21hcHBlZEJ5dGVzKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXhQYWdl
TnVtKSAqIHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYWdlU2l6ZSkpCit7CisgICAgQVNTRVJUKHBp
bm5lZFNpemVSZWdpc3RlcnMuc2l6ZSgpID4gMCk7CisKKyAgICB2b2lkKiByZXN1bHQgPSBtbWFw
KG51bGxwdHIsIG1fbWFwcGVkQnl0ZXMsIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5P
TiwgMCwgMCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgLy8gVHJ5IGFnYWluIHdpdGgg
YSBkaWZmZXJlbnQgbnVtYmVyLgorICAgICAgICBtX21hcHBlZEJ5dGVzID0gbV9tYXhCeXRlczsK
KyAgICAgICAgcmVzdWx0ID0gbW1hcChudWxscHRyLCBtX21hcHBlZEJ5dGVzLCBQUk9UX05PTkUs
IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIDAsIDApOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobXByb3RlY3QocmVzdWx0LCBzdGFy
dGluZ0J5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICBtdW5tYXAocmVz
dWx0LCBtX21hcHBlZEJ5dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2ln
bmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVSZWdpc3RlcnMuc2l6ZSgp
ICsgMTsKKyAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5m
b3JFYWNoKFsmXSAoUmVnIHJlZykgeworICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwor
ICAgICAgICBpZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3Rh
Y2tSZWdpc3RlcnMoKS5nZXQocmVnKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7CisgICAgICAgICAgICBtX3Bpbm5lZFJl
Z2lzdGVycy5iYXNlTWVtb3J5UG9pbnRlciA9IGdwcjsKKyAgICAgICAgICAgIHJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fcGlubmVkUmVn
aXN0ZXJzLnNpemVSZWdpc3RlcnMuYXBwZW5kKHsgZ3ByLCBwaW5uZWRTaXplUmVnaXN0ZXJzWy0t
cmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7CisgICAgfSk7CisKKyAgICBBU1NFUlQo
IXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyk7CisgICAgbV9tZW1vcnkgPSByZXN1bHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCit9IC8vIG5hbWVzcGFjZSBXQVNNCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTWVtb3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTU2MjQxNGM1MTE0M2QzZDZmMjJjMWZlNTNiNDcwMjRjYWIxNzBkNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaApA
QCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRl
ICJXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKKworc3RydWN0IFBpbm5lZFNpemVSZWdp
c3RlckluZm8geworICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7CisgICAgdW5zaWduZWQgc2l6ZU9m
ZnNldDsKK307CisKK3N0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8geworICAgIFZlY3RvcjxQaW5u
ZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOworICAgIEdQUlJlZyBiYXNlTWVtb3J5
UG9pbnRlcjsKK307CisKK2NvbnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7Citj
b25zdGV4cHIgdWludDMyX3QgbWF4UGFnZU51bSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVs
bCA8PCAzMikgLyBwYWdlU2l6ZSk7CisKK2NsYXNzIE1lbW9yeSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTWVtb3J5KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBvdGhlciBtb2Rlcy4gc2VlOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNjkzCisgICAgZW51bSBjbGFz
cyBNb2RlIHsKKyAgICAgICAgQm91bmRzQ2hlY2tpbmcKKyAgICB9OworCisgICAgTWVtb3J5KCkg
PSBkZWZhdWx0OworICAgIE1lbW9yeSh1aW50MzJfdCBzdGFydGluZ0J5dGVzLCB1aW50MzJfdCBt
YXhCeXRlcywgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycyk7CisK
KyAgICB+TWVtb3J5KCkKKyAgICB7CisgICAgICAgIGlmIChtX21lbW9yeSkKKyAgICAgICAgICAg
IG11bm1hcChtX21lbW9yeSwgbV9tYXBwZWRCeXRlcyk7CisgICAgfQorCisgICAgdm9pZCogbWVt
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnk7IH0KKyAgICB1aW50MzJfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5u
ZWRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bpbm5lZFJlZ2lzdGVyczsgfQorCisgICAg
TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisKKyAgICBib29sIGdyb3dNZW1v
cnkodWludDMyX3QgbmV3U2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21lbW9yeSk7Cisg
ICAgICAgIGlmIChuZXdTaXplID4gbV9tYXhCeXRlcykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICByZXR1cm4gIW1wcm90ZWN0KG1fbWVtb3J5LCBuZXdTaXplLCBQUk9UX1JF
QUQgfCBQUk9UX1dSSVRFKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1fc2l6ZSk7IH0KKyAgICAK
K3ByaXZhdGU6CisgICAgdm9pZCogbV9tZW1vcnkgeyBudWxscHRyIH07CisgICAgUGlubmVkUmVn
aXN0ZXJJbmZvIG1fcGlubmVkUmVnaXN0ZXJzOworICAgIE1vZGUgbV9tb2RlOworICAgIHVpbnQz
Ml90IG1fc2l6ZSB7IDAgfTsKKyAgICB1aW50MzJfdCBtX21heEJ5dGVzIHsgMCB9OworICAgIHVp
bnQ2NF90IG1fbWFwcGVkQnl0ZXMgeyAwIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V0FTTQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDVlMDUzYTVhNzkwM2E1NGVi
ODY0NTY0NjgyZTNlOWQxNzEwYjIxNjQuLmU4MzA0MmUwZWNhODQxZjc5MjFjYjAwNDE4ZGNiOWU3
M2JjMTNmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1
bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQ
YXJzZXIuY3BwCkBAIC0yOCwxMCArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
IAorI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgogI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNp
bmNsdWRlICJXQVNNT3BzLmgiCiAjaW5jbHVkZSAiV0FTTVNlY3Rpb25zLmgiCiAKKyNpbmNsdWRl
IDxzeXMvbW1hbi5oPgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewogCiBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CkBAIC02MiwxNSArNjUsMTYgQEAgYm9vbCBN
b2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nTG4oIlN0YXJ0aW5nIHRvIHBhcnNlIG5leHQgc2VjdGlvbiBhdCBvZmZzZXQ6ICIsIG1f
b2Zmc2V0KTsKIAotICAgICAgICBTZWN0aW9uczo6U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6
OlVua25vd247CiAgICAgICAgIHVpbnQ4X3Qgc2VjdGlvbkJ5dGU7CiAgICAgICAgIGlmICghcGFy
c2VVSW50NyhzZWN0aW9uQnl0ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nTG4oIlNlY3Rpb24gYnl0ZTogIiwg
c2VjdGlvbkJ5dGUpOworCisgICAgICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rpb24gPSBTZWN0
aW9uczo6VW5rbm93bjsKICAgICAgICAgaWYgKHNlY3Rpb25CeXRlKSB7Ci0gICAgICAgICAgICBp
ZiAoc2VjdGlvbkJ5dGUgPj0gU2VjdGlvbnM6OlVua25vd24pCi0gICAgICAgICAgICAgICAgc2Vj
dGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
aWYgKHNlY3Rpb25CeXRlIDwgU2VjdGlvbnM6OlVua25vd24pCiAgICAgICAgICAgICAgICAgc2Vj
dGlvbiA9IHN0YXRpY19jYXN0PFNlY3Rpb25zOjpTZWN0aW9uPihzZWN0aW9uQnl0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB1aW50MzJfdCBzZWN0aW9uTmFtZUxlbmd0aDsKQEAg
LTk2LDYgKzEwMCwxNSBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICB1bnNp
Z25lZCBlbmQgPSBtX29mZnNldCArIHNlY3Rpb25MZW5ndGg7CiAKICAgICAgICAgc3dpdGNoIChz
ZWN0aW9uKSB7CisKKyAgICAgICAgY2FzZSBTZWN0aW9uczo6TWVtb3J5OiB7CisgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgTWVtb3J5
LiIpOworICAgICAgICAgICAgaWYgKCFwYXJzZU1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBTZWN0aW9uczo6RnVuY3Rpb25UeXBlczogewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5nIHR5cGVzLiIpOwpAQCAtMTQzLDYgKzE1
NiwzNCBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VNZW1vcnkoKQoreworICAgIHVpbnQ4X3QgZmxhZ3M7
CisgICAgaWYgKCFwYXJzZVZhclVJbnQxKGZsYWdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICBpZiAoIXBhcnNlVmFyVUludDMyKHNpemUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHNpemUgPiBtYXhQYWdlTnVtKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICB1aW50MzJfdCBtYXggPSBtYXhQYWdlTnVtOworICAgIGlmIChm
bGFncykgeworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG1heCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzaXplID4gbWF4IHx8IG1heCA+IG1heFBhZ2VOdW0p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbWF4ICo9IDY0ICogS0I7
CisgICAgc2l6ZSAqPSA2NCAqIEtCOworCisgICAgVmVjdG9yPHVuc2lnbmVkPiBwaW5uZWRTaXpl
cyA9IHsgMCB9OworICAgIG1fbWVtb3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnk+KHNpemUs
IG1heCwgcGlubmVkU2l6ZXMpOworICAgIHJldHVybiBtX21lbW9yeS0+bWVtb3J5KCk7Cit9CisK
IGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMoKQogewogICAgIHVpbnQzMl90
IGNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVs
ZVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5o
CmluZGV4IDQ2MGJlOGZiYjM2ZjAyZmFmNGFkNTM4YjFjZTUyYjJlZDUxMjU0ZmQuLjc1ZTRkMTBh
ZGY2MDM0NzczODc3YzFlZjBhYmQ2MWM0ZmEyNDY0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIldBU01NZW1vcnkuaCIKICNpbmNsdWRlICJX
QVNNT3BzLmgiCiAjaW5jbHVkZSAiV0FTTVBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQ1LDE4ICs0NiwxOSBAQCBwdWJsaWM6CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZSgpOwogCi0gICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBm
dW5jdGlvbkluZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KKyAgICBjb25zdCBW
ZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9uSW5mb3JtYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uczsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+JiBtZW1v
cnkoKSB7IHJldHVybiBtX21lbW9yeTsgfQogCiBwcml2YXRlOgorICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlTWVtb3J5KCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VGdW5jdGlvblR5cGVzKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5j
dGlvblNpZ25hdHVyZXMoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0
aW9uRGVmaW5pdGlvbnMoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0
aW9uRGVmaW5pdGlvbih1aW50MzJfdCBudW1iZXIpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVU
VVJOIHBhcnNlQmxvY2soKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJl
c3Npb24oT3BUeXBlKTsKIAogICAgIFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiBtX2Z1bmN0
aW9uczsKICAgICBWZWN0b3I8U2lnbmF0dXJlPiBtX3NpZ25hdHVyZXM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeT4gbV9tZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FT
TQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCmluZGV4IDZlZjViZDRkMTYwZDMxZjcx
MDMxOWUzZTdjYzc3OGZhNGZjODc3ZGMuLjZkMzQ4OGNmNDk4MDQzM2U5MDRiYWUwMDU0NDQ4Mzdj
YWQwMDJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKQEAgLTE1OSwxMyAr
MTU5LDQyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAgICAgbWFjcm8oRjY0
R3QsIDB4OWIsIE9vcHMpIFwKICAgICBtYWNybyhGNjRHZSwgMHg5YywgT29wcykKIAorI2RlZmlu
ZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1hY3JvKSBcCisgICAgbWFjcm8oSTMyTG9h
ZDhTLCAweDIwLCBPb3BzKSBcCisgICAgbWFjcm8oSTMyTG9hZDhVLCAweDIxLCBPb3BzKSBcCisg
ICAgbWFjcm8oSTMyTG9hZDE2UywgMHgyMiwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQxNlUs
IDB4MjMsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkOFMsIDB4MjQsIE9vcHMpIFwKKyAgICBt
YWNybyhJNjRMb2FkOFUsIDB4MjUsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMTZTLCAweDI2
LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDE2VSwgMHgyNywgT29wcykgXAorICAgIG1hY3Jv
KEk2NExvYWQzMlMsIDB4MjgsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMzJVLCAweDI5LCBP
b3BzKSBcCisgICAgbWFjcm8oSTMyTG9hZCwgMHgyYSwgT29wcykgXAorICAgIG1hY3JvKEk2NExv
YWQsIDB4MmIsIE9vcHMpIFwKKyAgICBtYWNybyhGMzJMb2FkLCAweDJjLCBPb3BzKSBcCisgICAg
bWFjcm8oRjY0TG9hZCwgMHgyZCwgT29wcykKKworI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9S
WV9TVE9SRV9PUChtYWNybykgXAorICAgIG1hY3JvKEkzMlN0b3JlOCwgMHgyZSwgT29wcykgXAor
ICAgIG1hY3JvKEkzMlN0b3JlMTYsIDB4MmYsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZTgs
IDB4MzAsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZTE2LCAweDMxLCBPb3BzKSBcCisgICAg
bWFjcm8oSTY0U3RvcmUzMiwgMHgzMiwgT29wcykgXAorICAgIG1hY3JvKEkzMlN0b3JlLCAweDMz
LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUsIDB4MzQsIE9vcHMpIFwKKyAgICBtYWNybyhG
MzJTdG9yZSwgMHgzNSwgT29wcykgXAorICAgIG1hY3JvKEY2NFN0b3JlLCAweDM2LCBPb3BzKQor
CiAKIAogI2RlZmluZSBGT1JfRUFDSF9XQVNNX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FT
TV9TUEVDSUFMX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9DT05UUk9MX0ZMT1dfT1Ao
bWFjcm8pIFwKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKG1hY3JvKSBcCi0gICAgRk9SX0VB
Q0hfV0FTTV9CSU5BUllfT1AobWFjcm8pCisgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFj
cm8pIFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1hY3JvKSBcCisgICAgRk9S
X0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pCiAKICNkZWZpbmUgQ1JFQVRFX0VOVU1f
VkFMVUUobmFtZSwgaWQsIGIzb3ApIG5hbWUgPSBpZCwKIApAQCAtMTg5LDYgKzIxOCwxNCBAQCBl
bnVtIGNsYXNzIFVuYXJ5T3BUeXBlIDogdWludDhfdCB7CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFS
WV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKK2VudW0gY2xhc3MgTG9hZE9wVHlwZSA6IHVp
bnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AoQ1JFQVRFX0VOVU1fVkFM
VUUpCit9OworCitlbnVtIGNsYXNzIFN0b3JlT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9OworCiAjdW5kZWYg
Q1JFQVRFX0VOVU1fVkFMVUUKIAogaW5saW5lIGJvb2wgaXNDb250cm9sT3AoT3BUeXBlIG9wKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCmluZGV4IDdiZDYwZDIzZjExYTI5
YWNlMWUzN2E2MTg3NWZlNGI1Y2YwZGJjYjkuLmEwODM3Mzg1ODRkNTY2OTI2YTI1MjJkYjkxY2Q2
Yzk0ZjhlNmE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Q
bGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJX
QVNNQjNJUkdlbmVyYXRvci5oIgorI2luY2x1ZGUgIldBU01DYWxsaW5nQ29udmVudGlvbi5oIgog
I2luY2x1ZGUgIldBU01Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgog
CkBAIC01Myw4ICs1NCw5IEBAIFBsYW46OlBsYW4oVk0mIHZtLCBWZWN0b3I8dWludDhfdD4gc291
cmNlKQogICAgIGZvciAoY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1vZHVsZVBh
cnNlci5mdW5jdGlvbkluZm9ybWF0aW9uKCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nTG4oIlByb2Nlc3NpbmcgZnVuY2lvbiBzdGFydGluZyBhdDogIiwgaW5m
by5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBpbmZvLmVuZCk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQocGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2UsIGluZm8pKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIHNvdXJjZSwgbW9kdWxlUGFyc2VyLm1lbW9yeSgp
LmdldCgpLCBpbmZvKSk7CiAgICAgfQorICAgIG1lbW9yeSA9IFdURk1vdmUobW9kdWxlUGFyc2Vy
Lm1lbW9yeSgpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNUGxhbi5oCmluZGV4IGQzYzllMjJhNWFiYTE3MjY0M2YzNzkxNjBjMzhi
OGU0YjQ5MmIxOGMuLmI4NDVlZTE0ODk3OGY5NjAxMDc2OTA2NDBhNWQxMGI2ZmM3ZjM1NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaApAQCAtMjksMjMgKzI5LDIwIEBACiAK
ICNpbmNsdWRlICJDb21waWxhdGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVk
ZSAiV0FTTUZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVzcGFjZSBC
MyB7Ci1jbGFzcyBDb21waWxhdGlvbjsKLX0gLy8gbmFtZXNwYWNlIEIzCi0KLW5hbWVzcGFjZSBX
QVNNIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CitjbGFzcyBNZW1vcnk7CiAK
IC8vIFRPRE86IFRoaXMgc2hvdWxkIGNyZWF0ZSBhIFdBU00gTW9kdWxlIG5vdCBhIGxpc3Qgb2Yg
ZnVuY3Rpb25zLgogY2xhc3MgUGxhbiB7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UGxhbihWTSYsIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpOwogCi0gICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+PiByZXN1bHQ7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPj4gcmVzdWx0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnk+IG1lbW9yeTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCmluZGV4IDUzZTkzNTZlMjM4ZmE0MmM1
YjU4NzEwOTkzNmI1NzAwOGU3YzY3OTkuLjA3YzcyZDQxZDNiZWVkY2QxNzIzOGE4YzIwMDQyMzI3
NTEzYjQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCkBA
IC0zMyw2ICszMyw3IEBAIHN0cnVjdCBTZWN0aW9ucyB7CiAgICAgZW51bSBTZWN0aW9uIDogdWlu
dDhfdCB7CiAgICAgICAgIEZ1bmN0aW9uVHlwZXMgPSAxLAogICAgICAgICBTaWduYXR1cmVzID0g
MywKKyAgICAgICAgTWVtb3J5ID0gNSwKICAgICAgICAgRGVmaW5pdGlvbnMgPSAxMCwKICAgICAg
ICAgVW5rbm93bgogICAgIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDNkYTZkYzNhZjNjYmZhMTJkMjU2ZjU1MDBlOGEyMzkwNDNlNGNh
ZDIuLjI3MjRhZjYwMDA1MDdjMjk0YmRiMWMxNDZjNTg4OGQ3ODQyNzhjOWQgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTYtMTAtMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdBU00gTWVtb3J5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0b3JlIGFuZCBsb2FkIG9wY29kZXMg
dG8gd2FzbS5qc29uLiBBZGRpdGlvbmFsbHksIGFkZCBuZXcKKyAgICAgICAgZW51bXMgZm9yIHRo
b3NlIG9wY29kZXMgaW4gdGhlIGdlbmVyYXRvci4KKworICAgICAgICAqIHN0cmVzcy93YXNtL2dl
bmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzOgorICAgICAgICAoY29uc3QudGVtcGxhdGUucHJhZ21h
Lm9uY2UuRU5BQkxFLldFQkFTU0VNQkxZLmluY2x1ZGUuY3N0ZGludC5uYW1lc3BhY2UuSlNDLm5h
bWVzcGFjZS5XQVNNLmVudW0uTG9hZE9wVHlwZSk6CisgICAgICAgIChjb25zdC50ZW1wbGF0ZS5w
cmFnbWEub25jZS5FTkFCTEUuV0VCQVNTRU1CTFkuaW5jbHVkZS5jc3RkaW50Lm5hbWVzcGFjZS5K
U0MubmFtZXNwYWNlLldBU00uZW51bS5TdG9yZU9wVHlwZSk6CisKIDIwMTYtMTAtMTQgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0MjYyOiBAaXND
b25zdHJ1Y3RvciBpbmNvcnJlY3RseSB0aGlua3MgTWF0aC5jb3MgaXMgYSBjb25zdHJ1Y3Rvcgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5q
cyBiL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKaW5kZXgg
Y2U1Mjg5NzE5Mjc2NGFkOTlmNTUxMTExM2FjZDIyZWIyYTMxNTZkZS4uNzM4NWJiZjE2MTk0OGRj
YjJjMGI5Mzc5MDE5MGFjZDY3ODRmMzhlYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mvd2Fz
bS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy93YXNtL2dl
bmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzCkBAIC0zNiw2ICszNiwxMCBAQCBjb25zdCBkZWZpbmVz
ID0gWwogICAgIC4uLm9wY29kZU1hY3JvaXplcihvcCA9PiBvcC5jYXRlZ29yeSA9PT0gImFyaXRo
bWV0aWMiICYmIG9wLnBhcmFtZXRlci5sZW5ndGggPT09IDEpLAogICAgICJcblxuI2RlZmluZSBG
T1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykiLAogICAgIC4uLm9wY29kZU1hY3JvaXplcihv
cCA9PiAob3AuY2F0ZWdvcnkgPT09ICJhcml0aG1ldGljIiB8fCBvcC5jYXRlZ29yeSA9PT0gImNv
bXBhcmlzb24iKSAmJiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09PSAyKSwKKyAgICAiXG5cbiNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykiLAorICAgIC4uLm9wY29kZU1h
Y3JvaXplcihvcCA9PiAob3AuY2F0ZWdvcnkgPT09ICJtZW1vcnkiICYmIG9wLnJldHVybi5sZW5n
dGggPT09IDEpKSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVf
T1AobWFjcm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09
PSAibWVtb3J5IiAmJiBvcC5yZXR1cm4ubGVuZ3RoID09PSAwKSksCiAgICAgIlxuXG4iXS5qb2lu
KCIiKTsKIAogY29uc3Qgb3BWYWx1ZVNldCA9IG5ldyBTZXQob3Bjb2RlSXRlcmF0b3Iob3AgPT4g
dHJ1ZSwgb3AgPT4gb3Bjb2Rlc1tvcF0udmFsdWUpKCkpOwpAQCAtOTQsNyArOTgsOSBAQCAke2Rl
ZmluZXN9CiAgICAgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcXAogICAgIEZPUl9F
QUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fVU5B
UllfT1AobWFjcm8pIFxcCi0gICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pCisgICAg
Rk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pIFxcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfTE9BRF9PUChtYWNybykgXFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUCht
YWNybykKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9
IGlkLAogCkBAIC0xMTgsNiArMTI0LDE0IEBAIGVudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50
OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsK
IAorZW51bSBjbGFzcyBMb2FkT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9N
RU1PUllfTE9BRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xhc3MgU3RvcmVP
cFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVB
VEVfRU5VTV9WQUxVRSkKK307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQogCiBpbmxpbmUg
Ym9vbCBpc0NvbnRyb2xPcChPcFR5cGUgb3ApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291886</attachid>
            <date>2016-10-17 15:44:58 -0700</date>
            <delta_ts>2016-10-17 15:47:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161710-20161017154125.patch</filename>
            <type>text/plain</type>
            <size>80846</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjM5MDExMzMxYTYyNDczMjBhNDA3YzlmZDgxMzhhMGNmMjgyZmUyLi4zMGU5NzhhOWEwNmI1YTFl
NDZjYTkwZTU5MjZhNGExYzZlODhlZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxNi0xMC0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIFdlIHVzZSB0aGUgbmV3IEIzIHBpbm5lZCByZWdp
c3RlciBhcGkgdG8gcGluIHRoZSB2YWx1ZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHRlc3RXQVNNLmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6Y3JlYXRlSlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxl
KToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9X
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZl
bnRpb246Oml0ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6
c2V0dXBDYWxsKToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAg
ICogd2FzbS9XQVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNN
OjpNZW1vcnk6Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAg
ICAgKEpTQzo6V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVt
b3J5OjptZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAg
ICAoSlNDOjpXQVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldB
U006Ok1lbW9yeTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9y
eSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAg
KiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1l
bW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6
UGxhbik6CisgICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNl
Y3Rpb25zLmg6CisKIDIwMTYtMTAtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQjMgbmVlZHMgYSBzcGVjaWFsIFdhc21BZGRyZXNzIE9wY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGRjZWFmNzM2ZDgzZmRi
NTA4NDA3M2ZmNzM0OTczYmVkODQuLmFhMGIzY2I1NWEzOTQ4M2U0MDE4MDFlYjJjYTQ2NzU2NDc4
NjFkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2MSw2ICs4NjEs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vSlNXQVNNTW9kdWxlLmNw
cAogICAgIHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCiAgICAgd2FzbS9XQVNNQ2FsbGluZ0Nv
bnZlbnRpb24uY3BwCisgICAgd2FzbS9XQVNNTWVtb3J5LmNwcAogICAgIHdhc20vV0FTTU1vZHVs
ZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01QbGFuLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcKaW5kZXggODMxZDA5NjAwNDIxY2ZiYjQzMTQyYTNkOTk5YTRkYzY5NjQ5MGJlZi4uZjU0MDFm
YzkyY2RiMWJhM2RiMjZiN2E5NmQ3YjJjYjUwY2M2Y2U5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2Nv
bmZpZwpAQCAtMzEsNiArMzEsNyBAQCBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc19taW5pZG9t
ID0gZW50aXRsZW1lbnRzLnBsaXN0OwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGFp
ciA9IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3Rh
cGkgPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0
YjMgPSBlbnRpdGxlbWVudHMucGxpc3Q7CitDT0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0
V0FTTSA9IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rl
c3RSZWdFeHAgPSBlbnRpdGxlbWVudHMucGxpc3Q7CiAKIFNLSVBfSU5TVEFMTCA9ICQoU0tJUF9J
TlNUQUxMXyQoRk9SQ0VfVE9PTF9JTlNUQUxMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGVlOGM3ZjliZjMwOWU4OWY3OTUyMWY0MTRkMjYyN2I3YWIzM2FlYzIuLjQxZGUwNDFl
NjA0MTEzNmJlY2VhYzEzMGMzMmFmZjllYWZmOGJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjE0LDYgKzEyMTQsOCBAQAogCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcg
LyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi87IH07CiAJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZB
NyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTUzNTI5QTRDMUM0NTdCNzUw
MDBCNDlDNiAvKiBBUElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07
CisJCTUzNTU1NzE0MUQ5RDlFQTUwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4
M0IgLyogV0FTTU1lbW9yeS5oICovOyB9OworCQk1MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyog
V0FTTU1lbW9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi87IH07CiAJ
CTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIwNTAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0MUJG
MjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlLmggKi87IH07CiAJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi87IH07CkBAIC0zNDU1LDYgKzM0
NTcsOCBAQAogCQk1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzRDNDU3
RDFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNTI5QTRCMUM0NTdCNzUw
MDBCNDlDNiAvKiBBUElVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzU1NTcxMzFEOUQ5RUE1
MDA2RDU4M0IgLyogV0FTTU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXQVNNTWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTU1NzE1MUQ5
REZBMzIwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdBU01NZW1vcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QTFCNzkwNkU0MDAw
RUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2ODMsNiAr
NTY4Nyw4IEBACiAJCQkJNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLywK
IAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovLAogCQkJCTUz
RjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLywKKwkJCQk1
MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgKi8sCisJCQkJNTM1NTU3
MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLywKIAkJCQk1M0Y0MEU5NjFENUE3
QkVDMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8sCiAJCQkJNTNGNDBFOTQxRDVB
N0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLywKIAkJCQk1MzEzNzRCRTFENUNF
OTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwICovLApAQCAtNzg1MCw2ICs3ODU2LDcgQEAKIAkJ
CQkxNDJFMzEzODEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM1NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjMyQkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBv
b2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFw
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTkyLDYgKzkxOTksNyBAQAogCQkJCTBGNUEx
MjczMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MzU1NTcxNjFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjhGMTQzMzFBREYwOTAxMDBFRDc5MkMgLyogREZHRXBvY2guY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9m
aWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEE5Nzc0MTc5NzM4QjgwMDlERjc0NCAvKiBE
RkdGYWlsZWRGaW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RX
QVNNLmNwcAppbmRleCBkOWVkOTFmZTE4NGRlYWIxMTc2OTk1YzhiZDY2OWNmYzlkOGU0YzZkLi4y
YzNjOWZhYjZiMzBiZGZmOWQ5MzFkNGEyYTdhYzQ4NjkwOWFlYWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0V0FTTS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5o
IgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRl
ICJXQVNNTWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTVBsYW4uaCIKKwogI2luY2x1ZGUgPHd0Zi9E
YXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xFQkRlY29kZXIuaD4KIApAQCAtMjQyLDggKzI0NCw0
NjkgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKIHsKICAgICB7CiAgICAgICAgIC8vIEdl
bmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEp
CisgICAgICAgIC8vICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIp
IChwYXJhbSAkcHRyIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgKGk2NC5zdG9yZSAo
Z2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGk2
NC5sb2FkIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4
NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAw
eDAxLCAweDAxLCAweDAyLCAweDAzLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYs
IDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4
ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAw
eDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgw
ZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAg
IGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAg
ICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsK
KyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMg
ZG9lc24ndCBjcmFzaC4KKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEw
MCksIGJveCgyKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAg
fQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1vZHVs
ZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAiaTMy
X2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMyKQor
ICAgICAgICAvLyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRpKSkK
KyAgICAgICAgLy8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAgICAg
ICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ig
PSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAw
LCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAor
ICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAg
ICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAgICAg
ICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAw
eDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgw
MCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMSwg
MHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4
MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBs
YW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwg
IXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQg
dG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94
KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
KSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkK
KyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkz
MikgKHBhcmFtICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAg
ICAgICAvLyAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAg
ICAoYmxvY2sKKyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9p
ZiAxIChpMzIuZ2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAg
ICAgLy8gICAgICAgIChpMzIuc3RvcmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwg
KGdldF9sb2NhbCAkaSkgKGkzMi5jb25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAv
LyAgICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwg
JGkpKSkKKyAgICAgICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAg
ICAgICAvLyAgICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAg
ICApCisgICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7
CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAw
eDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAg
ICAgICAgICAgMHgwMywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAg
ICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAw
eDY5LCAweDc0LCAweDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAw
LCAweDAwLCAweDBhLCAweGIyLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwg
MHgwMSwgMHhhYywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgx
MCwgMHgwMCwgMHgxNSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAs
IDB4MTQsIDB4MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4
MTQsIDB4MDMsIDB4MTAsIDB4MDQsIDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAw
LCAweDMzLCAweDAyLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAw
eDAzLCAweDA2LCAweDAwLCAweDBmLAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAg
ICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChw
bGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5z
aXplKCkpOworCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWlu
dDMyX3QpOworICAgICAgICB1aW50MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Qq
PihwbGFuLm1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3Ro
KSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zm
c2V0ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUp
OworCisgICAgICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVp
bnQzMl90KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZz
ZXQgLz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAt
IDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgewor
ICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAg
ICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVf
YXJyYXkiKSAocGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIp
IChsb2NhbCAkaSBpMzIpCisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0
IDApKQorICAgICAgICAvLyAgICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAg
ICAgICAvLyAgICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9j
YWwgJGxlbmd0aCkpKQorICAgICAgICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdl
dF9sb2NhbCAkcCkgKGdldF9sb2NhbCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAg
ICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkp
KSkKKyAgICAgICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAg
ICAvLyAgICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICAp
CisgICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7Cisg
ICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAw
LCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAg
ICAgICAgMHgwMywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAg
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5
LCAweDc0LCAweDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAw
eDAwLCAweDBhLCAweGFmLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgw
MSwgMHhhOSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwg
MHgwMCwgMHgxNSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4
MTQsIDB4MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQs
IDB4MDMsIDB4NDAsIDB4MTQsIDB4MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAw
eDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBm
LCAweDBmLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwg
dmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJl
c3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBp
bGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQocGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRv
ZXNuJ3QgY3Jhc2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2ln
bmVkIG9mZnNldCA9IDE7CisgICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihwbGFuLm1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3go
bGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7Cisg
ICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtpICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAg
ICAgIG9mZnNldCA9IDU7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAg
ICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEo
bWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZz
ZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAg
ICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAv
LyAgICAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0g
JHB0ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRf
bG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMy
LmxvYWQ4X3MgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAv
LyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAg
MHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4
NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2
YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwg
MHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUs
IDB4MDAsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAw
eDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsK
KyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkg
eworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVj
dGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
cGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikg
fSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAg
ICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9s
b2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkz
Mi5zdG9yZTggKGkzMi5jb25zdCA4KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAo
cmV0dXJuIChpMzIubG9hZDhfcyAoaTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisg
ICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAg
ICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAw
eDAxLCAweDg2LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAg
ICAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAw
eDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBh
LCAweDk1LCAweDgwLCAweDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4Ziwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgy
ZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAs
IDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBd
KSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3Jy
ZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gICht
ZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFt
ICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMy
LnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJl
dHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAg
ICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAg
MHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4
NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIs
IDB4MDIsIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2
YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwg
MHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQs
IDB4MDMsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAw
eDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsK
KyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkg
eworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVj
dGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAx
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KC0xMiksIGJveChwbGFuLm1lbW9yeS0+c2l6ZSgpIC0gc2l6ZW9mKHVpbnQ2
NF90KSkgfSksIC0xMik7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJv
bToKKyAgICAgICAgLy8gKG1vZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAv
LyAgKGZ1bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0
ciBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgIChpMzIuc3RvcmUgKGdldF9sb2NhbCAk
cHRyKSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAocmV0dXJuIChpMzIubG9hZCAoZ2V0
X2xvY2FsICRwdHIpKSkKKyAgICAgICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAw
eDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgw
NSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4
NjksIDB4MzMsCisgICAgICAgICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0
LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAw
eDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMCwgMHgxNCwgMHgwMSwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxNCwK
KyAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAg
fTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5y
ZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRh
TG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAg
ICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikg
fSksIDEwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+
anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CiAgICAgICAgIC8vICAgIChtb2R1bGUKLSAgICAg
ICAgLy8gICAgIChmdW5jIChleHBvcnQgImR1bWItZXEiKSAocGFyYW0gJHggaTMyKSAocGFyYW0g
JHkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAg
Ly8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFt
ICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAg
ICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sK
KyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIu
Z2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAg
ICAgIChpMzIuc3RvcmUgKGkzMi5hZGQgKGdldF9sb2NhbCAkcCkgKGkzMi5tdWwgKGdldF9sb2Nh
bCAkaSkgKGkzMi5jb25zdCA0KSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAg
KHNldF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAg
ICAgICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAg
ICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAg
ICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAg
ICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAg
MHgwMywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0
LCAweDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAw
eDBhLCAweGIyLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhh
YywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwg
MHgxNSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4
MDMsIDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMs
IDB4MTAsIDB4MDQsIDB4NDIsCisgICAgICAgICAgICAweDQwLCAweDE0LCAweDAwLCAweDMzLCAw
eDAyLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2
LCAweDAwLCAweDBmLAorICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9Owor
CisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3Vs
dC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOwor
CisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzaXplb2YodWludDMyX3QpOwor
ICAgICAgICB1aW50MzJfdCogbWVtb3J5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwbGFuLm1l
bW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5q
c0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAg
ICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNLX0VRKG1lbW9y
eVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVu
Z3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAg
ICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1ICogc2l6ZW9mKHVpbnQzMl90KTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCg1KSwgYm94KG9mZnNldCksIGJveChsZW5ndGgpIH0pOworICAgICAgICBvZmZzZXQgLz0gc2l6
ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1
KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hF
Q0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7CisgICAgfQorCisgICAgeworICAgICAgICAv
LyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1vZHVsZQorICAgICAgICAvLyAgICAg
KG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1bmMgKGV4cG9ydCAid3JpdGVfYXJyYXkiKSAo
cGFyYW0gJHggaTMyKSAocGFyYW0gJHAgaTMyKSAocGFyYW0gJGxlbmd0aCBpMzIpIChsb2NhbCAk
aSBpMzIpCisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmNvbnN0IDApKQorICAg
ICAgICAvLyAgICAgIChibG9jaworICAgICAgICAvLyAgICAgICAobG9vcAorICAgICAgICAvLyAg
ICAgICAgKGJyX2lmIDEgKGkzMi5nZV91IChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJGxlbmd0
aCkpKQorICAgICAgICAvLyAgICAgICAgKGkzMi5zdG9yZTggKGkzMi5hZGQgKGdldF9sb2NhbCAk
cCkgKGdldF9sb2NhbCAkaSkpIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgICAgKHNl
dF9sb2NhbCAkaSAoaTMyLmFkZCAoaTMyLmNvbnN0IDEpIChnZXRfbG9jYWwgJGkpKSkKKyAgICAg
ICAgLy8gICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgKQorICAgICAgICAvLyAgICAg
ICApCisgICAgICAgIC8vICAgICAgKHJldHVybikKKyAgICAgICAgLy8gICAgICApCisgICAgICAg
IC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAg
ICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAw
eDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgw
MywgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MGIsIDB4NzcsIDB4NzIsCisgICAgICAgICAgICAweDY5LCAweDc0LCAw
eDY1LCAweDVmLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDAwLCAweDAwLCAweDBh
LCAweGFmLCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHhhOSwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxMCwgMHgwMCwgMHgx
NSwgMHgwMywgMHgwMSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDAsIDB4MTQsIDB4MDMs
IDB4MTQsIDB4MDIsIDB4NTYsIDB4MDcsIDB4MDEsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDMsIDB4
NDAsIDB4MTQsIDB4MDAsCisgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAx
LCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAw
eDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsK
KyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkg
eworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVj
dGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
cGxhbi5tZW1vcnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDU7CisgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IDE7CisgICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihw
bGFuLm1lbW9yeS0+bWVtb3J5KCkpOworICAgICAgICBpbnZva2U8dm9pZD4oKnBsYW4ucmVzdWx0
WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9
KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCAtIDFdLCAwdSk7CisgICAgICAgIENI
RUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtp
ICsgb2Zmc2V0XSwgMTAwdSk7CisKKyAgICAgICAgbGVuZ3RoID0gMTA7CisgICAgICAgIG9mZnNl
dCA9IDU7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3RoKSB9KTsKKyAgICAgICAgQ0hFQ0tf
RVEobWVtb3J5W29mZnNldCAtIDFdLCAxMDB1KTsKKyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29m
ZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W2kgKyBvZmZzZXRdLCA1dSk7
CisgICAgfQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8g
ICAgKG1vZHVsZQorICAgICAgICAvLyAgICAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgICAgKGZ1
bmMgKGV4cG9ydCAiaTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIp
IChyZXN1bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChnZXRfbG9jYWwgJHB0
cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3Mg
KGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQor
ICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2
MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4
MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAw
eDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2Ziwg
MHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4
MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4
MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBm
CisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
aWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocGxhbi5tZW1v
cnktPnNpemUoKSk7CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgwKSwgYm94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAg
IChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikg
KHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGkzMi5zdG9yZTgg
KGkzMi5jb25zdCA4KSAoZ2V0X2xvY2FsICRpKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChp
MzIubG9hZDhfcyAoaTMyLmNvbnN0IDgpKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8v
ICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAw
eDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg2
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQwLAorICAgICAgICAgICAgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwMSwgMHgwMywgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MGIsIDB4NjksIDB4MzMsIDB4MzIsCisgICAgICAgICAgICAweDVmLCAweDZjLCAweDZm
LCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDczLCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHgyZSwgMHgwMCwg
MHgwMCwgMHgxMCwgMHgwOCwKKyAgICAgICAgICAgIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4
MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7
CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApIH0pLCAx
MDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMSkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2Vu
ZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5j
ICJkdW1iLWVxIiAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikKICAg
ICAgICAgLy8gICAgICAoaWYgKGkzMi5lcSAoZ2V0X2xvY2FsICR4KSAoZ2V0X2xvY2FsICR5KSkK
ICAgICAgICAgLy8gICAgICAgKHRoZW4gKGJyIDApKQogICAgICAgICAvLyAgICAgICAoZWxzZSAo
cmV0dXJuIChpMzIuY29uc3QgMSkpKSkKQEAgLTI2NSwxNCArNzI4LDE0IEBAIHN0YXRpYyB2b2lk
IHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pLCAxKTsKLSAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94
KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsK
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDAp
LCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
KSwgYm94KDApIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSksIDEpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
MSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxMDApLCBib3goNikgfSksIDEpOwogICAgIH0KIAogICAgIHsKQEAgLTMwNiwxNCArNzY5LDE0
IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBU
ZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKLSAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94
KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LCB7IGJveCgxKSwgYm94KDIpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsK
LSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwg
Ym94KDYpIH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwg
MSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgxKSwgYm94KDApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMSkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDIpIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9
KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDApOwogICAgIH0KIAogCkBAIC0zMzMs
NyArNzk2LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSksIDUpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgNSk7CiAgICAgfQogCiAK
QEAgLTM1NCw3ICs4MTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9
CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyB9KSwgMTEpOwog
ICAgIH0KIAogICAgIHsKQEAgLTM3NCw3ICs4MzcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVz
dHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEpOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyB9KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTM5NCw3ICs4NTcsNyBAQCBzdGF0aWMg
dm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRv
ZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyB9KSwgMTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0tPmpzRW50cnlQb2ludCwgeyB9KSwgMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTQxMywxMCAr
ODc2LDEwIEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMSkgfSks
IDEwMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goLTEpLCBib3goMSl9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXSwgeyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgx
KSB9KSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94
KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgxKSB9KSwgMTAxKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KC0x
KSwgYm94KDEpfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KSksIGJveCgxKSB9KSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CiAgICAgfQog
CiAgICAgewpAQCAtNDQyLDggKzkwNSw4IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9KSwgMCk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTApIH0p
LCAxMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNF
bnRyeVBvaW50LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMCkgfSksIDEwKTsKICAgICB9
CiAKICAgICB7CkBAIC00NzgsMTAgKzk0MSwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCkgfSksIDAp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEp
IH0pLCAxKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgyKX0pLCAzKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0
WzBdLCB7IGJveCgxMDApIH0pLCA1MDUwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApIH0pLCAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpfSksIDMpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgNTA1MCk7
CiAgICAgfQogCiAgICAgewpAQCAtNTIyLDE0ICs5ODUsMTQgQEAgc3RhdGljIHZvaWQgcnVuV0FT
TVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDAp
LCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDIpOwotICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSks
IDIpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDIpLCBib3goMikgfSksIDQpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwg
Ym94KDEwMCkgfSksIDEwMDAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMSksIGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAyKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEpLCBib3goMikgfSksIDIpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgNCk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgyKSwgYm94KDYpIH0pLCAxMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goNikgfSksIDYwMCk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBv
aW50LCB7IGJveCgxMDApLCBib3goMTAwKSB9KSwgMTAwMDApOwogICAgIH0KIAogICAgIHsKQEAg
LTU3NSwxNCArMTAzOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9
CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJv
eCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7
Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSks
IGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDApLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgyKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAwKTsKICAg
ICB9CiAKIH0KQEAgLTU5Niw3ICsxMDU5LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgIGlmIChvcHRpb25zLm1fcnVuTEVCVGVzdHMpCiAgICAgICAgIHJ1bkxFQlRlc3Rz
KCk7CiAKLQogICAgIGlmIChvcHRpb25zLm1fcnVuV0FTTVRlc3RzKSB7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwYjcx
YzFhZmFhOTQ0NjE2YmExN2ZlYmZjOTVlZGJjYWM2MGQzY2I0Li45N2UwZDhiZmU3NDRhNDc2ODRi
MDFiMDNhYTNhZDIwOWFlNjNkZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0yOSwxNCArMjksMTkgQEAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiQjNDb25zdFB0clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJC
M1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKICNp
bmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNs
dWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21BZGRyZXNzVmFsdWUuaCIK
KyNpbmNsdWRlICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJl
Z2lzdGVyLmgiCiAjaW5jbHVkZSAiV0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAi
V0FTTUZ1bmN0aW9uUGFyc2VyLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCogcHRyKQpAQCAtMTY1
LDE4ICsxNzAsMjUgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFZhcmlhYmxlKiwgMT4g
UmVzdWx0TGlzdDsKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVtcHR5RXhw
cmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKFByb2NlZHVyZSYpOworICAg
IEIzSVJHZW5lcmF0b3IoTWVtb3J5KiwgUHJvY2VkdXJlJik7CiAKICAgICB2b2lkIGFkZEFyZ3Vt
ZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mKTsKICAgICB2b2lkIGFkZExvY2FsKFR5cGUsIHVpbnQz
Ml90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBlLCB1aW50NjRfdCk7CiAK
KyAgICAvLyBMb2NhbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJOX1VOVVNF
RF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsK
IAorICAgIC8vIE1lbW9yeQorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGxvYWQoTG9hZE9w
VHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWlu
dDMyX3Qgb2Zmc2V0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBzdG9yZShTdG9yZU9w
VHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQz
Ml90IG9mZnNldCk7CisKKyAgICAvLyBCYXNpYyBvcGVyYXRvcnMKICAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGxlZnQsIEV4
cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBFeHByZXNzaW9uVHlwZSBhcmcs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCisgICAgLy8gQ29udHJvbCBmbG93CiAgICAgQ29u
dHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEJsb2NrKFR5cGUgc2lnbmF0dXJlKTsKICAg
ICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9vcChUeXBlIHNpZ25hdHVyZSk7
CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVUVVJOIGFkZElmKEV4cHJlc3Npb25UeXBl
IGNvbmRpdGlvbiwgVHlwZSBzaWduYXR1cmUpOwpAQCAtMTkxLDE4ICsyMDMsNDEgQEAgcHVibGlj
OgogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ss
IGNvbnN0IEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9uU3RhY2spOwogCiBwcml2YXRlOgorICAg
IEV4cHJlc3Npb25UeXBlIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3Qgc2l6ZU9mT3ApOworICAgIEV4cHJl
c3Npb25UeXBlIGVtaXRMb2FkT3AoTG9hZE9wVHlwZSwgT3JpZ2luLCBFeHByZXNzaW9uVHlwZSBw
b2ludGVyLCB1aW50MzJfdCBvZmZzZXQpOworICAgIHZvaWQgZW1pdFN0b3JlT3AoU3RvcmVPcFR5
cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUs
IHVpbnQzMl90IG9mZnNldCk7CisKICAgICB2b2lkIHVuaWZ5KFZhcmlhYmxlKiB0YXJnZXQsIGNv
bnN0IEV4cHJlc3Npb25UeXBlIHNvdXJjZSk7CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9j
ayhjb25zdCBFeHByZXNzaW9uTGlzdCYgcmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNrKTsK
IAorICAgIE1lbW9yeSogbV9tZW1vcnk7CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgQmFz
aWNCbG9jayogbV9jdXJyZW50QmxvY2s7CiAgICAgVmVjdG9yPFZhcmlhYmxlKj4gbV9sb2NhbHM7
CisgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKKyAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BS
OwogfTsKIAotQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmIHByb2NlZHVy
ZSkKLSAgICA6IG1fcHJvYyhwcm9jZWR1cmUpCitCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KE1lbW9yeSogbWVtb3J5LCBQcm9jZWR1cmUmIHByb2NlZHVyZSkKKyAgICA6IG1fbWVtb3J5KG1l
bW9yeSkKKyAgICAsIG1fcHJvYyhwcm9jZWR1cmUpCiB7CiAgICAgbV9jdXJyZW50QmxvY2sgPSBt
X3Byb2MuYWRkQmxvY2soKTsKKworICAgIGlmIChtX21lbW9yeSkgeworICAgICAgICBtX21lbW9y
eUJhc2VHUFIgPSBtX21lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuYmFzZU1lbW9yeVBvaW50ZXI7
CisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJhc2VHUFIpOworICAgICAgICBB
U1NFUlQoIW1fbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzWzBdLnNpemVP
ZmZzZXQpOworICAgICAgICBtX21lbW9yeVNpemVHUFIgPSBtX21lbW9yeS0+cGlubmVkUmVnaXN0
ZXJzKCkuc2l6ZVJlZ2lzdGVyc1swXS5zaXplUmVnaXN0ZXI7CisgICAgICAgIGZvciAoY29uc3Qg
UGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgaW5mbyA6IG1fbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMo
KS5zaXplUmVnaXN0ZXJzKQorICAgICAgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihpbmZvLnNp
emVSZWdpc3Rlcik7CisgICAgfQorCisgICAgbV9wcm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCkg
eworICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1bndpbmQgdGhlIHN0YWNrIGFuZCB0aHJvdyBhIEpTIGV4
Y2VwdGlvbi4gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
MzUxCisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgQjNJUkdl
bmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkKQEAgLTIyNCwyMCAr
MjU5LDE4OCBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8
VHlwZT4mIHR5cGVzKQogICAgICAgICB9KTsKIH0KIAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
QjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpCitib29sIEIzSVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIEFTU0VSVChtX2xvY2Fsc1tpbmRleF0pOwogICAg
IHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9j
LCBCMzo6R2V0LCBPcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWlu
dDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKQorYm9vbCBCM0lSR2VuZXJhdG9yOjpz
ZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpCiB7CiAgICAgQVNT
RVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJp
YWJsZVZhbHVlPihtX3Byb2MsIEIzOjpTZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tpbmRleF0sIHZh
bHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9y
OjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50
MzJfdCBvZmZzZXQsIHVpbnQzMl90IHNpemVPZk9wZXJhdGlvbikKK3sKKyAgICBBU1NFUlQobV9t
ZW1vcnlCYXNlR1BSICYmIG1fbWVtb3J5U2l6ZUdQUik7CisgICAgQVNTRVJUKHNpemVPZk9wZXJh
dGlvbiArIG9mZnNldCA+IG9mZnNldCk7CisgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxX
YXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgcG9pbnRlciwgbV9tZW1vcnlT
aXplR1BSLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAxKTsKKyAgICBwb2ludGVyID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBw
b2ludGVyKTsKKyAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQWRkcmVz
c1ZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBwb2ludGVyLCBtX21lbW9yeUJhc2VHUFIpOworfQor
CitpbmxpbmUgdWludDMyX3Qgc2l6ZU9mTG9hZE9wKExvYWRPcFR5cGUgb3ApCit7CisgICAgc3dp
dGNoIChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOgorICAgIGNhc2UgTG9h
ZE9wVHlwZTo6STMyTG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhTOgorICAg
IGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNl
IExvYWRPcFR5cGU6OkkzMkxvYWQxNlM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZT
OgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAg
Y2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9h
ZDMyVToKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOgor
ICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlU6CisgICAg
Y2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6RjMyTG9h
ZDoKKyAgICBjYXNlIExvYWRPcFR5cGU6OkY2NExvYWQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitpbmxpbmUgVmFsdWUqIEIz
SVJHZW5lcmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9wVHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KQoreworICAgIHN3aXRjaCAob3Ap
IHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogeworICAgICAgICByZXR1cm4gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMsIG9yaWdp
biwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExv
YWQ4UzogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBT
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMy
TG9hZDhVOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQ4Wiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOworICAgIH0K
KworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOiB7CisgICAgICAgIFZhbHVlKiB2YWx1
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDha
LCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7CisgICAg
fQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOiB7CisgICAgICAgIHJldHVybiBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQxNlMsIG9y
aWdpbiwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICB9CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRM
b2FkMTZTOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDE2Uywgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQp
OworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6
STMyTG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisK
KyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVl
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJ
bnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgWkV4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisK
KyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVl
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJ
bnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisK
KyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdp
biwgcG9pbnRlcik7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpGMzJMb2FkOiB7Cisg
ICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEZsb2F0LCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9h
ZE9wVHlwZTo6RjY0TG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBEb3VibGUsIG9yaWdpbiwgcG9pbnRlcik7
CisgICAgfQorCisgICAgLy8gQjMgZG9lc24ndCBzdXBwb3J0IExvYWQxNlogeWV0LgorICAgIGNh
c2UgTG9hZE9wVHlwZTo6STMyTG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQx
NlU6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitib29sIEIzSVJHZW5lcmF0b3I6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVz
c2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0
KQoreworICAgIEFTU0VSVChwb2ludGVyLT50eXBlKCkgPT0gSW50MzIpOworCisgICAgcmVzdWx0
ID0gZW1pdExvYWRPcChvcCwgT3JpZ2luKCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHBv
aW50ZXIsIG9mZnNldCwgc2l6ZU9mTG9hZE9wKG9wKSksIG9mZnNldCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2lubGluZSB1aW50MzJfdCBzaXplT2ZTdG9yZU9wKFN0b3JlT3BUeXBlIG9wKQor
eworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTg6Cisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgorICAgICAgICByZXR1cm4gMTsKKyAgICBj
YXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTE2OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMTY6CisgICAgICAgIHJldHVybiAyOworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3Jl
OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMzI6CisgICAgY2FzZSBTdG9yZU9wVHlw
ZTo6RjMyU3RvcmU6CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICBjYXNlIFN0b3JlT3BUeXBl
OjpJNjRTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpGNjRTdG9yZToKKyAgICAgICAgcmV0
dXJuIDg7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKwor
aW5saW5lIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5cGUgb3AsIE9y
aWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVl
LCB1aW50MzJfdCBvZmZzZXQpCit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU3RvcmVP
cFR5cGU6Okk2NFN0b3JlODoKKyAgICAgICAgdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFZhbHVlPihtX3Byb2MsIFRydW5jLCBvcmlnaW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRI
Uk9VR0g7CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTg6CisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmU4LCBvcmlnaW4s
IHZhbHVlLCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0
b3JlT3BUeXBlOjpJNjRTdG9yZTE2OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBG
QUxMVEhST1VHSDsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlMTY6CisgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUxNiwg
b3JpZ2luLCB2YWx1ZSwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUzMjoKKyAgICAgICAgdmFsdWUgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFRydW5jLCBvcmlnaW4sIHZhbHVlKTsKKyAg
ICAgICAgRkFMTFRIUk9VR0g7CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZToKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpGMzJT
dG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpGNjRTdG9yZToKKyAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luLCB2YWx1
ZSwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEIzSVJHZW5lcmF0b3I6OnN0b3JlKFN0
b3JlT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1
ZSwgdWludDMyX3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVChwb2ludGVyLT50eXBlKCkgPT0gSW50
MzIpOworCisgICAgZW1pdFN0b3JlT3Aob3AsIE9yaWdpbigpLCBlbWl0Q2hlY2tBbmRQcmVwYXJl
UG9pbnRlcihwb2ludGVyLCBvZmZzZXQsIHNpemVPZlN0b3JlT3Aob3ApKSwgdmFsdWUsIG9mZnNl
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQjNJUkdlbmVyYXRvcjo6dW5hcnlPcChV
bmFyeU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQogewogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgdG9CM09wKG9wKSwgT3JpZ2luKCksIGFyZyk7CkBAIC00MDMsMTAgKzYwNiw2OSBAQCB2b2lk
IEIzSVJHZW5lcmF0b3I6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xUeXBlPiYgY29udHJvbFN0
YWNrLCBjb25zdCBFeHByZXNzaQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotc3RkOjp1
bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWlu
dDhfdD4mIHNvdXJjZSwgRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZl
bCkKKworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY3JlYXRlSlNXcmFwcGVy
KFZNJiB2bSwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBtYWluRnVuY3Rpb24sIE1lbW9yeSogbWVtb3J5KQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgLy8gQ2hlY2sg
YXJndW1lbnQgY291bnQgaXMgc2FuZS4KKyAgICBWYWx1ZSogZnJhbWVQb2ludGVyID0gYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKTsK
KyAgICBWYWx1ZSogb2ZmU2V0T2ZBcmd1bWVudENvdW50ID0gYmxvY2stPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICog
c2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50Q291bnQgPSBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAg
IGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZyYW1lUG9pbnRl
ciwgb2ZmU2V0T2ZBcmd1bWVudENvdW50KSk7CisKKyAgICBWYWx1ZSogZXhwZWN0ZWRBcmd1bWVu
dENvdW50ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBz
aWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkpOworCisgICAgQ2hlY2tWYWx1ZSogYXJndW1lbnRD
b3VudENoZWNrID0gYmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVjaywgT3Jp
Z2luKCksCisgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFib3ZlLCBPcmln
aW4oKSwgZXhwZWN0ZWRBcmd1bWVudENvdW50LCBhcmd1bWVudENvdW50KSk7CisgICAgYXJndW1l
bnRDb3VudENoZWNrLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7Cisg
ICAgfSk7CisKKyAgICAvLyBNb3ZlIG1lbW9yeSB2YWx1ZXMgdG8gdGhlIGFwcHJvcmlhdGUgcGxh
Y2VzLCBpZiBuZWVkZWQuCisgICAgVmFsdWUqIGJhc2VNZW1vcnkgPSBudWxscHRyOworICAgIFZl
Y3RvcjxWYWx1ZSo+IHNpemVzOworICAgIGlmIChtZW1vcnkpIHsKKyAgICAgICAgYmFzZU1lbW9y
eSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1lbW9y
eS0+bWVtb3J5KCkpOworICAgICAgICBWYWx1ZSogc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGJsb2Nr
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDxj
aGFyKj4obWVtb3J5KSArIE1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpKTsKKyAgICAgICAgc2l6ZXMu
cmVzZXJ2ZUNhcGFjaXR5KG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycy5z
aXplKCkpOworICAgICAgICBmb3IgKGF1dG8gaW5mbyA6IG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJz
KCkuc2l6ZVJlZ2lzdGVycykgeworICAgICAgICAgICAgc2l6ZXMuYXBwZW5kKGJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHNpemUsCisgICAgICAgICAgICAgICAg
YmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpbmZvLnNpemVP
ZmZzZXQpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBHZXQgb3VyIGFyZ3VtZW50cy4K
KyAgICBWZWN0b3I8VmFsdWUqPiBhcmd1bWVudHM7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS5pdGVyYXRlKHNpZ25hdHVyZS0+YXJndW1lbnRzLCBwcm9jLCBibG9jaywgT3JpZ2luKCksIFsm
XSAoVmFsdWUqIGFyZ3VtZW50LCB1bnNpZ25lZCkgeworICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KGFyZ3VtZW50KTsKKyAgICB9KTsKKworICAgIC8vIE1vdmUgdGhlIGFyZ3VtZW50cyBpbnRvIHBs
YWNlLgorICAgIFZhbHVlKiByZXN1bHQgPSBqc2NDYWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2Fs
bChwcm9jLCBibG9jaywgT3JpZ2luKCksIG1haW5GdW5jdGlvbiwgYXJndW1lbnRzLCB0b0IzVHlw
ZShzaWduYXR1cmUtPnJldHVyblR5cGUpLCBbJl0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCkgeworICAgICAgICBpZiAobWVtb3J5KSB7CisgICAgICAgICAgICBBU1NFUlQoc2l6ZXMuc2l6
ZSgpID09IG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycy5zaXplKCkpOwor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZU1lbW9y
eSwgVmFsdWVSZXA6OnJlZyhtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLmJhc2VNZW1vcnlQb2lu
dGVyKSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKHNpemVzW2ldLCBWYWx1ZVJlcDo6cmVnKG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6
ZVJlZ2lzdGVyc1tpXS5zaXplUmVnaXN0ZXIpKSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IC8vIFJldHVybiB0aGUgcmVzdWx0LCBpZiBuZWVkZWQuCisgICAgaWYgKHNpZ25hdHVyZS0+cmV0
dXJuVHlwZSAhPSBWb2lkKQorICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIEIzOjpSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAgYmxv
Y2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBCMzo6UmV0dXJuLCBPcmlnaW4oKSk7CisK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4odm0sIHByb2MpOworfQor
CitzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZN
JiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIE1lbW9yeSogbWVtb3J5LCBGdW5jdGlvbklu
Zm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQogewogICAgIFByb2NlZHVyZSBwcm9j
ZWR1cmU7Ci0gICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KHByb2NlZHVyZSk7CisgICAgQjNJUkdl
bmVyYXRvciBjb250ZXh0KG1lbW9yeSwgcHJvY2VkdXJlKTsKICAgICBGdW5jdGlvblBhcnNlcjxC
M0lSR2VuZXJhdG9yPiBwYXJzZXIoY29udGV4dCwgc291cmNlLCBpbmZvKTsKICAgICBpZiAoIXBh
cnNlci5wYXJzZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
NDE3LDcgKzY3OSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29t
cGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBGdQogICAgIGZpeFNTQShwcm9j
ZWR1cmUpOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJQb3N0IFNTQTogIiwg
cHJvY2VkdXJlKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4odm0s
IHByb2NlZHVyZSwgb3B0TGV2ZWwpOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbkNvbXBpbGF0aW9uPigpOworCisgICAgcmVzdWx0LT5jb2RlID0gc3RkOjptYWtl
X3VuaXF1ZTxDb21waWxhdGlvbj4odm0sIHByb2NlZHVyZSwgb3B0TGV2ZWwpOworICAgIHJlc3Vs
dC0+anNFbnRyeVBvaW50ID0gY3JlYXRlSlNXcmFwcGVyKHZtLCBpbmZvLnNpZ25hdHVyZSwgcmVz
dWx0LT5jb2RlLT5jb2RlKCksIG1lbW9yeSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNQjNJUkdlbmVyYXRvci5oCmluZGV4IDk1MTk2ZGJlNTc3ZGFhZmFiYTk3OGE1NjA0YzkwNmNk
NjU1YmZjODMuLmY4MjgyZDBjOTU1YzI2ZjdlN2MwMTI0NTc5N2I5OTE2ZDRkYjkwNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaApAQCAtMzUs
NyArMzUsOSBAQCBleHRlcm4gIkMiIHZvaWQgZHVtcFByb2NlZHVyZSh2b2lkKik7CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGls
YXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIEZ1bmN0aW9uSW5m
b3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CitjbGFzcyBNZW1vcnk7CisKK3N0ZDo6
dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBWZWN0
b3I8dWludDhfdD4mLCBNZW1vcnkqLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNpZ25lZCBvcHRM
ZXZlbCA9IDEpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oCmluZGV4IDc4OTU5
MzEwMjRhNTNkNjdkNWM3OWI5NDRlY2YyYjJiNTJhYjE3NDUuLjYxMzVmNzM3MDVhZTliNmJhMDAw
NDlmNGMyMDY0ZWQ5ZWE3ZTUwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oCkBAIC0yNywyMyArMjcsMjcgQEAKIAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFz
aWNCbG9jay5oIgogI2luY2x1ZGUgIkIzQ29uc3Q2NFZhbHVlLmgiCisjaW5jbHVkZSAiQjNDb25z
dHJhaW5lZFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIz
UGF0Y2hwb2ludFZhbHVlLmgiCisjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJC
M1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUg
IldBU01Gb3JtYXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKIAotdHlw
ZWRlZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUg
dHlwZSk7Cit0eXBlZGVmIHVuc2lnbmVkICgqTmV4dE9mZnNldCkodW5zaWduZWQgY3VycmVudE9m
ZnNldCwgQjM6OlR5cGUgdHlwZSk7CiAKLXRlbXBsYXRlPHVuc2lnbmVkIG9mZnNldCwgTmV4dE9m
ZnNldCB1cGRhdGVPZmZzZXQ+Cit0ZW1wbGF0ZTx1bnNpZ25lZCBoZWFkZXJTaXplLCBOZXh0T2Zm
c2V0IHVwZGF0ZU9mZnNldD4KIGNsYXNzIENhbGxpbmdDb252ZW50aW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGVhZGVyU2l6ZSA9IG9mZnNldDsKLQogICAgIENhbGxp
bmdDb252ZW50aW9uKFZlY3RvcjxHUFJSZWc+JiYgcmVnaXN0ZXJBcmd1bWVudHMsIFJlZ2lzdGVy
U2V0JiYgY2FsbGVlU2F2ZVJlZ2lzdGVycykKICAgICAgICAgOiBtX3JlZ2lzdGVyQXJndW1lbnRz
KHJlZ2lzdGVyQXJndW1lbnRzKQogICAgICAgICAsIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyhjYWxs
ZWVTYXZlUmVnaXN0ZXJzKQpAQCAtNjQsMTggKzY4LDU1IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBCMzo6VmFsdWUqIGFkZHJlc3MgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4ocHJv
YywgQjM6OkFkZCwgb3JpZ2luLCBmcmFtZVBvaW50ZXIsCiAgICAgICAgICAgICAgICAgICAgIGJs
b2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0NjRWYWx1ZT4ocHJvYywgb3JpZ2luLCBjdXJyZW50T2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpN
ZW1vcnlWYWx1ZT4ocHJvYywgQjM6OkxvYWQsIHRvQjNUeXBlKGFyZ3VtZW50VHlwZXNbaV0pLCBv
cmlnaW4sIGFkZHJlc3MpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSB1cGRhdGVP
ZmZzZXQoY3VycmVudE9mZnNldCwgYXJndW1lbnRUeXBlc1tpXSk7CisgICAgICAgICAgICAgICAg
Y3VycmVudE9mZnNldCA9IHVwZGF0ZU9mZnNldChjdXJyZW50T2Zmc2V0LCB0b0IzVHlwZShhcmd1
bWVudFR5cGVzW2ldKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmdW5jdG9yKGFyZ3Vt
ZW50LCBpKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CisgICAgQjM6OlZhbHVlKiBzZXR1cENhbGwoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJh
c2ljQmxvY2sqIGJsb2NrLCBCMzo6T3JpZ2luIG9yaWdpbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHRhcmdldCwgY29uc3QgVmVjdG9yPEIzOjpWYWx1ZSo+JiBhcmd1bWVudHMsIEIzOjpUeXBlIHJl
dHVyblR5cGUsIGNvbnN0IEZ1bmN0b3ImIHBhdGNocG9pbnRGdW5jdG9yKSBjb25zdAorICAgIHsK
KyAgICAgICAgc2l6ZV90IHN0YWNrQXJndW1lbnRDb3VudCA9IGFyZ3VtZW50cy5zaXplKCkgPCBt
X3JlZ2lzdGVyQXJndW1lbnRzLnNpemUoKSA/IDAgOiBhcmd1bWVudHMuc2l6ZSgpIC0gbV9yZWdp
c3RlckFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGhlYWRlclNp
emUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CisKKyAgICAgICAgcHJvYy5yZXF1ZXN0Q2Fs
bEFyZ0FyZWFTaXplSW5CeXRlcyhXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRCeXRlcygpLCBoZWFkZXJTaXplICsgKHN0YWNrQXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdp
c3RlcikpKSk7CisgICAgICAgIFZlY3RvcjxCMzo6Q29uc3RyYWluZWRWYWx1ZT4gY29uc3RyYWlu
ZWRBcmd1bWVudHM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCByZXA7CisgICAgICAgICAg
ICBpZiAoaSA8IG1fcmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJl
cCA9IEIzOjpWYWx1ZVJlcDo6cmVnKG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcCA9IEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVu
dChvZmZzZXQpOworICAgICAgICAgICAgY29uc3RyYWluZWRBcmd1bWVudHMuYXBwZW5kKEIzOjpD
b25zdHJhaW5lZFZhbHVlKGFyZ3VtZW50c1tpXSwgcmVwKSk7CisgICAgICAgICAgICBvZmZzZXQg
PSB1cGRhdGVPZmZzZXQob2Zmc2V0LCBhcmd1bWVudHNbaV0tPnR5cGUoKSk7CisgICAgICAgIH0K
KworICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVu
ZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCByZXR1cm5UeXBlLCBvcmlnaW4pOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVudHMpOworICAg
ICAgICBwYXRjaHBvaW50RnVuY3RvcihwYXRjaHBvaW50KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBjYWxsID0gaml0LmNhbGwoKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHIodGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpZiAocmV0dXJuVHlwZSA9PSBCMzo6Vm9p
ZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHBhdGNocG9pbnQtPnJl
c3VsdENvbnN0cmFpbnQgPSBCMzo6VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0KKwogICAgIGNvbnN0IFZlY3Rv
cjxHUFJSZWc+IG1fcmVnaXN0ZXJBcmd1bWVudHM7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQgbV9j
YWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIGNvbnN0IFJlZ2lzdGVyU2V0IG1fY2FsbGVyU2F2ZVJl
Z2lzdGVyczsKIH07CiAKLWlubGluZSB1bnNpZ25lZCBuZXh0SlNDT2Zmc2V0KHVuc2lnbmVkIGN1
cnJlbnRPZmZzZXQsIFR5cGUpCitpbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09mZnNldCh1bnNpZ25l
ZCBjdXJyZW50T2Zmc2V0LCBCMzo6VHlwZSkKIHsKICAgICByZXR1cm4gY3VycmVudE9mZnNldCAr
IHNpemVvZihSZWdpc3Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0
LmgKaW5kZXggN2EwNDEzN2UzYzcwZjE4MjQ3MTBhY2Q5ODg0N2Y3MjE1NjI0ZDAxZC4uMWUxMDgx
MGQzZmY2ZWUwYTg3NjRiMzJiMzZlODA1NmRkMzQ1YTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Gb3JtYXQuaApAQCAtNDQsNiArNDQsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogCisjaW5jbHVkZSAiQjNDb21waWxhdGlvbi5oIgogI2luY2x1ZGUgIkIzVHlwZS5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTEyNiw2ICsxMjcsMTEgQEAgc3RydWN0IEZ1bmN0aW9uSW5mb3JtYXRpb24gewogICAg
IHNpemVfdCBlbmQ7CiB9OwogCitzdHJ1Y3QgRnVuY3Rpb25Db21waWxhdGlvbiB7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29kZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
QjM6OkNvbXBpbGF0aW9uPiBqc0VudHJ5UG9pbnQ7Cit9OworCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V0FTTQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAppbmRleCBhZTg3NDI0MGM5MjI4
ZDJkODM5NzQ0NmUxNTg3YTJkNDQ2OTFmYTNkLi40NDcxYTJjZjU3MTc4MTgyNTk1MjQyZDAzOTRm
NDc2OWU3OWUzYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVu
Y3Rpb25QYXJzZXIuaApAQCAtMTU0LDYgKzE1NCwzNyBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKENSRUFURV9DQVNFKSB7
CisgICAgICAgIHVpbnQzMl90IGFsaWdubWVudDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQz
MihhbGlnbm1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQz
Ml90IG9mZnNldDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihvZmZzZXQpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIgPSBt
X2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1
bHQ7CisgICAgICAgIGlmICghbV9jb250ZXh0LmxvYWQoc3RhdGljX2Nhc3Q8TG9hZE9wVHlwZT4o
b3ApLCBwb2ludGVyLCByZXN1bHQsIG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVB
VEVfQ0FTRSkgeworICAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQ7CisgICAgICAgIGlmICghcGFy
c2VWYXJVSW50MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIob2Zmc2V0
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSB2
YWx1ZSA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICByZXR1
cm4gbV9jb250ZXh0LnN0b3JlKHN0YXRpY19jYXN0PFN0b3JlT3BUeXBlPihvcCksIHBvaW50ZXIs
IHZhbHVlLCBvZmZzZXQpOworICAgIH0KKwogICAgIGNhc2UgT3BUeXBlOjpJMzJDb25zdDogewog
ICAgICAgICB1aW50MzJfdCBjb25zdGFudDsKICAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihj
b25zdGFudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVt
b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYzZWM5NTdmNjMwMjkwOTFiNzkwYTZmMjAxM2M2MjZmZTcwMjI5YzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmNwcApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldBU01NZW1vcnkuaCIKKworI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKKwor
TWVtb3J5OjpNZW1vcnkodWludDMyX3Qgc3RhcnRpbmdTaXplLCB1aW50MzJfdCBjYXBhY2l0eSwg
Y29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycykKKyAgICA6IG1fbW9k
ZShNb2RlOjpCb3VuZHNDaGVja2luZykKKyAgICAsIG1fc2l6ZShzdGFydGluZ1NpemUpCisgICAg
LCBtX2NhcGFjaXR5KGNhcGFjaXR5KQorICAgIC8vIEZJWE1FOiBJZiB3ZSBhZGQgc2lnbmFsIGJh
c2VkIGJvdW5kcyBjaGVja2luZyB0aGVuIHdlIG5lZWQgZXh0cmEgc3BhY2UgZm9yIG92ZXJmbG93
IG9uIGxvYWQuCisgICAgLy8gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyNjkzCisgICAgLCBtX21hcHBlZENhcGFjaXR5KHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtYXhQYWdlQ291bnQpICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSkKK3sKKyAg
ICBBU1NFUlQocGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgPiAwKTsKKworICAgIHZvaWQqIHJl
c3VsdCA9IG1tYXAobnVsbHB0ciwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9OT05FLCBNQVBfUFJJ
VkFURSB8IE1BUF9BTk9OLCAwLCAwKTsKKyAgICBpZiAocmVzdWx0ID09IE1BUF9GQUlMRUQpIHsK
KyAgICAgICAgLy8gVHJ5IGFnYWluIHdpdGggYSBkaWZmZXJlbnQgbnVtYmVyLgorICAgICAgICBt
X21hcHBlZENhcGFjaXR5ID0gbV9jYXBhY2l0eTsKKyAgICAgICAgcmVzdWx0ID0gbW1hcChudWxs
cHRyLCBtX21hcHBlZENhcGFjaXR5LCBQUk9UX05PTkUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04s
IDAsIDApOworICAgICAgICBpZiAocmVzdWx0ID09IE1BUF9GQUlMRUQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1wcm90ZWN0KHJlc3VsdCwgc3RhcnRpbmdTaXplLCBQ
Uk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICBtdW5tYXAocmVzdWx0LCBtX21hcHBl
ZENhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIHJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVSZWdpc3RlcnMuc2l6ZSgpICsgMTsKKyAg
ICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsm
XSAoUmVnIHJlZykgeworICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOworICAgICAgICBp
ZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3Rl
cnMoKS5nZXQocmVnKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7CisgICAgICAgICAgICBtX3Bpbm5lZFJlZ2lzdGVycy5i
YXNlTWVtb3J5UG9pbnRlciA9IGdwcjsKKyAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lz
dGVycy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fcGlubmVkUmVnaXN0ZXJzLnNp
emVSZWdpc3RlcnMuYXBwZW5kKHsgZ3ByLCBwaW5uZWRTaXplUmVnaXN0ZXJzWy0tcmVtYWluaW5n
UGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7CisgICAgfSk7CisKKyAgICBBU1NFUlQoIXJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyk7CisgICAgbV9tZW1vcnkgPSByZXN1bHQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCit9IC8vIG5hbWVzcGFjZSBXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
QVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVt
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWVtb3J5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzMxN2FlZjAwYTBkOTg1MjEzMWZlZDQzMWViOTAzZmI2ODBjZjdlNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaApAQCAtMCwwICsx
LDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJXQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKKworc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8g
eworICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7CisgICAgdW5zaWduZWQgc2l6ZU9mZnNldDsKK307
CisKKy8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXpl
IHJlZ2lzdGVyLiBSaWdodCBub3cgd2UgdGFrZSBhIHZlY3RvciB3aXRoIG9ubHkgb25lCisvLyBl
bnRyeS4gU3BlY2lmaWNhbGx5IGFuIGV4dHJ5IHdoZXJlIHRoZSBzaXplT2Zmc2V0ID09IDAuIElm
IHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVyLAorLy8gd2UgY2FuIGhhdmUgb25l
IGZvciBlYWNoIGxvYWQgc2l6ZSBjbGFzcy4gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCitzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZvIHsKKyAgICBW
ZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKKyAgICBHUFJSZWcg
YmFzZU1lbW9yeVBvaW50ZXI7Cit9OworCitjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2
NCAqIEtCOworY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisKK2NsYXNzIE1lbW9yeSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTWVtb3J5KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBvdGhlciBtb2Rl
cy4gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNjkzCisg
ICAgZW51bSBjbGFzcyBNb2RlIHsKKyAgICAgICAgQm91bmRzQ2hlY2tpbmcKKyAgICB9OworCisg
ICAgTWVtb3J5KCkgPSBkZWZhdWx0OworICAgIE1lbW9yeSh1aW50MzJfdCBzdGFydGluZ1NpemUs
IHVpbnQzMl90IGNhcGFjaXR5LCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBwaW5uZWRTaXplUmVn
aXN0ZXJzKTsKKworICAgIH5NZW1vcnkoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbWVtb3J5KQor
ICAgICAgICAgICAgbXVubWFwKG1fbWVtb3J5LCBtX21hcHBlZENhcGFjaXR5KTsKKyAgICB9CisK
KyAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeTsgfQorICAgIHVpbnQz
Ml90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBQaW5uZWRSZWdp
c3RlckluZm8mIHBpbm5lZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkUmVnaXN0
ZXJzOyB9CisKKyAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKworICAg
IGJvb2wgZ3Jvdyh1aW50MzJfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWVt
b3J5KTsKKyAgICAgICAgaWYgKG5ld1NpemUgPiBtX2NhcGFjaXR5KQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiAhbXByb3RlY3QobV9tZW1vcnksIG5ld1NpemUs
IFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwgbV9zaXplKTsg
fQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkKiBtX21lbW9yeSB7IG51bGxwdHIgfTsKKyAgICBQ
aW5uZWRSZWdpc3RlckluZm8gbV9waW5uZWRSZWdpc3RlcnM7CisgICAgTW9kZSBtX21vZGU7Cisg
ICAgdWludDMyX3QgbV9zaXplIHsgMCB9OworICAgIHVpbnQzMl90IG1fY2FwYWNpdHkgeyAwIH07
CisgICAgdWludDY0X3QgbV9tYXBwZWRDYXBhY2l0eSB7IDAgfTsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXQVNNCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1MWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKaW5kZXggNWUwNTNh
NWE3OTAzYTU0ZWI4NjQ1NjQ2ODJlM2U5ZDE3MTBiMjE2NC4uZGNkZTc0Y2MxYTUxNGIzMzBjOGZm
MWQ3NmRlNzNlYjExY2YxNDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTI4LDEwICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogCisjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiV0FTTUZv
cm1hdC5oIgogI2luY2x1ZGUgIldBU01PcHMuaCIKICNpbmNsdWRlICJXQVNNU2VjdGlvbnMuaCIK
IAorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FT
TSB7CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTYyLDE1ICs2NSwx
NiBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgdG8gcGFyc2UgbmV4dCBzZWN0aW9uIGF0IG9m
ZnNldDogIiwgbV9vZmZzZXQpOwogCi0gICAgICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rpb24g
PSBTZWN0aW9uczo6VW5rbm93bjsKICAgICAgICAgdWludDhfdCBzZWN0aW9uQnl0ZTsKICAgICAg
ICAgaWYgKCFwYXJzZVVJbnQ3KHNlY3Rpb25CeXRlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2dMbigiU2VjdGlv
biBieXRlOiAiLCBzZWN0aW9uQnl0ZSk7CisKKyAgICAgICAgU2VjdGlvbnM6OlNlY3Rpb24gc2Vj
dGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICBpZiAoc2VjdGlvbkJ5dGUpIHsKLSAg
ICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA+PSBTZWN0aW9uczo6VW5rbm93bikKLSAgICAgICAg
ICAgICAgICBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247Ci0gICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICBpZiAoc2VjdGlvbkJ5dGUgPCBTZWN0aW9uczo6VW5rbm93bikKICAgICAgICAg
ICAgICAgICBzZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VjdGlvbnM6OlNlY3Rpb24+KHNlY3Rpb25C
eXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVpbnQzMl90IHNlY3Rpb25OYW1l
TGVuZ3RoOwpAQCAtOTYsNiArMTAwLDE1IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fb2Zmc2V0ICsgc2VjdGlvbkxlbmd0aDsKIAogICAgICAg
ICBzd2l0Y2ggKHNlY3Rpb24pIHsKKworICAgICAgICBjYXNlIFNlY3Rpb25zOjpNZW1vcnk6IHsK
KyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFy
c2luZyBNZW1vcnkuIik7CisgICAgICAgICAgICBpZiAoIXBhcnNlTWVtb3J5KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIFNlY3Rpb25zOjpGdW5jdGlvblR5cGVzOiB7CiAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgdHlwZXMuIik7CkBA
IC0xNDMsNiArMTU2LDM0IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSgpCit7CisgICAgdWlu
dDhfdCBmbGFnczsKKyAgICBpZiAoIXBhcnNlVmFyVUludDEoZmxhZ3MpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB1aW50MzJfdCBzaXplOworICAgIGlmICghcGFyc2VWYXJVSW50MzIo
c2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2l6ZSA+IG1heFBhZ2VDb3Vu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDMyX3QgY2FwYWNpdHkgPSBtYXhQ
YWdlQ291bnQ7CisgICAgaWYgKGZsYWdzKSB7CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIo
Y2FwYWNpdHkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc2l6ZSA+
IGNhcGFjaXR5IHx8IGNhcGFjaXR5ID4gbWF4UGFnZUNvdW50KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGNhcGFjaXR5ICo9IHBhZ2VTaXplOworICAgIHNpemUgKj0g
cGFnZVNpemU7CisKKyAgICBWZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07Cisg
ICAgbV9tZW1vcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeT4oc2l6ZSwgY2FwYWNpdHksIHBp
bm5lZFNpemVzKTsKKyAgICByZXR1cm4gbV9tZW1vcnktPm1lbW9yeSgpOworfQorCiBib29sIE1v
ZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKIHsKICAgICB1aW50MzJfdCBjb3VudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAppbmRleCA0
NjBiZThmYmIzNmYwMmZhZjRhZDUzOGIxY2U1MmIyZWQ1MTI1NGZkLi43NWU0ZDEwYWRmNjAzNDc3
Mzg3N2MxZWYwYWJkNjFjNGZhMjQ2NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1vZHVsZVBhcnNlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKKyNpbmNsdWRlICJXQVNNTWVtb3J5LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5o
IgogI2luY2x1ZGUgIldBU01QYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00
NSwxOCArNDYsMTkgQEAgcHVibGljOgogCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2UoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25J
bmZvcm1hdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1
bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5jdGlvbkluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbnM7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiYgbWVtb3J5KCkgeyBy
ZXR1cm4gbV9tZW1vcnk7IH0KIAogcHJpdmF0ZToKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBwYXJzZU1lbW9yeSgpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rp
b25UeXBlcygpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25TaWdu
YXR1cmVzKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmlu
aXRpb25zKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvbkRlZmlu
aXRpb24odWludDMyX3QgbnVtYmVyKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJz
ZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFeHByZXNzaW9uKE9w
VHlwZSk7CiAKICAgICBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4gbV9mdW5jdGlvbnM7CiAg
ICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9zaWduYXR1cmVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnk+IG1fbWVtb3J5OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaAppbmRleCA2ZWY1YmQ0ZDE2MGQzMWY3MTAzMTllM2U3
Y2M3NzhmYTRmYzg3N2RjLi42ZDM0ODhjZjQ5ODA0MzNlOTA0YmFlMDA1NDQ0ODM3Y2FkMDAyZTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCkBAIC0xNTksMTMgKzE1OSw0MiBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewogICAgIG1hY3JvKEY2NEd0LCAweDli
LCBPb3BzKSBcCiAgICAgbWFjcm8oRjY0R2UsIDB4OWMsIE9vcHMpCiAKKyNkZWZpbmUgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXAorICAgIG1hY3JvKEkzMkxvYWQ4UywgMHgy
MCwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQ4VSwgMHgyMSwgT29wcykgXAorICAgIG1hY3Jv
KEkzMkxvYWQxNlMsIDB4MjIsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJMb2FkMTZVLCAweDIzLCBP
b3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDhTLCAweDI0LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0
TG9hZDhVLCAweDI1LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDE2UywgMHgyNiwgT29wcykg
XAorICAgIG1hY3JvKEk2NExvYWQxNlUsIDB4MjcsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2Fk
MzJTLCAweDI4LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDMyVSwgMHgyOSwgT29wcykgXAor
ICAgIG1hY3JvKEkzMkxvYWQsIDB4MmEsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkLCAweDJi
LCBPb3BzKSBcCisgICAgbWFjcm8oRjMyTG9hZCwgMHgyYywgT29wcykgXAorICAgIG1hY3JvKEY2
NExvYWQsIDB4MmQsIE9vcHMpCisKKyNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVf
T1AobWFjcm8pIFwKKyAgICBtYWNybyhJMzJTdG9yZTgsIDB4MmUsIE9vcHMpIFwKKyAgICBtYWNy
byhJMzJTdG9yZTE2LCAweDJmLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmU4LCAweDMwLCBP
b3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUxNiwgMHgzMSwgT29wcykgXAorICAgIG1hY3JvKEk2
NFN0b3JlMzIsIDB4MzIsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJTdG9yZSwgMHgzMywgT29wcykg
XAorICAgIG1hY3JvKEk2NFN0b3JlLCAweDM0LCBPb3BzKSBcCisgICAgbWFjcm8oRjMyU3RvcmUs
IDB4MzUsIE9vcHMpIFwKKyAgICBtYWNybyhGNjRTdG9yZSwgMHgzNiwgT29wcykKKwogCiAKICNk
ZWZpbmUgRk9SX0VBQ0hfV0FTTV9PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fU1BFQ0lB
TF9PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBc
CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChtYWNybykgXAotICAgIEZPUl9FQUNIX1dBU01f
QklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSBcCisg
ICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKQogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5h
bWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAKQEAgLTE4OSw2ICsyMTgsMTQgQEAgZW51bSBjbGFz
cyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JF
QVRFX0VOVU1fVkFMVUUpCiB9OwogCitlbnVtIGNsYXNzIExvYWRPcFR5cGUgOiB1aW50OF90IHsK
KyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsK
KworZW51bSBjbGFzcyBTdG9yZU9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9F
TlVNX1ZBTFVFCiAKIGlubGluZSBib29sIGlzQ29udHJvbE9wKE9wVHlwZSBvcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcAppbmRleCA3YmQ2MGQyM2YxMWEyOWFjZTFlMzdh
NjE4NzVmZTRiNWNmMGRiY2I5Li5hMDgzNzM4NTg0ZDU2NjkyNmEyNTIyZGI5MWNkNmM5NGY4ZTZh
NjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUIzSVJH
ZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRl
ICJXQVNNTW9kdWxlUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIApAQCAtNTMs
OCArNTQsOSBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAg
ICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVu
Y3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQs
ICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBh
cnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBpbmZvKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
cGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2UsIG1vZHVsZVBhcnNlci5tZW1vcnkoKS5nZXQoKSwg
aW5mbykpOwogICAgIH0KKyAgICBtZW1vcnkgPSBXVEZNb3ZlKG1vZHVsZVBhcnNlci5tZW1vcnko
KSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTVBsYW4uaAppbmRleCBkM2M5ZTIyYTVhYmExNzI2NDNmMzc5MTYwYzM4YjhlNGI0OTJi
MThjLi5iODQ1ZWUxNDg5NzhmOTYwMTA3NjkwNjQwYTVkMTBiNmZjN2YzNTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgKQEAgLTI5LDIzICsyOSwyMCBAQAogCiAjaW5jbHVk
ZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldBU01G
b3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3BhY2UgQjMgewotY2xh
c3MgQ29tcGlsYXRpb247Ci19IC8vIG5hbWVzcGFjZSBCMwotCi1uYW1lc3BhY2UgV0FTTSB7Citu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00geworY2xhc3MgTWVtb3J5OwogCiAvLyBUT0RP
OiBUaGlzIHNob3VsZCBjcmVhdGUgYSBXQVNNIE1vZHVsZSBub3QgYSBsaXN0IG9mIGZ1bmN0aW9u
cy4KIGNsYXNzIFBsYW4gewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0m
LCBWZWN0b3I8dWludDhfdD4gc291cmNlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
QjM6OkNvbXBpbGF0aW9uPj4gcmVzdWx0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Db21waWxhdGlvbj4+IHJlc3VsdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBt
ZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAppbmRleCA1M2U5MzU2ZTIzOGZhNDJjNWI1ODcxMDk5
MzZiNTcwMDhlN2M2Nzk5Li4wN2M3MmQ0MWQzYmVlZGNkMTcyMzhhOGMyMDA0MjMyNzUxM2I0NmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaApAQCAtMzMsNiAr
MzMsNyBAQCBzdHJ1Y3QgU2VjdGlvbnMgewogICAgIGVudW0gU2VjdGlvbiA6IHVpbnQ4X3Qgewog
ICAgICAgICBGdW5jdGlvblR5cGVzID0gMSwKICAgICAgICAgU2lnbmF0dXJlcyA9IDMsCisgICAg
ICAgIE1lbW9yeSA9IDUsCiAgICAgICAgIERlZmluaXRpb25zID0gMTAsCiAgICAgICAgIFVua25v
d24KICAgICB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCAzZGE2ZGMzYWYzY2JmYTEyZDI1NmY1NTAwZThhMjM5MDQzZTRjYWQyLi5hNGU4
NDkzMTVhN2FjMmIxMGE4YzZiOTA5NTYwNjNmYTYzZWUxYThkIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2
LTEwLTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBXQVNNIE1lbW9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcxMAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBzdG9yZSBhbmQgbG9hZCBvcGNvZGVzIHRvIHdhc20u
anNvbi4gQWRkaXRpb25hbGx5LCBhZGQgbmV3CisgICAgICAgIGVudW1zIGZvciB0aG9zZSBvcGNv
ZGVzIGluIHRoZSBnZW5lcmF0b3IuCisKKyAgICAgICAgKiBzdHJlc3Mvd2FzbS9nZW5lcmF0ZS13
YXNtb3BzLWhlYWRlci5qczoKKyAgICAgICAgKGNvbnN0LnRlbXBsYXRlLnByYWdtYS5vbmNlLkVO
QUJMRS5XRUJBU1NFTUJMWS5pbmNsdWRlLmNzdGRpbnQubmFtZXNwYWNlLkpTQy5uYW1lc3BhY2Uu
V0FTTS5lbnVtLkxvYWRPcFR5cGUpOgorICAgICAgICAoY29uc3QudGVtcGxhdGUucHJhZ21hLm9u
Y2UuRU5BQkxFLldFQkFTU0VNQkxZLmluY2x1ZGUuY3N0ZGludC5uYW1lc3BhY2UuSlNDLm5hbWVz
cGFjZS5XQVNNLmVudW0uU3RvcmVPcFR5cGUpOgorCiAyMDE2LTEwLTE0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdDI2MjogQGlzQ29uc3RydWN0
b3IgaW5jb3JyZWN0bHkgdGhpbmtzIE1hdGguY29zIGlzIGEgY29uc3RydWN0b3IKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMgYi9KU1Rl
c3RzL3N0cmVzcy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzCmluZGV4IGNlNTI4OTcx
OTI3NjRhZDk5ZjU1MTExMTNhY2QyMmViMmEzMTU2ZGUuLjczODViYmYxNjE5NDhkY2IyYzBiOTM3
OTAxOTBhY2Q2Nzg0ZjM4ZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3dhc20vZ2VuZXJh
dGUtd2FzbW9wcy1oZWFkZXIuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvd2FzbS9nZW5lcmF0ZS13
YXNtb3BzLWhlYWRlci5qcwpAQCAtMzYsNiArMzYsMTAgQEAgY29uc3QgZGVmaW5lcyA9IFsKICAg
ICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gb3AuY2F0ZWdvcnkgPT09ICJhcml0aG1ldGljIiAm
JiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09PSAxKSwKICAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9CSU5BUllfT1AobWFjcm8pIiwKICAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9w
LmNhdGVnb3J5ID09PSAiYXJpdGhtZXRpYyIgfHwgb3AuY2F0ZWdvcnkgPT09ICJjb21wYXJpc29u
IikgJiYgb3AucGFyYW1ldGVyLmxlbmd0aCA9PT0gMiksCisgICAgIlxuXG4jZGVmaW5lIEZPUl9F
QUNIX1dBU01fTUVNT1JZX0xPQURfT1AobWFjcm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIo
b3AgPT4gKG9wLmNhdGVnb3J5ID09PSAibWVtb3J5IiAmJiBvcC5yZXR1cm4ubGVuZ3RoID09PSAx
KSksCisgICAgIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3Jv
KSIsCisgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+IChvcC5jYXRlZ29yeSA9PT0gIm1lbW9y
eSIgJiYgb3AucmV0dXJuLmxlbmd0aCA9PT0gMCkpLAogICAgICJcblxuIl0uam9pbigiIik7CiAK
IGNvbnN0IG9wVmFsdWVTZXQgPSBuZXcgU2V0KG9wY29kZUl0ZXJhdG9yKG9wID0+IHRydWUsIG9w
ID0+IG9wY29kZXNbb3BdLnZhbHVlKSgpKTsKQEAgLTk0LDcgKzk4LDkgQEAgJHtkZWZpbmVzfQog
ICAgIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykgXFwKICAgICBGT1JfRUFDSF9XQVNN
X0NPTlRST0xfRkxPV19PUChtYWNybykgXFwKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKG1h
Y3JvKSBcXAotICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKG1hY3JvKQorICAgIEZPUl9FQUNI
X1dBU01fQklOQVJZX09QKG1hY3JvKSBcXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURf
T1AobWFjcm8pIFxcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pCiAK
ICNkZWZpbmUgQ1JFQVRFX0VOVU1fVkFMVUUobmFtZSwgaWQsIGIzb3ApIG5hbWUgPSBpZCwKIApA
QCAtMTE4LDYgKzEyNCwxNCBAQCBlbnVtIGNsYXNzIFVuYXJ5T3BUeXBlIDogdWludDhfdCB7CiAg
ICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKK2VudW0g
Y2xhc3MgTG9hZE9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xP
QURfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9OworCitlbnVtIGNsYXNzIFN0b3JlT3BUeXBlIDog
dWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0VOVU1f
VkFMVUUpCit9OworCiAjdW5kZWYgQ1JFQVRFX0VOVU1fVkFMVUUKIAogaW5saW5lIGJvb2wgaXND
b250cm9sT3AoT3BUeXBlIG9wKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291887</attachid>
            <date>2016-10-17 15:47:09 -0700</date>
            <delta_ts>2016-10-17 16:22:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161710-20161017154336.patch</filename>
            <type>text/plain</type>
            <size>80850</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzExYThhNWE5OWMwNGE1NzM1ZjhhZGZjYjZlYzA5YzVjNzI1MjE2Li5jZTg4ZTdmY2ZkN2Q5YjE3
NDJkNDI3NTk0MDJkMzljMzQxOTIzNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxNi0xMC0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIFdlIHVzZSB0aGUgbmV3IEIzIHBpbm5lZCByZWdp
c3RlciBhcGkgdG8gcGluIHRoZSB2YWx1ZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHRlc3RXQVNNLmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6Y3JlYXRlSlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxl
KToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9X
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZl
bnRpb246Oml0ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6
c2V0dXBDYWxsKToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAg
ICogd2FzbS9XQVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNN
OjpNZW1vcnk6Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAg
ICAgKEpTQzo6V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVt
b3J5OjptZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAg
ICAoSlNDOjpXQVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldB
U006Ok1lbW9yeTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9y
eSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAg
KiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1l
bW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6
UGxhbik6CisgICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNl
Y3Rpb25zLmg6CisKIDIwMTYtMTAtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0RPTUpJVF1bSlNDXSBBZGQgT3B0aW9uOjp1c2VET01KSVQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0NThhMmI0NWJjZWQwNDY5ODQ5ZTA4
YjkwMjA1MWEyNWNiZmNlMmMyLi4xZTkzZDRiZGE3NjBlMzE1ZDE1OTMxMGJmYThiYTdhMGYzMDE3
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NjMsNiArODYzLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL0pTV0FTTU1vZHVsZS5jcHAK
ICAgICB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20vV0FTTUNhbGxpbmdDb252
ZW50aW9uLmNwcAorICAgIHdhc20vV0FTTU1lbW9yeS5jcHAKICAgICB3YXNtL1dBU01Nb2R1bGVQ
YXJzZXIuY3BwCiAgICAgd2FzbS9XQVNNUGxhbi5jcHAKICAgICB3YXNtL1dlYkFzc2VtYmx5T2Jq
ZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCmluZGV4IDgzMWQwOTYwMDQyMWNmYmI0MzE0
MmEzZDk5OWE0ZGM2OTY0OTBiZWYuLmY1NDAxZmM5MmNkYjFiYTNkYjI2YjdhOTZkN2IyY2I1MGNj
NmNlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9U
b29sRXhlY3V0YWJsZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKQEAgLTMxLDYgKzMxLDcgQEAgQ09ERV9T
SUdOX0VOVElUTEVNRU5UU19pb3NfbWluaWRvbSA9IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVf
U0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhaXIgPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBDT0RF
X1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YXBpID0gZW50aXRsZW1lbnRzLnBsaXN0OwogQ09E
RV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGIzID0gZW50aXRsZW1lbnRzLnBsaXN0OworQ09E
RV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdFdBU00gPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBD
T0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0UmVnRXhwID0gZW50aXRsZW1lbnRzLnBsaXN0
OwogCiBTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTkyZTg5MTRkNTNkMDljNDM1MDE1
MTAzYTlmMjQ1ZjhjZDc4OWI4Li5mZjFmOWYwNWI2N2U2YjNhY2MyY2FjMzQ5MGNhYTBiY2EwNzM2
ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxNiw2ICsxMjE2LDggQEAK
IAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1
N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9
OwogCQk1MzRDNDU3RTFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NEM0NTdEMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3Bw
ICovOyB9OwogCQk1MzUyOUE0QzFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTI5QTRCMUM0NTdCNzUw
MDBCNDlDNiAvKiBBUElVdGlscy5oICovOyB9OworCQk1MzU1NTcxNDFEOUQ5RUE1MDA2RDU4M0Ig
LyogV0FTTU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLzsgfTsKKwkJ
NTM1NTU3MTYxRDlERkEzMjAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1NTU3MTUxRDlERkEzMjAwNkQ1ODNC
IC8qIFdBU01NZW1vcnkuY3BwICovOyB9OwogCQk1MzcwQjRGNTFCRjI2MjAyMDA1QzQwRkMgLyog
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGMzFCRjI1RUEyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
Ki87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovOyB9OwogCQk1MzkxN0U3QjFCNzkw
NkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTE3RTdB
MUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0
aW9ucy5oICovOyB9OwpAQCAtMzQ2Myw2ICszNDY1LDggQEAKIAkJNTM0QzQ1N0IxQkM3MjQxMTAw
NzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1lbW9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNTWVtb3J5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBC
NEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01Njk5LDYgKzU3MDMsOCBAQAogCQkJCTUzRjQwRTkwMUQ1OTAz
MDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4
IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV0FT
TUZ1bmN0aW9uUGFyc2VyLmggKi8sCisJCQkJNTM1NTU3MTUxRDlERkEzMjAwNkQ1ODNCIC8qIFdB
U01NZW1vcnkuY3BwICovLAorCQkJCTUzNTU1NzEzMUQ5RDlFQTUwMDZENTgzQiAvKiBXQVNNTWVt
b3J5LmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJz
ZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFy
c2VyLmggKi8sCiAJCQkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAq
LywKQEAgLTc4NzEsNiArNzg3Nyw3IEBACiAJCQkJMTQyRTMxMzgxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0My
QTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAw
MDFDMDdEMiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNTU1NzE0MUQ5RDlF
QTUwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBN0E5ODEz
QUFERkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMkJEMTExQkIz
NEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRB
Nzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTIxMyw2ICs5MjIwLDcgQEAKIAkJCQkwRjVBMTI3MzE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9l
c0dDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBE
RkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVC
IC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM1NTU3MTYxRDlERkEzMjAwNkQ1
ODNCIC8qIFdBU01NZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjE0MzMxQURGMDkw
MTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5
NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKaW5kZXggZDllZDkxZmUxODRkZWFi
MTE3Njk5NWM4YmQ2NjljZmM5ZDhlNGM2ZC4uMmMzYzlmYWI2YjMwYmRmZjlkOTMxZDRhMmE3YWM0
ODY5MDlhZWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCkBAIC0zMiw3ICszMiw5
IEBACiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgogI2luY2x1ZGUgIldB
U01QbGFuLmgiCisKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9MRUJE
ZWNvZGVyLmg+CiAKQEAgLTI0Miw4ICsyNDQsNDY5IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0
cygpCiB7CiAgICAgewogICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1v
ZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAi
aTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMy
KQorICAgICAgICAvLyAgIChpNjQuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRp
KSkKKyAgICAgICAgLy8gICAocmV0dXJuIChpNjQubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAg
ICAgICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAw
eDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQw
LAorICAgICAgICAgICAgMHgwMiwgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMiwgMHgwMywgMHg4Miwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAg
ICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAg
ICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDcz
LCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAg
MHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgw
MSwgMHgxNCwgMHgwMCwgMHgzNCwgMHgwMywgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEs
IDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEg
fHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWls
ZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwg
Ym94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJh
dGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAg
ICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBh
cmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChnZXRf
bG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMyLmxv
YWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAg
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwg
MHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2
MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwg
MHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzMsIDB4MDIsIDB4MDAs
IDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAyLCAweDAwLCAweDA5LCAweDBmCisg
ICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYg
KHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwg
Ym94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxl
CisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0
ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVu
Z3RoIGkzMikgKGxvY2FsICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChp
MzIuY29uc3QgMCkpCisgICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChs
b29wCisgICAgICAgIC8vICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkg
KGdldF9sb2NhbCAkbGVuZ3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIu
YWRkIChnZXRfbG9jYWwgJHApIChpMzIubXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkp
KSAoZ2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5h
ZGQgKGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIg
MCkKKyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAg
ICAgIChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4
MDEsIDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwg
MHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4
MDAsCisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2
LCAweDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAor
ICAgICAgICAgICAgMHg0MCwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgw
MSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAg
ICAgICAgIDB4MGYsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4o
KnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBs
YW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8g
Y29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1l
bW9yeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAg
ICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXpl
b2YodWludDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsK
KyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tf
RVEobWVtb3J5W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAg
ICAgICAgb2Zmc2V0ID0gNSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIGludm9rZTx2b2lk
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBi
b3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAg
ICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zm
c2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206Cisg
ICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAg
Ly8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFt
ICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAg
ICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sK
KyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIu
Z2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAg
ICAgIChpMzIuc3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwgJGkpKSAo
Z2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQg
KGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkK
KyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAg
IChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3Mywg
MHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEs
IDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4
MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAx
LCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAw
eDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3
MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwgMHg4MCwg
MHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAs
CisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAw
eDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAwLAorICAg
ICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwg
MHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9
OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJl
c3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkp
OworCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAgICB1aW50
OF90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgp
KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgxMDApLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0
ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOwor
CisgICAgICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZv
a2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBib3gob2Zm
c2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAx
XSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAg
Ly8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2Fk
OF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAg
ICAgLy8gICAgICAoaTMyLnN0b3JlOCAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQor
ICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChnZXRfbG9jYWwgJHB0cikpKQor
ICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgx
MDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgor
ICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAg
IC8vICAgICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChyZXN1
bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChpMzIuY29uc3QgOCkgKGdldF9s
b2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGkzMi5jb25z
dCA4KSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2
ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMs
IDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAw
eDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMz
LCAweDMyLAorICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwg
MHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwKKyAgICAgICAgICAgIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAs
IDB4MTAsIDB4MDgsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsCisg
ICAgICAgICAgICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAg
ICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNp
emUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJN
b2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0go
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0p
LCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAg
ICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAo
ZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJl
c3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRf
bG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0
cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAweDAxLCAweDAxLCAweDAyLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgtMTIpLCBib3gocGxhbi5t
ZW1vcnktPnNpemUoKSAtIHNpemVvZih1aW50NjRfdCkpIH0pLCAtMTIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAg
ICAgLy8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9z
IikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAg
Ly8gICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAg
IC8vICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAg
KQorICAgICAgICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAg
ICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAg
ICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwg
MHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgw
MCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEs
IDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4
MDAsIDB4MzMsIDB4MDIsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAy
LCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwg
dmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJl
c3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBp
bGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgx
MDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgog
ICAgICAgICAvLyAgICAobW9kdWxlCi0gICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJkdW1i
LWVxIikgKHBhcmFtICR4IGkzMikgKHBhcmFtICR5IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9h
cnJheSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikg
KGxvY2FsICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3Qg
MCkpCisgICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAg
ICAgIC8vICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2Nh
bCAkbGVuZ3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIuYWRkIChnZXRf
bG9jYWwgJHApIChpMzIubXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkpKSAoZ2V0X2xv
Y2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5j
b25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAg
ICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1
cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwg
MHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAs
IDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4
ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAx
LCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAw
eDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3
MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4MCwgMHg4MCwK
KyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAg
ICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAw
eDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAorICAgICAgICAg
ICAgMHg0MCwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwg
MHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAgICAgICAgIDB4
MGYsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0
b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0
WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBj
b3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1lbW9yeSA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgaW52
b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3go
b2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXplb2YodWludDMy
X3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zm
c2V0ID0gNSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3Ro
KSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8v
ICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChm
dW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkzMikg
KHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChzZXRf
bG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAg
Ly8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAoZ2V0
X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChpMzIu
c3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwgJGkpKSAoZ2V0X2xvY2Fs
ICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5jb25z
dCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAgICAg
Ly8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1cm4p
CisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgw
YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAsIDB4
MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMs
IDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAw
eDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAweDcy
LAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3Miwg
MHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwgMHg4MCwgMHg4MCwKKyAg
ICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAgICAg
ICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAweDAx
LCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAwLAorICAgICAgICAgICAg
MHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgw
MywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAgICB1aW50OF90KiBtZW1v
cnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDAp
LCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3Ro
XSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAg
IGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZva2U8dm9pZD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBib3gob2Zmc2V0KSwgYm94
KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7
CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8g
R2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgICht
ZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBh
cmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAg
ICAoaTMyLnN0b3JlOCAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAv
LyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAv
LyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
ciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAs
CisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAg
ICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4Ziwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAg
ICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMs
IDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAw
eDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAx
LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwg
MHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4g
cGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8
fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxl
ZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAx
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAv
LyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAo
ZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChyZXN1bHQgaTMyKQor
ICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChpMzIuY29uc3QgOCkgKGdldF9sb2NhbCAkaSkp
CisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGkzMi5jb25zdCA4KSkpCisg
ICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsIDB4
ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhm
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLCAweDMyLAor
ICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3
MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwKKyAgICAg
ICAgICAgIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4
MDgsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsCisgICAgICAgICAg
ICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAx
IHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFp
bGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkg
fSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0pLCAxKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAo
bW9kdWxlCisgICAgICAgIC8vICAgICAoZnVuYyAiZHVtYi1lcSIgKHBhcmFtICR4IGkzMikgKHBh
cmFtICR5IGkzMikgKHJlc3VsdCBpMzIpCiAgICAgICAgIC8vICAgICAgKGlmIChpMzIuZXEgKGdl
dF9sb2NhbCAkeCkgKGdldF9sb2NhbCAkeSkpCiAgICAgICAgIC8vICAgICAgICh0aGVuIChiciAw
KSkKICAgICAgICAgLy8gICAgICAgKGVsc2UgKHJldHVybiAoaTMyLmNvbnN0IDEpKSkpCkBAIC0y
NjUsMTQgKzcyOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgw
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMiksIGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJv
eCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAxKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDAp
LCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMSk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgy
KSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
MiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAxKTsKICAgICB9
CiAKICAgICB7CkBAIC0zMDYsMTQgKzc2OSwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgx
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgyKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwg
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYp
IH0pLCAwKTsKICAgICB9CiAKIApAQCAtMzMzLDcgKzc5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldB
U01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFz
aC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCA1
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgfSksIDUpOwogICAgIH0KIAogCkBAIC0zNTQsNyArODE3LDcgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7CkBAIC0zNzQsNyArODM3
LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7
CkBAIC0zOTQsNyArODU3LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsK
ICAgICB9CiAKICAgICB7CkBAIC00MTMsMTAgKzg3NiwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNN
VGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCks
IGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXSwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KC0xKSwgYm94KDEpfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWluKCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBi
b3goMSkgfSksIDEwMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgtMSksIGJveCgxKX0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWluKCkpOwogICAgIH0KIAogICAgIHsKQEAgLTQ0Miw4ICs5MDUsOCBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwKSB9KSwgMTApOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMTApIH0pLCAxMCk7CiAgICAgfQogCiAgICAgewpAQCAtNDc4LDEwICs5NDEsMTAg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDApIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMil9KSwgMyk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSB9KSwgNTA1MCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKX0pLCAz
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEwMCkgfSksIDUwNTApOwogICAgIH0KIAogICAgIHsKQEAgLTUyMiwxNCAr
OTg1LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAw
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgy
KSwgYm94KDEpIH0pLCAyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCA0KTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0p
LCAxMik7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMTAwKSwgYm94KDYpIH0pLCA2MDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgxMDApIH0pLCAxMDAwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgwKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMCkgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMiksIGJveCgxKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDIpIH0pLCAyKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDIpLCBib3goMikgfSksIDQpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMTIpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDYpIH0pLCA2MDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDEwMCkgfSks
IDEwMDAwKTsKICAgICB9CiAKICAgICB7CkBAIC01NzUsMTQgKzEwMzgsMTQgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDApOwot
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBi
b3goMikgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEw
MCksIGJveCg2KSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDEpLCBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMSksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveCg2KSB9KSwgMCk7CiAgICAgfQogCiB9CkBAIC01OTYsNyArMTA1OSw2IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpZiAob3B0aW9ucy5tX3J1bkxF
QlRlc3RzKQogICAgICAgICBydW5MRUJUZXN0cygpOwogCi0KICAgICBpZiAob3B0aW9ucy5tX3J1
bldBU01UZXN0cykgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgSlNDOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGI3MWMxYWZhYTk0NDYxNmJhMTdmZWJmYzk1ZWRiY2Fj
NjBkM2NiNC4uOTdlMGQ4YmZlNzQ0YTQ3Njg0YjAxYjAzYWEzYWQyMDlhZTYzZGU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcApAQCAt
MjksMTQgKzI5LDE5IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzRml4U1NBLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIK
ICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXYXNtQWRkcmVzc1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldBU01DYWxs
aW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgorI2luY2x1
ZGUgIldBU01NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogdm9pZCBkdW1w
UHJvY2VkdXJlKHZvaWQqIHB0cikKQEAgLTE2NSwxOCArMTcwLDI1IEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIFZlY3RvcjxWYXJpYWJsZSosIDE+IFJlc3VsdExpc3Q7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJlc3Npb24gPSBudWxscHRyOwogCi0gICAgQjNJ
UkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKKyAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeSosIFByb2Nl
ZHVyZSYpOwogCiAgICAgdm9pZCBhZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+Jik7CiAg
ICAgdm9pZCBhZGRMb2NhbChUeXBlLCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRk
Q29uc3RhbnQoVHlwZSwgdWludDY0X3QpOwogCisgICAgLy8gTG9jYWxzCiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAKKyAgICAvLyBNZW1vcnkKKyAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBsb2FkKExvYWRPcFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCk7CisgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gc3RvcmUoU3RvcmVPcFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpOworCisgICAgLy8gQmFzaWMg
b3BlcmF0b3JzCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYmluYXJ5T3AoQmluYXJ5T3BU
eXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gdW5hcnlPcChVbmFy
eU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAor
ICAgIC8vIENvbnRyb2wgZmxvdwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRCbG9jayhUeXBlIHNpZ25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZExvb3AoVHlwZSBzaWduYXR1cmUpOwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRJZihFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIFR5cGUgc2lnbmF0dXJlKTsK
QEAgLTE5MSwxOCArMjAzLDQxIEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoY29uc3QgVmVjdG9y
PENvbnRyb2xUeXBlPiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVz
c2lvblN0YWNrKTsKIAogcHJpdmF0ZToKKyAgICBFeHByZXNzaW9uVHlwZSBlbWl0Q2hlY2tBbmRQ
cmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIHVp
bnQzMl90IHNpemVPZk9wKTsKKyAgICBFeHByZXNzaW9uVHlwZSBlbWl0TG9hZE9wKExvYWRPcFR5
cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KTsKKyAg
ICB2b2lkIGVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlLCBPcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpOworCiAgICAgdm9p
ZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpOwog
ICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY29uc3QgRXhwcmVzc2lvbkxpc3QmIHJlc3Vs
dFN0YWNrLCBSZXN1bHRMaXN0JiBzdGFjayk7CiAKKyAgICBNZW1vcnkqIG1fbWVtb3J5OwogICAg
IFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAg
IFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIEdQUlJlZyBtX21lbW9yeUJhc2VHUFI7
CisgICAgR1BSUmVnIG1fbWVtb3J5U2l6ZUdQUjsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJH
ZW5lcmF0b3IoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQor
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihNZW1vcnkqIG1lbW9yeSwgUHJvY2VkdXJlJiBw
cm9jZWR1cmUpCisgICAgOiBtX21lbW9yeShtZW1vcnkpCisgICAgLCBtX3Byb2MocHJvY2VkdXJl
KQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICBpZiAo
bV9tZW1vcnkpIHsKKyAgICAgICAgbV9tZW1vcnlCYXNlR1BSID0gbV9tZW1vcnktPnBpbm5lZFJl
Z2lzdGVycygpLmJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBtX3Byb2MucGluUmVnaXN0ZXIo
bV9tZW1vcnlCYXNlR1BSKTsKKyAgICAgICAgQVNTRVJUKCFtX21lbW9yeS0+cGlubmVkUmVnaXN0
ZXJzKCkuc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKKyAgICAgICAgbV9tZW1vcnlTaXpl
R1BSID0gbV9tZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJl
Z2lzdGVyOworICAgICAgICBmb3IgKGNvbnN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8mIGluZm8g
OiBtX21lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycykKKyAgICAgICAgICAg
ICBtX3Byb2MucGluUmVnaXN0ZXIoaW5mby5zaXplUmVnaXN0ZXIpOworICAgIH0KKworICAgIG1f
cHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
R1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5U2l6
ZUdQUiA9PSBwaW5uZWRHUFIpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdW53aW5k
IHRoZSBzdGFjayBhbmQgdGhyb3cgYSBKUyBleGNlcHRpb24uIFNlZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzM1MQorICAgICAgICBqaXQuYnJlYWtwb2ludCgp
OworICAgIH0pOwogfQogCiB2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwg
dWludDMyX3QgY291bnQpCkBAIC0yMjQsMjAgKzI1OSwxODggQEAgdm9pZCBCM0lSR2VuZXJhdG9y
OjphZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+JiB0eXBlcykKICAgICAgICAgfSk7CiB9
CiAKLWJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIEIzSVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQz
Ml90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQorYm9vbCBCM0lSR2VuZXJhdG9yOjpn
ZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICBB
U1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OkdldCwgT3JpZ2luKCksIG1fbG9jYWxz
W2luZGV4XSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJl
c3Npb25UeXBlIHZhbHVlKQogewogICAgIEFTU0VSVChtX2xvY2Fsc1tpbmRleF0pOwogICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6U2V0LCBP
cmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2lubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIo
RXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBzaXplT2ZP
cGVyYXRpb24pCit7CisgICAgQVNTRVJUKG1fbWVtb3J5QmFzZUdQUiAmJiBtX21lbW9yeVNpemVH
UFIpOworICAgIEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOworICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywg
T3JpZ2luKCksIHBvaW50ZXIsIG1fbWVtb3J5U2l6ZUdQUiwgc2l6ZU9mT3BlcmF0aW9uICsgb2Zm
c2V0IC0gMSk7CisgICAgcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgcG9pbnRlcik7CisgICAgcmV0dXJuIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8V2FzbUFkZHJlc3NWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgcG9p
bnRlciwgbV9tZW1vcnlCYXNlR1BSKTsKK30KKworaW5saW5lIHVpbnQzMl90IHNpemVPZkxvYWRP
cChMb2FkT3BUeXBlIG9wKQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5
cGU6OkkzMkxvYWQ4UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4VToKKyAgICBjYXNl
IExvYWRPcFR5cGU6Okk2NExvYWQ4UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4VToK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAg
IGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJMzJMb2FkOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyUzoK
KyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlU6CisgICAgICAgIHJldHVybiA0OworICAg
IGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDoKKyAgICAgICAgcmV0dXJuIDg7CisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJMzJMb2FkMTZVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2VToK
KyAgICBjYXNlIExvYWRPcFR5cGU6OkYzMkxvYWQ6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpGNjRM
b2FkOgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworaW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRP
cFR5cGUgb3AsIE9yaWdpbiBvcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90
IG9mZnNldCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJM
b2FkOFM6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZDhTLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7CisgICAgfQor
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVl
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMs
IG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9
CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4VTogeworICAgICAgICByZXR1cm4gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdp
biwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExv
YWQ4VTogeworICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Wiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOwor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBa
RXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMy
TG9hZDE2UzogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkMTZTLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7CisgICAg
fQorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzogeworICAgICAgICBWYWx1ZSogdmFs
dWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQx
NlMsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAg
ICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ6IHsKKyAgICAgICAgcmV0dXJuIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIs
IG9yaWdpbiwgcG9pbnRlcik7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2Fk
MzJVOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlcik7CisgICAg
ICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQz
Miwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2Fk
MzJTOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlcik7CisgICAg
ICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFNFeHQz
Miwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2Fk
OiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNh
c2UgTG9hZE9wVHlwZTo6RjMyTG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBGbG9hdCwgb3JpZ2luLCBwb2lu
dGVyKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6OkY2NExvYWQ6IHsKKyAgICAgICAg
cmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9h
ZCwgRG91YmxlLCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIC8vIEIzIGRvZXNuJ3Qg
c3VwcG9ydCBMb2FkMTZaIHlldC4KKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlU6Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZVOgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCM0lSR2VuZXJhdG9y
Ojpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQocG9pbnRlci0+dHlw
ZSgpID09IEludDMyKTsKKworICAgIHJlc3VsdCA9IGVtaXRMb2FkT3Aob3AsIE9yaWdpbigpLCBl
bWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihwb2ludGVyLCBvZmZzZXQsIHNpemVPZkxvYWRPcChv
cCkpLCBvZmZzZXQpOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdWludDMyX3Qgc2l6
ZU9mU3RvcmVPcChTdG9yZU9wVHlwZSBvcCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2Fz
ZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU4OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3Jl
ODoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmUxNjoK
KyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTE2OgorICAgICAgICByZXR1cm4gMjsKKyAg
ICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZToKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRT
dG9yZTMyOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6OkYzMlN0b3JlOgorICAgICAgICAgICAgcmV0
dXJuIDQ7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgY2FzZSBTdG9yZU9w
VHlwZTo6RjY0U3RvcmU6CisgICAgICAgIHJldHVybiA4OworICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCisKK2lubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVt
aXRTdG9yZU9wKFN0b3JlT3BUeXBlIG9wLCBPcmlnaW4gb3JpZ2luLCBFeHByZXNzaW9uVHlwZSBw
b2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgdWludDMyX3Qgb2Zmc2V0KQoreworICAgIHN3
aXRjaCAob3ApIHsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTg6CisgICAgICAgIHZh
bHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBUcnVuYywgb3Jp
Z2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisgICAgY2FzZSBTdG9yZU9wVHlw
ZTo6STMyU3RvcmU4OgorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIFN0b3JlOCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlciwgb2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmUxNjoKKyAgICAg
ICAgdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFRydW5j
LCBvcmlnaW4sIHZhbHVlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisKKyAgICBjYXNlIFN0b3Jl
T3BUeXBlOjpJMzJTdG9yZTE2OgorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlMTYsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIsIG9mZnNl
dCk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMzI6
CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisgICAgY2Fz
ZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmU6
CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6RjMyU3RvcmU6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6
RjY0U3RvcmU6CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgU3RvcmUsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
Ym9vbCBCM0lSR2VuZXJhdG9yOjpzdG9yZShTdG9yZU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUg
cG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90IG9mZnNldCkKK3sKKyAgICBB
U1NFUlQocG9pbnRlci0+dHlwZSgpID09IEludDMyKTsKKworICAgIGVtaXRTdG9yZU9wKG9wLCBP
cmlnaW4oKSwgZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIocG9pbnRlciwgb2Zmc2V0LCBzaXpl
T2ZTdG9yZU9wKG9wKSksIHZhbHVlLCBvZmZzZXQpOworICAgIHJldHVybiB0cnVlOworfQorCiBi
b29sIEIzSVJHZW5lcmF0b3I6OnVuYXJ5T3AoVW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBl
IGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNPcChvcCksIE9yaWdpbigpLCBhcmcp
OwpAQCAtNDAzLDEwICs2MDYsNjkgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpkdW1wKGNvbnN0IFZl
Y3RvcjxDb250cm9sVHlwZT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2kKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gcGFyc2VB
bmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIEZ1bmN0aW9uSW5mb3Jt
YXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q29tcGlsYXRpb24+IGNyZWF0ZUpTV3JhcHBlcihWTSYgdm0sIGNvbnN0IFNpZ25hdHVyZSogc2ln
bmF0dXJlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkZ1bmN0aW9uLCBNZW1vcnkqIG1lbW9y
eSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgIC8vIENoZWNrIGFyZ3VtZW50IGNvdW50IGlzIHNhbmUuCisgICAg
VmFsdWUqIGZyYW1lUG9pbnRlciA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBC
Mzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSk7CisgICAgVmFsdWUqIG9mZlNldE9mQXJndW1lbnRD
b3VudCA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpOworICAgIFZhbHVl
KiBhcmd1bWVudENvdW50ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCBmcmFtZVBvaW50ZXIsIG9mZlNldE9mQXJndW1lbnRDb3VudCkpOwor
CisgICAgVmFsdWUqIGV4cGVjdGVkQXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpKTsK
KworICAgIENoZWNrVmFsdWUqIGFyZ3VtZW50Q291bnRDaGVjayA9IGJsb2NrLT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICBibG9jay0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBYm92ZSwgT3JpZ2luKCksIGV4cGVjdGVkQXJndW1lbnRDb3VudCwg
YXJndW1lbnRDb3VudCkpOworICAgIGFyZ3VtZW50Q291bnRDaGVjay0+c2V0R2VuZXJhdG9yKFtd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgIH0pOworCisgICAgLy8gTW92ZSBtZW1vcnkg
dmFsdWVzIHRvIHRoZSBhcHByb3JpYXRlIHBsYWNlcywgaWYgbmVlZGVkLgorICAgIFZhbHVlKiBi
YXNlTWVtb3J5ID0gbnVsbHB0cjsKKyAgICBWZWN0b3I8VmFsdWUqPiBzaXplczsKKyAgICBpZiAo
bWVtb3J5KSB7CisgICAgICAgIGJhc2VNZW1vcnkgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBtZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgVmFsdWUq
IHNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwg
T3JpZ2luKCksCisgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KG1lbW9yeSkgKyBNZW1vcnk6Om9mZnNl
dE9mU2l6ZSgpKSk7CisgICAgICAgIHNpemVzLnJlc2VydmVDYXBhY2l0eShtZW1vcnktPnBpbm5l
ZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGlu
Zm8gOiBtZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnMpIHsKKyAgICAgICAg
ICAgIHNpemVzLmFwcGVuZChibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBzaXplLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgaW5mby5zaXplT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gR2V0IG91ciBhcmd1bWVudHMuCisgICAgVmVjdG9yPFZhbHVlKj4gYXJndW1lbnRz
OworICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkuaXRlcmF0ZShzaWduYXR1cmUtPmFyZ3VtZW50
cywgcHJvYywgYmxvY2ssIE9yaWdpbigpLCBbJl0gKFZhbHVlKiBhcmd1bWVudCwgdW5zaWduZWQp
IHsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgfSk7CisKKyAgICAv
LyBNb3ZlIHRoZSBhcmd1bWVudHMgaW50byBwbGFjZS4KKyAgICBWYWx1ZSogcmVzdWx0ID0ganNj
Q2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwocHJvYywgYmxvY2ssIE9yaWdpbigpLCBtYWlu
RnVuY3Rpb24sIGFyZ3VtZW50cywgdG9CM1R5cGUoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKSwgWyZd
IChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKG1lbW9yeSkgewor
ICAgICAgICAgICAgQVNTRVJUKHNpemVzLnNpemUoKSA9PSBtZW1vcnktPnBpbm5lZFJlZ2lzdGVy
cygpLnNpemVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGJhc2VNZW1vcnksIFZhbHVlUmVwOjpyZWcobWVtb3J5LT5waW5u
ZWRSZWdpc3RlcnMoKS5iYXNlTWVtb3J5UG9pbnRlcikpKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzaXplc1tpXSwgVmFsdWVSZXA6OnJlZyht
ZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbaV0uc2l6ZVJlZ2lzdGVyKSkp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCwgaWYgbmVl
ZGVkLgorICAgIGlmIChzaWduYXR1cmUtPnJldHVyblR5cGUgIT0gVm9pZCkKKyAgICAgICAgYmxv
Y2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBCMzo6UmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICBlbHNlCisgICAgICAgIGJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgQjM6OlJldHVybiwgT3JpZ2luKCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q29tcGlsYXRpb24+KHZtLCBwcm9jKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29t
cGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNl
LCBNZW1vcnkqIG1lbW9yeSwgRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRM
ZXZlbCkKIHsKICAgICBQcm9jZWR1cmUgcHJvY2VkdXJlOwotICAgIEIzSVJHZW5lcmF0b3IgY29u
dGV4dChwcm9jZWR1cmUpOworICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChtZW1vcnksIHByb2Nl
ZHVyZSk7CiAgICAgRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGNvbnRleHQs
IHNvdXJjZSwgaW5mbyk7CiAgICAgaWYgKCFwYXJzZXIucGFyc2UoKSkKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQxNyw3ICs2NzksMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4m
IHNvdXJjZSwgRnUKICAgICBmaXhTU0EocHJvY2VkdXJlKTsKICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKKyAgICBh
dXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb25Db21waWxhdGlvbj4oKTsKKwor
ICAgIHJlc3VsdC0+Y29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9j
ZWR1cmUsIG9wdExldmVsKTsKKyAgICByZXN1bHQtPmpzRW50cnlQb2ludCA9IGNyZWF0ZUpTV3Jh
cHBlcih2bSwgaW5mby5zaWduYXR1cmUsIHJlc3VsdC0+Y29kZS0+Y29kZSgpLCBtZW1vcnkpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaAppbmRleCA5NTE5
NmRiZTU3N2RhYWZhYmE5NzhhNTYwNGM5MDZjZDY1NWJmYzgzLi5mODI4MmQwYzk1NWMyNmY3ZTdj
MDEyNDU3OTdiOTkxNmQ0ZGI5MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01CM0lSR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDkgQEAgZXh0ZXJuICJDIiB2b2lkIGR1
bXBQcm9jZWR1cmUodm9pZCopOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBW
ZWN0b3I8dWludDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNpZ25lZCBvcHRMZXZlbCA9
IDEpOworY2xhc3MgTWVtb3J5OworCitzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlv
bj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+JiwgTWVtb3J5KiwgRnVuY3Rp
b25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OldBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uaAppbmRleCA3ODk1OTMxMDI0YTUzZDY3ZDVjNzliOTQ0ZWNmMmIyYjUy
YWIxNzQ1Li42MTM1ZjczNzA1YWU5YjZiYTAwMDQ5ZjRjMjA2NGVkOWVhN2U1MGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaApA
QCAtMjcsMjMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRl
ICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50
UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJCM0NvbnN0
NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkIz
TWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV0FTTSB7CiAKLXR5cGVkZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1
bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwordHlwZWRlZiB1bnNpZ25lZCAoKk5l
eHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBlIHR5cGUpOwogCi10ZW1w
bGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRlT2Zmc2V0PgordGVtcGxhdGU8
dW5zaWduZWQgaGVhZGVyU2l6ZSwgTmV4dE9mZnNldCB1cGRhdGVPZmZzZXQ+CiBjbGFzcyBDYWxs
aW5nQ29udmVudGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhlYWRl
clNpemUgPSBvZmZzZXQ7Ci0KICAgICBDYWxsaW5nQ29udmVudGlvbihWZWN0b3I8R1BSUmVnPiYm
IHJlZ2lzdGVyQXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNhdmVSZWdpc3RlcnMpCiAg
ICAgICAgIDogbV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3VtZW50cykKICAgICAgICAg
LCBtX2NhbGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVycykKQEAgLTY0LDE4ICs2
OCw1NSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQjM6OlZhbHVlKiBhZGRyZXNzID0gYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KHByb2MsIEIzOjpBZGQsIG9yaWdpbiwgZnJhbWVQb2lu
dGVyLAogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdDY0VmFs
dWU+KHByb2MsIG9yaWdpbiwgY3VycmVudE9mZnNldCkpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KHByb2MsIEIzOjpMb2FkLCB0
b0IzVHlwZShhcmd1bWVudFR5cGVzW2ldKSwgb3JpZ2luLCBhZGRyZXNzKTsKLSAgICAgICAgICAg
ICAgICBjdXJyZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJlbnRPZmZzZXQsIGFyZ3VtZW50
VHlwZXNbaV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSB1cGRhdGVPZmZzZXQo
Y3VycmVudE9mZnNldCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEIzOjpWYWx1ZSogc2V0dXBDYWxs
KEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9jaywgQjM6Ok9yaWdpbiBv
cmlnaW4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQsIGNvbnN0IFZlY3RvcjxCMzo6VmFs
dWUqPiYgYXJndW1lbnRzLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBjb25zdCBGdW5jdG9yJiBwYXRj
aHBvaW50RnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHNpemVfdCBzdGFja0FyZ3VtZW50
Q291bnQgPSBhcmd1bWVudHMuc2l6ZSgpIDwgbV9yZWdpc3RlckFyZ3VtZW50cy5zaXplKCkgPyAw
IDogYXJndW1lbnRzLnNpemUoKSAtIG1fcmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpOworICAgICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSBoZWFkZXJTaXplIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
OworCisgICAgICAgIHByb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMoV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgaGVhZGVyU2l6ZSArIChzdGFj
a0FyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSkpOworICAgICAgICBWZWN0b3I8QjM6
OkNvbnN0cmFpbmVkVmFsdWU+IGNvbnN0cmFpbmVkQXJndW1lbnRzOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBC
Mzo6VmFsdWVSZXAgcmVwOworICAgICAgICAgICAgaWYgKGkgPCBtX3JlZ2lzdGVyQXJndW1lbnRz
LnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXAgPSBCMzo6VmFsdWVSZXA6OnJlZyhtX3JlZ2lz
dGVyQXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXAg
PSBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0KTsKKyAgICAgICAgICAgIGNvbnN0
cmFpbmVkQXJndW1lbnRzLmFwcGVuZChCMzo6Q29uc3RyYWluZWRWYWx1ZShhcmd1bWVudHNbaV0s
IHJlcCkpOworICAgICAgICAgICAgb2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KG9mZnNldCwgYXJndW1l
bnRzW2ldLT50eXBlKCkpOworICAgICAgICB9CisKKyAgICAgICAgQjM6OlBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgcmV0dXJuVHlwZSwgb3JpZ2luKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kVmVjdG9y
KGNvbnN0cmFpbmVkQXJndW1lbnRzKTsKKyAgICAgICAgcGF0Y2hwb2ludEZ1bmN0b3IocGF0Y2hw
b2ludCk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CisgICAgICAg
ICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKHRhcmdldC5leGVj
dXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgaWYgKHJldHVyblR5cGUgPT0gQjM6OlZvaWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gQjM6OlZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICByZXR1cm4gcGF0Y2hwb2lu
dDsKKyAgICB9CisKICAgICBjb25zdCBWZWN0b3I8R1BSUmVnPiBtX3JlZ2lzdGVyQXJndW1lbnRz
OwogICAgIGNvbnN0IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBjb25z
dCBSZWdpc3RlclNldCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7CiB9OwogCi1pbmxpbmUgdW5zaWdu
ZWQgbmV4dEpTQ09mZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlKQoraW5saW5lIHVu
c2lnbmVkIG5leHRKU0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgQjM6OlR5cGUpCiB7
CiAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCmluZGV4IDdhMDQxMzdlM2M3MGYxODI0NzEw
YWNkOTg4NDdmNzIxNTYyNGQwMWQuLjFlMTA4MTBkM2ZmNmVlMGE4NzY0YjMyYjM2ZTgwNTZkZDM0
NWE2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkIzQ29tcGls
YXRpb24uaCIKICNpbmNsdWRlICJCM1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMjYsNiArMTI3LDExIEBAIHN0cnVj
dCBGdW5jdGlvbkluZm9ybWF0aW9uIHsKICAgICBzaXplX3QgZW5kOwogfTsKIAorc3RydWN0IEZ1
bmN0aW9uQ29tcGlsYXRpb24geworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+
IGNvZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4ganNFbnRyeVBvaW50
OworfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
dW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9u
UGFyc2VyLmgKaW5kZXggYWU4NzQyNDBjOTIyOGQyZDgzOTc0NDZlMTU4N2EyZDQ0NjkxZmEzZC4u
NDQ3MWEyY2Y1NzE3ODE4MjU5NTI0MmQwMzk0ZjQ3NjllNzllM2JjNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTE1NCw2ICsxNTQs
MzcgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlw
ZSBvcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgRk9SX0VBQ0hfV0FTTV9N
RU1PUllfTE9BRF9PUChDUkVBVEVfQ0FTRSkgeworICAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQ7
CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoYWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmICghcGFy
c2VWYXJVSW50MzIob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsK
KyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAgICAgICBpZiAoIW1fY29udGV4dC5s
b2FkKHN0YXRpY19jYXN0PExvYWRPcFR5cGU+KG9wKSwgcG9pbnRlciwgcmVzdWx0LCBvZmZzZXQp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5h
cHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpIHsKKyAgICAgICAgdWludDMyX3Qg
YWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFsaWdubWVudCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0OworICAgICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJlc3Npb25TdGFjay50YWtl
TGFzdCgpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBwb2ludGVyID0gbV9leHByZXNzaW9uU3Rh
Y2sudGFrZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5zdG9yZShzdGF0aWNfY2Fz
dDxTdG9yZU9wVHlwZT4ob3ApLCBwb2ludGVyLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAgdWludDMyX3QgY29uc3RhbnQ7CiAg
ICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTWVtb3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2VjOTU3ZjYzMDI5MDkxYjc5MGE2
ZjIwMTNjNjI2ZmU3MDIyOWM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXQVNNTWVtb3J5LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK01lbW9yeTo6TWVtb3J5KHVpbnQzMl90IHN0YXJ0
aW5nU2l6ZSwgdWludDMyX3QgY2FwYWNpdHksIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHBpbm5l
ZFNpemVSZWdpc3RlcnMpCisgICAgOiBtX21vZGUoTW9kZTo6Qm91bmRzQ2hlY2tpbmcpCisgICAg
LCBtX3NpemUoc3RhcnRpbmdTaXplKQorICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKKyAgICAv
LyBGSVhNRTogSWYgd2UgYWRkIHNpZ25hbCBiYXNlZCBib3VuZHMgY2hlY2tpbmcgdGhlbiB3ZSBu
ZWVkIGV4dHJhIHNwYWNlIGZvciBvdmVyZmxvdyBvbiBsb2FkLgorICAgIC8vIHNlZTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjY5MworICAgICwgbV9tYXBwZWRD
YXBhY2l0eShzdGF0aWNfY2FzdDx1aW50NjRfdD4obWF4UGFnZUNvdW50KSAqIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihwYWdlU2l6ZSkpCit7CisgICAgQVNTRVJUKHBpbm5lZFNpemVSZWdpc3RlcnMu
c2l6ZSgpID4gMCk7CisKKyAgICB2b2lkKiByZXN1bHQgPSBtbWFwKG51bGxwdHIsIG1fbWFwcGVk
Q2FwYWNpdHksIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgMCwgMCk7CisgICAg
aWYgKHJlc3VsdCA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIC8vIFRyeSBhZ2FpbiB3aXRoIGEg
ZGlmZmVyZW50IG51bWJlci4KKyAgICAgICAgbV9tYXBwZWRDYXBhY2l0eSA9IG1fY2FwYWNpdHk7
CisgICAgICAgIHJlc3VsdCA9IG1tYXAobnVsbHB0ciwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9O
T05FLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PSBNQVBfRkFJTEVEKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcHJv
dGVjdChyZXN1bHQsIHN0YXJ0aW5nU2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKKyAg
ICAgICAgbXVubWFwKHJlc3VsdCwgbV9tYXBwZWRDYXBhY2l0eSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRT
aXplUmVnaXN0ZXJzLnNpemUoKSArIDE7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2Nh
bGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAgR1BSUmVn
IGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMg
fHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgeworICAg
ICAgICAgICAgbV9waW5uZWRSZWdpc3RlcnMuYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7CisgICAg
ICAgICAgICByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMtLTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBtX3Bpbm5lZFJlZ2lzdGVycy5zaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlu
bmVkU2l6ZVJlZ2lzdGVyc1stLXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyAtIDFdIH0pOworICAg
IH0pOworCisgICAgQVNTRVJUKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpOworICAgIG1fbWVt
b3J5ID0gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworfSAvLyBuYW1lc3BhY2Ug
V0FTTQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTU1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMTdhZWYwMGEwZDk4NTIxMzFmZWQ0MzFl
YjkwM2ZiNjgwY2Y3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNTWVtb3J5LmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisjaW5jbHVkZSAiV0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCisKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7CisKK3N0
cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvIHsKKyAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyOwor
ICAgIHVuc2lnbmVkIHNpemVPZmZzZXQ7Cit9OworCisvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBv
cnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3Rlci4gUmlnaHQgbm93IHdlIHRha2Ug
YSB2ZWN0b3Igd2l0aCBvbmx5IG9uZQorLy8gZW50cnkuIFNwZWNpZmljYWxseSBhbiBleHRyeSB3
aGVyZSB0aGUgc2l6ZU9mZnNldCA9PSAwLiBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc2l6ZSBy
ZWdpc3RlciwKKy8vIHdlIGNhbiBoYXZlIG9uZSBmb3IgZWFjaCBsb2FkIHNpemUgY2xhc3MuIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1Mgorc3RydWN0
IFBpbm5lZFJlZ2lzdGVySW5mbyB7CisgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+
IHNpemVSZWdpc3RlcnM7CisgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworfTsKKworY29u
c3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKK2NvbnN0ZXhwciB1aW50MzJfdCBt
YXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNp
emUpOworCitjbGFzcyBNZW1vcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lbW9yeSk7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHN1cHBvcnQgb3RoZXIgbW9kZXMuIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjY5MworICAgIGVudW0gY2xhc3MgTW9kZSB7CisgICAgICAg
IEJvdW5kc0NoZWNraW5nCisgICAgfTsKKworICAgIE1lbW9yeSgpID0gZGVmYXVsdDsKKyAgICBN
ZW1vcnkodWludDMyX3Qgc3RhcnRpbmdTaXplLCB1aW50MzJfdCBjYXBhY2l0eSwgY29uc3QgVmVj
dG9yPHVuc2lnbmVkPiYgcGlubmVkU2l6ZVJlZ2lzdGVycyk7CisKKyAgICB+TWVtb3J5KCkKKyAg
ICB7CisgICAgICAgIGlmIChtX21lbW9yeSkKKyAgICAgICAgICAgIG11bm1hcChtX21lbW9yeSwg
bV9tYXBwZWRDYXBhY2l0eSk7CisgICAgfQorCisgICAgdm9pZCogbWVtb3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZW1vcnk7IH0KKyAgICB1aW50MzJfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdpc3RlcnMoKSBj
b25zdCB7IHJldHVybiBtX3Bpbm5lZFJlZ2lzdGVyczsgfQorCisgICAgTW9kZSBtb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2RlOyB9CisKKyAgICBib29sIGdyb3codWludDMyX3QgbmV3U2l6ZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX21lbW9yeSk7CisgICAgICAgIGlmIChuZXdTaXplID4g
bV9jYXBhY2l0eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4g
IW1wcm90ZWN0KG1fbWVtb3J5LCBuZXdTaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihNZW1vcnksIG1fc2l6ZSk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCog
bV9tZW1vcnkgeyBudWxscHRyIH07CisgICAgUGlubmVkUmVnaXN0ZXJJbmZvIG1fcGlubmVkUmVn
aXN0ZXJzOworICAgIE1vZGUgbV9tb2RlOworICAgIHVpbnQzMl90IG1fc2l6ZSB7IDAgfTsKKyAg
ICB1aW50MzJfdCBtX2NhcGFjaXR5IHsgMCB9OworICAgIHVpbnQ2NF90IG1fbWFwcGVkQ2FwYWNp
dHkgeyAwIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01N
b2R1bGVQYXJzZXIuY3BwCmluZGV4IDVlMDUzYTVhNzkwM2E1NGViODY0NTY0NjgyZTNlOWQxNzEw
YjIxNjQuLmRjZGU3NGNjMWE1MTRiMzMwYzhmZjFkNzZkZTczZWIxMWNmMTQzMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCkBAIC0yOCwx
MCArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkpTV0FT
TU1vZHVsZS5oIgogI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlICJXQVNNT3BzLmgi
CiAjaW5jbHVkZSAiV0FTTVNlY3Rpb25zLmgiCiAKKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CkBAIC02MiwxNSArNjUsMTYgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNl
KCkKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIlN0YXJ0aW5n
IHRvIHBhcnNlIG5leHQgc2VjdGlvbiBhdCBvZmZzZXQ6ICIsIG1fb2Zmc2V0KTsKIAotICAgICAg
ICBTZWN0aW9uczo6U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247CiAgICAgICAg
IHVpbnQ4X3Qgc2VjdGlvbkJ5dGU7CiAgICAgICAgIGlmICghcGFyc2VVSW50NyhzZWN0aW9uQnl0
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICBkYXRhTG9nTG4oIlNlY3Rpb24gYnl0ZTogIiwgc2VjdGlvbkJ5dGUpOworCisg
ICAgICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93bjsKICAg
ICAgICAgaWYgKHNlY3Rpb25CeXRlKSB7Ci0gICAgICAgICAgICBpZiAoc2VjdGlvbkJ5dGUgPj0g
U2VjdGlvbnM6OlVua25vd24pCi0gICAgICAgICAgICAgICAgc2VjdGlvbiA9IFNlY3Rpb25zOjpV
bmtub3duOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHNlY3Rpb25CeXRlIDwg
U2VjdGlvbnM6OlVua25vd24pCiAgICAgICAgICAgICAgICAgc2VjdGlvbiA9IHN0YXRpY19jYXN0
PFNlY3Rpb25zOjpTZWN0aW9uPihzZWN0aW9uQnl0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICB1aW50MzJfdCBzZWN0aW9uTmFtZUxlbmd0aDsKQEAgLTk2LDYgKzEwMCwxNSBAQCBi
b29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICB1bnNpZ25lZCBlbmQgPSBtX29mZnNl
dCArIHNlY3Rpb25MZW5ndGg7CiAKICAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7CisKKyAgICAg
ICAgY2FzZSBTZWN0aW9uczo6TWVtb3J5OiB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgTWVtb3J5LiIpOworICAgICAgICAgICAg
aWYgKCFwYXJzZU1lbW9yeSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTZWN0aW9uczo6RnVuY3Rp
b25UeXBlczogewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJQYXJzaW5nIHR5cGVzLiIpOwpAQCAtMTQzLDYgKzE1NiwzNCBAQCBib29sIE1vZHVs
ZVBhcnNlcjo6cGFyc2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIE1vZHVsZVBhcnNl
cjo6cGFyc2VNZW1vcnkoKQoreworICAgIHVpbnQ4X3QgZmxhZ3M7CisgICAgaWYgKCFwYXJzZVZh
clVJbnQxKGZsYWdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDMyX3Qgc2l6
ZTsKKyAgICBpZiAoIXBhcnNlVmFyVUludDMyKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKHNpemUgPiBtYXhQYWdlQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHVpbnQzMl90IGNhcGFjaXR5ID0gbWF4UGFnZUNvdW50OworICAgIGlmIChmbGFncykgewor
ICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNhcGFjaXR5KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKHNpemUgPiBjYXBhY2l0eSB8fCBjYXBhY2l0eSA+IG1heFBh
Z2VDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjYXBhY2l0
eSAqPSBwYWdlU2l6ZTsKKyAgICBzaXplICo9IHBhZ2VTaXplOworCisgICAgVmVjdG9yPHVuc2ln
bmVkPiBwaW5uZWRTaXplcyA9IHsgMCB9OworICAgIG1fbWVtb3J5ID0gc3RkOjptYWtlX3VuaXF1
ZTxNZW1vcnk+KHNpemUsIGNhcGFjaXR5LCBwaW5uZWRTaXplcyk7CisgICAgcmV0dXJuIG1fbWVt
b3J5LT5tZW1vcnkoKTsKK30KKwogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBl
cygpCiB7CiAgICAgdWludDMyX3QgY291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmgKaW5kZXggNDYwYmU4ZmJiMzZmMDJmYWY0YWQ1MzhiMWNlNTJi
MmVkNTEyNTRmZC4uNzVlNGQxMGFkZjYwMzQ3NzM4NzdjMWVmMGFiZDYxYzRmYTI0NjRkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiV0FTTU1l
bW9yeS5oIgogI2luY2x1ZGUgIldBU01PcHMuaCIKICNpbmNsdWRlICJXQVNNUGFyc2VyLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDUsMTggKzQ2LDE5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8RnVu
Y3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9uSW5mb3JtYXRpb24oKSB7IHJldHVybiBtX2Z1bmN0
aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25J
bmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeT4mIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5OyB9CiAKIHByaXZhdGU6
CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VNZW1vcnkoKTsKICAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlwZXMoKTsKICAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpOwogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9ucygpOwogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKHVpbnQzMl90IG51bWJlcik7Ci0gICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOwotICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9u
SW5mb3JtYXRpb24+IG1fZnVuY3Rpb25zOwogICAgIFZlY3RvcjxTaWduYXR1cmU+IG1fc2lnbmF0
dXJlczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5PiBtX21lbW9yeTsKIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNT3BzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKaW5k
ZXggNmVmNWJkNGQxNjBkMzFmNzEwMzE5ZTNlN2NjNzc4ZmE0ZmM4NzdkYy4uNmQzNDg4Y2Y0OTgw
NDMzZTkwNGJhZTAwNTQ0NDgzN2NhZDAwMmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTU9wcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01PcHMuaApAQCAtMTU5LDEzICsxNTksNDIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
QVNNIHsKICAgICBtYWNybyhGNjRHdCwgMHg5YiwgT29wcykgXAogICAgIG1hY3JvKEY2NEdlLCAw
eDljLCBPb3BzKQogCisjZGVmaW5lIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AobWFjcm8p
IFwKKyAgICBtYWNybyhJMzJMb2FkOFMsIDB4MjAsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJMb2Fk
OFUsIDB4MjEsIE9vcHMpIFwKKyAgICBtYWNybyhJMzJMb2FkMTZTLCAweDIyLCBPb3BzKSBcCisg
ICAgbWFjcm8oSTMyTG9hZDE2VSwgMHgyMywgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQ4Uywg
MHgyNCwgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQ4VSwgMHgyNSwgT29wcykgXAorICAgIG1h
Y3JvKEk2NExvYWQxNlMsIDB4MjYsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMTZVLCAweDI3
LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDMyUywgMHgyOCwgT29wcykgXAorICAgIG1hY3Jv
KEk2NExvYWQzMlUsIDB4MjksIE9vcHMpIFwKKyAgICBtYWNybyhJMzJMb2FkLCAweDJhLCBPb3Bz
KSBcCisgICAgbWFjcm8oSTY0TG9hZCwgMHgyYiwgT29wcykgXAorICAgIG1hY3JvKEYzMkxvYWQs
IDB4MmMsIE9vcHMpIFwKKyAgICBtYWNybyhGNjRMb2FkLCAweDJkLCBPb3BzKQorCisjZGVmaW5l
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKSBcCisgICAgbWFjcm8oSTMyU3Rv
cmU4LCAweDJlLCBPb3BzKSBcCisgICAgbWFjcm8oSTMyU3RvcmUxNiwgMHgyZiwgT29wcykgXAor
ICAgIG1hY3JvKEk2NFN0b3JlOCwgMHgzMCwgT29wcykgXAorICAgIG1hY3JvKEk2NFN0b3JlMTYs
IDB4MzEsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZTMyLCAweDMyLCBPb3BzKSBcCisgICAg
bWFjcm8oSTMyU3RvcmUsIDB4MzMsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZSwgMHgzNCwg
T29wcykgXAorICAgIG1hY3JvKEYzMlN0b3JlLCAweDM1LCBPb3BzKSBcCisgICAgbWFjcm8oRjY0
U3RvcmUsIDB4MzYsIE9vcHMpCisKIAogCiAjZGVmaW5lIEZPUl9FQUNIX1dBU01fT1AobWFjcm8p
IFwKICAgICBGT1JfRUFDSF9XQVNNX1NQRUNJQUxfT1AobWFjcm8pIFwKICAgICBGT1JfRUFDSF9X
QVNNX0NPTlRST0xfRkxPV19PUChtYWNybykgXAogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1Ao
bWFjcm8pIFwKLSAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykKKyAgICBGT1JfRUFD
SF9XQVNNX0JJTkFSWV9PUChtYWNybykgXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURf
T1AobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykKIAog
I2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCkBA
IC0xODksNiArMjE4LDE0IEBAIGVudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAg
ICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBj
bGFzcyBMb2FkT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9B
RF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5cGUgOiB1
aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfRU5VTV9W
QUxVRSkKK307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9vbCBpc0Nv
bnRyb2xPcChPcFR5cGUgb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAK
aW5kZXggN2JkNjBkMjNmMTFhMjlhY2UxZTM3YTYxODc1ZmU0YjVjZjBkYmNiOS4uYTA4MzczODU4
NGQ1NjY5MjZhMjUyMmRiOTFjZDZjOTRmOGU2YTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01QbGFuLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQjNDb21waWxh
dGlvbi5oIgogI2luY2x1ZGUgIldBU01CM0lSR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiV0FTTUNh
bGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV0FTTU1vZHVsZVBhcnNlci5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRhTG9nLmg+CiAKQEAgLTUzLDggKzU0LDkgQEAgUGxhbjo6UGxhbihWTSYgdm0s
IFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpCiAgICAgZm9yIChjb25zdCBGdW5jdGlvbkluZm9ybWF0
aW9uJiBpbmZvIDogbW9kdWxlUGFyc2VyLmZ1bmN0aW9uSW5mb3JtYXRpb24oKSkgewogICAgICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vzc2luZyBmdW5jaW9u
IHN0YXJ0aW5nIGF0OiAiLCBpbmZvLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGluZm8uZW5k
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIHNvdXJjZSwgaW5m
bykpOworICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBt
b2R1bGVQYXJzZXIubWVtb3J5KCkuZ2V0KCksIGluZm8pKTsKICAgICB9CisgICAgbWVtb3J5ID0g
V1RGTW92ZShtb2R1bGVQYXJzZXIubWVtb3J5KCkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmgKaW5kZXggZDNjOWUyMmE1
YWJhMTcyNjQzZjM3OTE2MGMzOGI4ZTRiNDkyYjE4Yy4uYjg0NWVlMTQ4OTc4Zjk2MDEwNzY5MDY0
MGE1ZDEwYjZmYzdmMzU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oCkBA
IC0yOSwyMyArMjksMjAgQEAKIAogI2luY2x1ZGUgIkNvbXBpbGF0aW9uUmVzdWx0LmgiCiAjaW5j
bHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2Ug
SlNDIHsKLQotbmFtZXNwYWNlIEIzIHsKLWNsYXNzIENvbXBpbGF0aW9uOwotfSAvLyBuYW1lc3Bh
Y2UgQjMKLQotbmFtZXNwYWNlIFdBU00geworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNN
IHsKK2NsYXNzIE1lbW9yeTsKIAogLy8gVE9ETzogVGhpcyBzaG91bGQgY3JlYXRlIGEgV0FTTSBN
b2R1bGUgbm90IGEgbGlzdCBvZiBmdW5jdGlvbnMuCiBjbGFzcyBQbGFuIHsKIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSk7CiAK
LSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4+IHJlc3VsdDsKKyAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+PiByZXN1bHQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeT4gbWVtb3J5OwogfTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01T
ZWN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmgKaW5k
ZXggNTNlOTM1NmUyMzhmYTQyYzViNTg3MTA5OTM2YjU3MDA4ZTdjNjc5OS4uMDdjNzJkNDFkM2Jl
ZWRjZDE3MjM4YThjMjAwNDIzMjc1MTNiNDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTVNlY3Rpb25zLmgKQEAgLTMzLDYgKzMzLDcgQEAgc3RydWN0IFNlY3Rpb25zIHsKICAg
ICBlbnVtIFNlY3Rpb24gOiB1aW50OF90IHsKICAgICAgICAgRnVuY3Rpb25UeXBlcyA9IDEsCiAg
ICAgICAgIFNpZ25hdHVyZXMgPSAzLAorICAgICAgICBNZW1vcnkgPSA1LAogICAgICAgICBEZWZp
bml0aW9ucyA9IDEwLAogICAgICAgICBVbmtub3duCiAgICAgfTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGVjYTVkZDlmYWExMTBmOTBk
NmQyNmJkZmFmMWE4NDMxODQ1MjJjNS4uYTU3ZTYwNjk5YTMxMjk2NTQ3Njg3ZDkxY2UxZWRjNDgx
NWI1YTg5ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgc3Rv
cmUgYW5kIGxvYWQgb3Bjb2RlcyB0byB3YXNtLmpzb24uIEFkZGl0aW9uYWxseSwgYWRkIG5ldwor
ICAgICAgICBlbnVtcyBmb3IgdGhvc2Ugb3Bjb2RlcyBpbiB0aGUgZ2VuZXJhdG9yLgorCisgICAg
ICAgICogc3RyZXNzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanM6CisgICAgICAgIChj
b25zdC50ZW1wbGF0ZS5wcmFnbWEub25jZS5FTkFCTEUuV0VCQVNTRU1CTFkuaW5jbHVkZS5jc3Rk
aW50Lm5hbWVzcGFjZS5KU0MubmFtZXNwYWNlLldBU00uZW51bS5Mb2FkT3BUeXBlKToKKyAgICAg
ICAgKGNvbnN0LnRlbXBsYXRlLnByYWdtYS5vbmNlLkVOQUJMRS5XRUJBU1NFTUJMWS5pbmNsdWRl
LmNzdGRpbnQubmFtZXNwYWNlLkpTQy5uYW1lc3BhY2UuV0FTTS5lbnVtLlN0b3JlT3BUeXBlKToK
KwogMjAxNi0xMC0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgbW9yZSB0ZXN0cyBmb3IgdGhlIGRvdWJsZS0+U3RyaW5nIGNvbnZlcnNpb24gaW4gVmFs
dWVBZGQgY29uc3RhbnQgZm9sZGluZwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2dlbmVyYXRl
LXdhc21vcHMtaGVhZGVyLmpzIGIvSlNUZXN0cy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVy
LmpzCmluZGV4IGNlNTI4OTcxOTI3NjRhZDk5ZjU1MTExMTNhY2QyMmViMmEzMTU2ZGUuLjczODVi
YmYxNjE5NDhkY2IyYzBiOTM3OTAxOTBhY2Q2Nzg0ZjM4ZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcworKysgYi9KU1Rlc3RzL3dhc20vZ2VuZXJh
dGUtd2FzbW9wcy1oZWFkZXIuanMKQEAgLTM2LDYgKzM2LDEwIEBAIGNvbnN0IGRlZmluZXMgPSBb
CiAgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+IG9wLmNhdGVnb3J5ID09PSAiYXJpdGhtZXRp
YyIgJiYgb3AucGFyYW1ldGVyLmxlbmd0aCA9PT0gMSksCiAgICAgIlxuXG4jZGVmaW5lIEZPUl9F
QUNIX1dBU01fQklOQVJZX09QKG1hY3JvKSIsCiAgICAgLi4ub3Bjb2RlTWFjcm9pemVyKG9wID0+
IChvcC5jYXRlZ29yeSA9PT0gImFyaXRobWV0aWMiIHx8IG9wLmNhdGVnb3J5ID09PSAiY29tcGFy
aXNvbiIpICYmIG9wLnBhcmFtZXRlci5sZW5ndGggPT09IDIpLAorICAgICJcblxuI2RlZmluZSBG
T1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1hY3JvKSIsCisgICAgLi4ub3Bjb2RlTWFjcm9p
emVyKG9wID0+IChvcC5jYXRlZ29yeSA9PT0gIm1lbW9yeSIgJiYgb3AucmV0dXJuLmxlbmd0aCA9
PT0gMSkpLAorICAgICJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUCht
YWNybykiLAorICAgIC4uLm9wY29kZU1hY3JvaXplcihvcCA9PiAob3AuY2F0ZWdvcnkgPT09ICJt
ZW1vcnkiICYmIG9wLnJldHVybi5sZW5ndGggPT09IDApKSwKICAgICAiXG5cbiJdLmpvaW4oIiIp
OwogCiBjb25zdCBvcFZhbHVlU2V0ID0gbmV3IFNldChvcGNvZGVJdGVyYXRvcihvcCA9PiB0cnVl
LCBvcCA9PiBvcGNvZGVzW29wXS52YWx1ZSkoKSk7CkBAIC05NCw3ICs5OCw5IEBAICR7ZGVmaW5l
c30KICAgICBGT1JfRUFDSF9XQVNNX1NQRUNJQUxfT1AobWFjcm8pIFxcCiAgICAgRk9SX0VBQ0hf
V0FTTV9DT05UUk9MX0ZMT1dfT1AobWFjcm8pIFxcCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9P
UChtYWNybykgXFwKLSAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykKKyAgICBGT1Jf
RUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykgXFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9M
T0FEX09QKG1hY3JvKSBcXAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3Jv
KQogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQs
CiAKQEAgLTExOCw2ICsxMjQsMTQgQEAgZW51bSBjbGFzcyBVbmFyeU9wVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCiB9OwogCitl
bnVtIGNsYXNzIExvYWRPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9S
WV9MT0FEX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKworZW51bSBjbGFzcyBTdG9yZU9wVHlw
ZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9F
TlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9FTlVNX1ZBTFVFCiAKIGlubGluZSBib29s
IGlzQ29udHJvbE9wKE9wVHlwZSBvcCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291892</attachid>
            <date>2016-10-17 16:22:59 -0700</date>
            <delta_ts>2016-10-17 16:30:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161710-20161017161923.patch</filename>
            <type>text/plain</type>
            <size>80845</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzExYThhNWE5OWMwNGE1NzM1ZjhhZGZjYjZlYzA5YzVjNzI1MjE2Li5jZTg4ZTdmY2ZkN2Q5YjE3
NDJkNDI3NTk0MDJkMzljMzQxOTIzNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxNi0xMC0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIFdlIHVzZSB0aGUgbmV3IEIzIHBpbm5lZCByZWdp
c3RlciBhcGkgdG8gcGluIHRoZSB2YWx1ZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHRlc3RXQVNNLmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6Y3JlYXRlSlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxl
KToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9X
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZl
bnRpb246Oml0ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6
c2V0dXBDYWxsKToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAg
ICogd2FzbS9XQVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNN
OjpNZW1vcnk6Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAg
ICAgKEpTQzo6V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVt
b3J5OjptZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAg
ICAoSlNDOjpXQVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldB
U006Ok1lbW9yeTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9y
eSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAg
KiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1l
bW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6
UGxhbik6CisgICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNl
Y3Rpb25zLmg6CisKIDIwMTYtMTAtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0RPTUpJVF1bSlNDXSBBZGQgT3B0aW9uOjp1c2VET01KSVQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0NThhMmI0NWJjZWQwNDY5ODQ5ZTA4
YjkwMjA1MWEyNWNiZmNlMmMyLi4xZTkzZDRiZGE3NjBlMzE1ZDE1OTMxMGJmYThiYTdhMGYzMDE3
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NjMsNiArODYzLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL0pTV0FTTU1vZHVsZS5jcHAK
ICAgICB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20vV0FTTUNhbGxpbmdDb252
ZW50aW9uLmNwcAorICAgIHdhc20vV0FTTU1lbW9yeS5jcHAKICAgICB3YXNtL1dBU01Nb2R1bGVQ
YXJzZXIuY3BwCiAgICAgd2FzbS9XQVNNUGxhbi5jcHAKICAgICB3YXNtL1dlYkFzc2VtYmx5T2Jq
ZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCmluZGV4IDgzMWQwOTYwMDQyMWNmYmI0MzE0
MmEzZDk5OWE0ZGM2OTY0OTBiZWYuLmY1NDAxZmM5MmNkYjFiYTNkYjI2YjdhOTZkN2IyY2I1MGNj
NmNlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9U
b29sRXhlY3V0YWJsZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKQEAgLTMxLDYgKzMxLDcgQEAgQ09ERV9T
SUdOX0VOVElUTEVNRU5UU19pb3NfbWluaWRvbSA9IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVf
U0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhaXIgPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBDT0RF
X1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YXBpID0gZW50aXRsZW1lbnRzLnBsaXN0OwogQ09E
RV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGIzID0gZW50aXRsZW1lbnRzLnBsaXN0OworQ09E
RV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdFdBU00gPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBD
T0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0UmVnRXhwID0gZW50aXRsZW1lbnRzLnBsaXN0
OwogCiBTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTkyZTg5MTRkNTNkMDljNDM1MDE1
MTAzYTlmMjQ1ZjhjZDc4OWI4Li5mZjFmOWYwNWI2N2U2YjNhY2MyY2FjMzQ5MGNhYTBiY2EwNzM2
ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxNiw2ICsxMjE2LDggQEAK
IAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1
N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9
OwogCQk1MzRDNDU3RTFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NEM0NTdEMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3Bw
ICovOyB9OwogCQk1MzUyOUE0QzFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTI5QTRCMUM0NTdCNzUw
MDBCNDlDNiAvKiBBUElVdGlscy5oICovOyB9OworCQk1MzU1NTcxNDFEOUQ5RUE1MDA2RDU4M0Ig
LyogV0FTTU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLzsgfTsKKwkJ
NTM1NTU3MTYxRDlERkEzMjAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1NTU3MTUxRDlERkEzMjAwNkQ1ODNC
IC8qIFdBU01NZW1vcnkuY3BwICovOyB9OwogCQk1MzcwQjRGNTFCRjI2MjAyMDA1QzQwRkMgLyog
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGMzFCRjI1RUEyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
Ki87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovOyB9OwogCQk1MzkxN0U3QjFCNzkw
NkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTE3RTdB
MUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0
aW9ucy5oICovOyB9OwpAQCAtMzQ2Myw2ICszNDY1LDggQEAKIAkJNTM0QzQ1N0IxQkM3MjQxMTAw
NzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1lbW9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNTWVtb3J5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBC
NEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01Njk5LDYgKzU3MDMsOCBAQAogCQkJCTUzRjQwRTkwMUQ1OTAz
MDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4
IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV0FT
TUZ1bmN0aW9uUGFyc2VyLmggKi8sCisJCQkJNTM1NTU3MTUxRDlERkEzMjAwNkQ1ODNCIC8qIFdB
U01NZW1vcnkuY3BwICovLAorCQkJCTUzNTU1NzEzMUQ5RDlFQTUwMDZENTgzQiAvKiBXQVNNTWVt
b3J5LmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJz
ZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFy
c2VyLmggKi8sCiAJCQkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAq
LywKQEAgLTc4NzEsNiArNzg3Nyw3IEBACiAJCQkJMTQyRTMxMzgxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0My
QTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAw
MDFDMDdEMiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNTU1NzE0MUQ5RDlF
QTUwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBN0E5ODEz
QUFERkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMkJEMTExQkIz
NEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRB
Nzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTIxMyw2ICs5MjIwLDcgQEAKIAkJCQkwRjVBMTI3MzE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9l
c0dDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBE
RkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVC
IC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM1NTU3MTYxRDlERkEzMjAwNkQ1
ODNCIC8qIFdBU01NZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjE0MzMxQURGMDkw
MTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5
NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKaW5kZXggZDllZDkxZmUxODRkZWFi
MTE3Njk5NWM4YmQ2NjljZmM5ZDhlNGM2ZC4uMmMzYzlmYWI2YjMwYmRmZjlkOTMxZDRhMmE3YWM0
ODY5MDlhZWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCkBAIC0zMiw3ICszMiw5
IEBACiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgogI2luY2x1ZGUgIldB
U01QbGFuLmgiCisKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9MRUJE
ZWNvZGVyLmg+CiAKQEAgLTI0Miw4ICsyNDQsNDY5IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0
cygpCiB7CiAgICAgewogICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1v
ZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAi
aTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMy
KQorICAgICAgICAvLyAgIChpNjQuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRp
KSkKKyAgICAgICAgLy8gICAocmV0dXJuIChpNjQubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAg
ICAgICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAw
eDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQw
LAorICAgICAgICAgICAgMHgwMiwgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMiwgMHgwMywgMHg4Miwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAg
ICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAg
ICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDcz
LCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAg
MHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgw
MSwgMHgxNCwgMHgwMCwgMHgzNCwgMHgwMywgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEs
IDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEg
fHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWls
ZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwg
Ym94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJh
dGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAg
ICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBh
cmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChnZXRf
bG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMyLmxv
YWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAg
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwg
MHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2
MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwg
MHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzMsIDB4MDIsIDB4MDAs
IDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAyLCAweDAwLCAweDA5LCAweDBmCisg
ICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYg
KHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwg
Ym94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxl
CisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0
ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVu
Z3RoIGkzMikgKGxvY2FsICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChp
MzIuY29uc3QgMCkpCisgICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChs
b29wCisgICAgICAgIC8vICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkg
KGdldF9sb2NhbCAkbGVuZ3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIu
YWRkIChnZXRfbG9jYWwgJHApIChpMzIubXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkp
KSAoZ2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5h
ZGQgKGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIg
MCkKKyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAg
ICAgIChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4
MDEsIDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwg
MHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4
MDAsCisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2
LCAweDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAor
ICAgICAgICAgICAgMHg0MCwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgw
MSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAg
ICAgICAgIDB4MGYsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4o
KnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBs
YW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8g
Y29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1l
bW9yeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAg
ICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXpl
b2YodWludDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsK
KyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tf
RVEobWVtb3J5W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAg
ICAgICAgb2Zmc2V0ID0gNSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIGludm9rZTx2b2lk
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBi
b3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAg
ICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zm
c2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206Cisg
ICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAg
Ly8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFt
ICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAg
ICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sK
KyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIu
Z2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAg
ICAgIChpMzIuc3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwgJGkpKSAo
Z2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQg
KGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkK
KyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAg
IChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3Mywg
MHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEs
IDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4
MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAx
LCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAw
eDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3
MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwgMHg4MCwg
MHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAs
CisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAw
eDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAwLAorICAg
ICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwg
MHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9
OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJl
c3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkp
OworCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAgICB1aW50
OF90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgp
KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgxMDApLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0
ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOwor
CisgICAgICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZv
a2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBib3gob2Zm
c2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAx
XSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAg
Ly8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2Fk
OF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAg
ICAgLy8gICAgICAoaTMyLnN0b3JlOCAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQor
ICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChnZXRfbG9jYWwgJHB0cikpKQor
ICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgx
MDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgor
ICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAg
IC8vICAgICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChyZXN1
bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChpMzIuY29uc3QgOCkgKGdldF9s
b2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGkzMi5jb25z
dCA4KSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2
ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMs
IDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAw
eDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMz
LCAweDMyLAorICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwg
MHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwKKyAgICAgICAgICAgIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAs
IDB4MTAsIDB4MDgsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsCisg
ICAgICAgICAgICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAg
ICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNp
emUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJN
b2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0go
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0p
LCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAg
ICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAo
ZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJl
c3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRf
bG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0
cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAweDAxLCAweDAxLCAweDAyLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgtMTIpLCBib3gocGxhbi5t
ZW1vcnktPnNpemUoKSAtIHNpemVvZih1aW50NjRfdCkpIH0pLCAtMTIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAg
ICAgLy8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9z
IikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAg
Ly8gICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAg
IC8vICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAg
KQorICAgICAgICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAg
ICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAg
ICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwg
MHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgw
MCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEs
IDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4
MDAsIDB4MzMsIDB4MDIsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAy
LCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwg
dmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJl
c3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBp
bGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgx
MDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgog
ICAgICAgICAvLyAgICAobW9kdWxlCi0gICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJkdW1i
LWVxIikgKHBhcmFtICR4IGkzMikgKHBhcmFtICR5IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9h
cnJheSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikg
KGxvY2FsICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3Qg
MCkpCisgICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAg
ICAgIC8vICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2Nh
bCAkbGVuZ3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIuYWRkIChnZXRf
bG9jYWwgJHApIChpMzIubXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkpKSAoZ2V0X2xv
Y2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5j
b25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAg
ICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1
cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwg
MHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAs
IDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4
ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAx
LCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAw
eDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3
MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4MCwgMHg4MCwK
KyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAg
ICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAw
eDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAorICAgICAgICAg
ICAgMHg0MCwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwg
MHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAgICAgICAgIDB4
MGYsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0
b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0
WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBj
b3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1lbW9yeSA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgaW52
b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3go
b2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXplb2YodWludDMy
X3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zm
c2V0ID0gNSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3Ro
KSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8v
ICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChm
dW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkzMikg
KHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChzZXRf
bG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAg
Ly8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAoZ2V0
X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChpMzIu
c3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwgJGkpKSAoZ2V0X2xvY2Fs
ICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5jb25z
dCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAgICAg
Ly8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1cm4p
CisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgw
YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAsIDB4
MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMs
IDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAw
eDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAweDcy
LAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3Miwg
MHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwgMHg4MCwgMHg4MCwKKyAg
ICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAgICAg
ICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAweDAx
LCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAwLAorICAgICAgICAgICAg
MHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgw
MywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAgICB1aW50OF90KiBtZW1v
cnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDAp
LCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3Ro
XSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAg
IGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZva2U8dm9pZD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBib3gob2Zmc2V0KSwgYm94
KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7
CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8g
R2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgICht
ZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBh
cmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAg
ICAoaTMyLnN0b3JlOCAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAv
LyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAv
LyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
ciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAs
CisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAg
ICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4Ziwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAg
ICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMs
IDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAw
eDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAx
LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwg
MHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4g
cGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8
fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxl
ZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAx
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAv
LyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAo
ZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChyZXN1bHQgaTMyKQor
ICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChpMzIuY29uc3QgOCkgKGdldF9sb2NhbCAkaSkp
CisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGkzMi5jb25zdCA4KSkpCisg
ICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsIDB4
ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhm
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLCAweDMyLAor
ICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3
MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwKKyAgICAg
ICAgICAgIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4
MDgsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsCisgICAgICAgICAg
ICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAx
IHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFp
bGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkg
fSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0pLCAxKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAo
bW9kdWxlCisgICAgICAgIC8vICAgICAoZnVuYyAiZHVtYi1lcSIgKHBhcmFtICR4IGkzMikgKHBh
cmFtICR5IGkzMikgKHJlc3VsdCBpMzIpCiAgICAgICAgIC8vICAgICAgKGlmIChpMzIuZXEgKGdl
dF9sb2NhbCAkeCkgKGdldF9sb2NhbCAkeSkpCiAgICAgICAgIC8vICAgICAgICh0aGVuIChiciAw
KSkKICAgICAgICAgLy8gICAgICAgKGVsc2UgKHJldHVybiAoaTMyLmNvbnN0IDEpKSkpCkBAIC0y
NjUsMTQgKzcyOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgw
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMiksIGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJv
eCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAxKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDAp
LCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMSk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgy
KSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
MiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAxKTsKICAgICB9
CiAKICAgICB7CkBAIC0zMDYsMTQgKzc2OSwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgx
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgyKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwg
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYp
IH0pLCAwKTsKICAgICB9CiAKIApAQCAtMzMzLDcgKzc5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldB
U01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFz
aC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCA1
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgfSksIDUpOwogICAgIH0KIAogCkBAIC0zNTQsNyArODE3LDcgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7CkBAIC0zNzQsNyArODM3
LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7
CkBAIC0zOTQsNyArODU3LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsK
ICAgICB9CiAKICAgICB7CkBAIC00MTMsMTAgKzg3NiwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNN
VGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCks
IGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXSwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KC0xKSwgYm94KDEpfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWluKCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBi
b3goMSkgfSksIDEwMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgtMSksIGJveCgxKX0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWluKCkpOwogICAgIH0KIAogICAgIHsKQEAgLTQ0Miw4ICs5MDUsOCBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwKSB9KSwgMTApOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMTApIH0pLCAxMCk7CiAgICAgfQogCiAgICAgewpAQCAtNDc4LDEwICs5NDEsMTAg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDApIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMil9KSwgMyk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSB9KSwgNTA1MCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKX0pLCAz
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEwMCkgfSksIDUwNTApOwogICAgIH0KIAogICAgIHsKQEAgLTUyMiwxNCAr
OTg1LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAw
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgy
KSwgYm94KDEpIH0pLCAyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCA0KTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0p
LCAxMik7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMTAwKSwgYm94KDYpIH0pLCA2MDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgxMDApIH0pLCAxMDAwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgwKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMCkgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMiksIGJveCgxKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDIpIH0pLCAyKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDIpLCBib3goMikgfSksIDQpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMTIpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDYpIH0pLCA2MDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDEwMCkgfSks
IDEwMDAwKTsKICAgICB9CiAKICAgICB7CkBAIC01NzUsMTQgKzEwMzgsMTQgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDApOwot
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBi
b3goMikgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEw
MCksIGJveCg2KSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDEpLCBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMSksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveCg2KSB9KSwgMCk7CiAgICAgfQogCiB9CkBAIC01OTYsNyArMTA1OSw2IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpZiAob3B0aW9ucy5tX3J1bkxF
QlRlc3RzKQogICAgICAgICBydW5MRUJUZXN0cygpOwogCi0KICAgICBpZiAob3B0aW9ucy5tX3J1
bldBU01UZXN0cykgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgSlNDOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGI3MWMxYWZhYTk0NDYxNmJhMTdmZWJmYzk1ZWRiY2Fj
NjBkM2NiNC4uMDVhNDEyYjU4Y2IxNDIyMWE4OTIzZjU4YzBhZmQyOWFmYjEzZTFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcApAQCAt
MjksMTQgKzI5LDE5IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzRml4U1NBLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIK
ICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXYXNtQWRkcmVzc1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldBU01DYWxs
aW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgorI2luY2x1
ZGUgIldBU01NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogdm9pZCBkdW1w
UHJvY2VkdXJlKHZvaWQqIHB0cikKQEAgLTE2NSwxOCArMTcwLDI1IEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIFZlY3RvcjxWYXJpYWJsZSosIDE+IFJlc3VsdExpc3Q7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJlc3Npb24gPSBudWxscHRyOwogCi0gICAgQjNJ
UkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKKyAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeSosIFByb2Nl
ZHVyZSYpOwogCiAgICAgdm9pZCBhZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+Jik7CiAg
ICAgdm9pZCBhZGRMb2NhbChUeXBlLCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRk
Q29uc3RhbnQoVHlwZSwgdWludDY0X3QpOwogCisgICAgLy8gTG9jYWxzCiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAKKyAgICAvLyBNZW1vcnkKKyAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBsb2FkKExvYWRPcFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCk7CisgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gc3RvcmUoU3RvcmVPcFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpOworCisgICAgLy8gQmFzaWMg
b3BlcmF0b3JzCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYmluYXJ5T3AoQmluYXJ5T3BU
eXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gdW5hcnlPcChVbmFy
eU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAor
ICAgIC8vIENvbnRyb2wgZmxvdwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRCbG9jayhUeXBlIHNpZ25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZExvb3AoVHlwZSBzaWduYXR1cmUpOwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRJZihFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIFR5cGUgc2lnbmF0dXJlKTsK
QEAgLTE5MSwxOCArMjAzLDQxIEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoY29uc3QgVmVjdG9y
PENvbnRyb2xUeXBlPiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVz
c2lvblN0YWNrKTsKIAogcHJpdmF0ZToKKyAgICBFeHByZXNzaW9uVHlwZSBlbWl0Q2hlY2tBbmRQ
cmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIHVp
bnQzMl90IHNpemVPZk9wKTsKKyAgICBFeHByZXNzaW9uVHlwZSBlbWl0TG9hZE9wKExvYWRPcFR5
cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KTsKKyAg
ICB2b2lkIGVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlLCBPcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpOworCiAgICAgdm9p
ZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpOwog
ICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY29uc3QgRXhwcmVzc2lvbkxpc3QmIHJlc3Vs
dFN0YWNrLCBSZXN1bHRMaXN0JiBzdGFjayk7CiAKKyAgICBNZW1vcnkqIG1fbWVtb3J5OwogICAg
IFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAg
IFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIEdQUlJlZyBtX21lbW9yeUJhc2VHUFI7
CisgICAgR1BSUmVnIG1fbWVtb3J5U2l6ZUdQUjsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJH
ZW5lcmF0b3IoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQor
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihNZW1vcnkqIG1lbW9yeSwgUHJvY2VkdXJlJiBw
cm9jZWR1cmUpCisgICAgOiBtX21lbW9yeShtZW1vcnkpCisgICAgLCBtX3Byb2MocHJvY2VkdXJl
KQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICBpZiAo
bV9tZW1vcnkpIHsKKyAgICAgICAgbV9tZW1vcnlCYXNlR1BSID0gbV9tZW1vcnktPnBpbm5lZFJl
Z2lzdGVycygpLmJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBtX3Byb2MucGluUmVnaXN0ZXIo
bV9tZW1vcnlCYXNlR1BSKTsKKyAgICAgICAgQVNTRVJUKCFtX21lbW9yeS0+cGlubmVkUmVnaXN0
ZXJzKCkuc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKKyAgICAgICAgbV9tZW1vcnlTaXpl
R1BSID0gbV9tZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJl
Z2lzdGVyOworICAgICAgICBmb3IgKGNvbnN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8mIGluZm8g
OiBtX21lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycykKKyAgICAgICAgICAg
IG1fcHJvYy5waW5SZWdpc3RlcihpbmZvLnNpemVSZWdpc3Rlcik7CisgICAgfQorCisgICAgbV9w
cm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBH
UFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCkgeworICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXpl
R1BSID09IHBpbm5lZEdQUik7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1bndpbmQg
dGhlIHN0YWNrIGFuZCB0aHJvdyBhIEpTIGV4Y2VwdGlvbi4gU2VlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzUxCisgICAgICAgIGppdC5icmVha3BvaW50KCk7
CisgICAgfSk7CiB9CiAKIHZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1
aW50MzJfdCBjb3VudCkKQEAgLTIyNCwyMCArMjU5LDE4OCBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6
OmFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mIHR5cGVzKQogICAgICAgICB9KTsKIH0K
IAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCitib29sIEIzSVJHZW5lcmF0b3I6Omdl
dExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIEFT
U0VSVChtX2xvY2Fsc1tpbmRleF0pOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgbV9sb2NhbHNb
aW5kZXhdKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
QjNJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZh
bHVlKQorYm9vbCBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVz
c2lvblR5cGUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpTZXQsIE9y
aWdpbigpLCBtX2xvY2Fsc1tpbmRleF0sIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
aW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihF
eHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IHNpemVPZk9w
ZXJhdGlvbikKK3sKKyAgICBBU1NFUlQobV9tZW1vcnlCYXNlR1BSICYmIG1fbWVtb3J5U2l6ZUdQ
Uik7CisgICAgQVNTRVJUKHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCA+IG9mZnNldCk7CisgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBP
cmlnaW4oKSwgcG9pbnRlciwgbV9tZW1vcnlTaXplR1BSLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZz
ZXQgLSAxKTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKKyAgICByZXR1cm4gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxXYXNtQWRkcmVzc1ZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBwb2lu
dGVyLCBtX21lbW9yeUJhc2VHUFIpOworfQorCitpbmxpbmUgdWludDMyX3Qgc2l6ZU9mTG9hZE9w
KExvYWRPcFR5cGUgb3ApCit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlw
ZTo6STMyTG9hZDhTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhVOgorICAgIGNhc2Ug
TG9hZE9wVHlwZTo6STY0TG9hZDhTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOgor
ICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlM6CisgICAg
Y2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNl
IExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJTOgor
ICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyVToKKyAgICAgICAgcmV0dXJuIDQ7CisgICAg
Y2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOgorICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIExv
YWRPcFR5cGU6OkkzMkxvYWQxNlU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZVOgor
ICAgIGNhc2UgTG9hZE9wVHlwZTo6RjMyTG9hZDoKKyAgICBjYXNlIExvYWRPcFR5cGU6OkY2NExv
YWQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9w
VHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qg
b2Zmc2V0KQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxv
YWQ4UzogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkOFMsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4UzogeworICAgICAgICBWYWx1ZSogdmFsdWUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Uywg
b3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAgIH0K
KworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhVOiB7CisgICAgICAgIHJldHVybiBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Wiwgb3JpZ2lu
LCBwb2ludGVyLCBvZmZzZXQpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9h
ZDhVOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCk7Cisg
ICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpF
eHQzMiwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJM
b2FkMTZTOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICB9
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOiB7CisgICAgICAgIFZhbHVlKiB2YWx1
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDE2
Uywgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm4gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9yaWdpbiwgdmFsdWUpOworICAg
IH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDogeworICAgICAgICByZXR1cm4gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwg
b3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQz
MlU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICAg
ICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgWkV4dDMy
LCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQz
MlM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICAg
ICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU0V4dDMy
LCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ6
IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgfQorCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpGMzJMb2FkOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEZsb2F0LCBvcmlnaW4sIHBvaW50
ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6RjY0TG9hZDogeworICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCBEb3VibGUsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgfQorCisgICAgLy8gQjMgZG9lc24ndCBz
dXBwb3J0IExvYWQxNlogeWV0LgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDE2VToKKyAg
ICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlU6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEIzSVJHZW5lcmF0b3I6
OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVChwb2ludGVyLT50eXBl
KCkgPT0gSW50MzIpOworCisgICAgcmVzdWx0ID0gZW1pdExvYWRPcChvcCwgT3JpZ2luKCksIGVt
aXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHBvaW50ZXIsIG9mZnNldCwgc2l6ZU9mTG9hZE9wKG9w
KSksIG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB1aW50MzJfdCBzaXpl
T2ZTdG9yZU9wKFN0b3JlT3BUeXBlIG9wKQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNl
IFN0b3JlT3BUeXBlOjpJMzJTdG9yZTg6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4
OgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTE2Ogor
ICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMTY6CisgICAgICAgIHJldHVybiAyOworICAg
IGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMzI6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6RjMyU3RvcmU6CisgICAgICAgIHJldHVybiA0
OworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6
OkY2NFN0b3JlOgorICAgICAgICByZXR1cm4gODsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworCitpbmxpbmUgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0U3Rv
cmVPcChTdG9yZU9wVHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRl
ciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90IG9mZnNldCkKK3sKKyAgICBzd2l0Y2gg
KG9wKSB7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgorICAgICAgICB2YWx1ZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwg
dmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okkz
MlN0b3JlODoKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBTdG9yZTgsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMTY6CisgICAgICAgIHZh
bHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBUcnVuYywgb3Jp
Z2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisgICAgY2FzZSBTdG9yZU9wVHlw
ZTo6STMyU3RvcmUxNjoKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBTdG9yZTE2LCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyLCBvZmZzZXQpOwor
ICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJNjRTdG9yZTMyOgorICAg
ICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgVHJ1
bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKworICAgIGNhc2UgU3Rv
cmVPcFR5cGU6Okk2NFN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlOgorICAg
IGNhc2UgU3RvcmVPcFR5cGU6OkYzMlN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6OkY2NFN0
b3JlOgorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIFN0b3JlLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
QjNJUkdlbmVyYXRvcjo6c3RvcmUoU3RvcmVPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50
ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpCit7CisgICAgQVNTRVJU
KHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisKKyAgICBlbWl0U3RvcmVPcChvcCwgT3JpZ2lu
KCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHBvaW50ZXIsIG9mZnNldCwgc2l6ZU9mU3Rv
cmVPcChvcCkpLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBC
M0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBhcmcs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBPcmlnaW4oKSwgYXJnKTsKQEAg
LTQwMywxMCArNjA2LDY5IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8
Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3NpCiAKIH0gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29t
cGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBGdW5jdGlvbkluZm9ybWF0aW9u
IGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQorCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbXBp
bGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwgTWVtb3J5KiBtZW1vcnkpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogYmxvY2sgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAvLyBDaGVjayBhcmd1bWVudCBjb3VudCBpcyBzYW5lLgorICAgIFZhbHVl
KiBmcmFtZVBvaW50ZXIgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4ocHJvYywgQjM6OkZy
YW1lUG9pbnRlciwgT3JpZ2luKCkpOworICAgIFZhbHVlKiBvZmZTZXRPZkFyZ3VtZW50Q291bnQg
PSBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgZnJhbWVQb2ludGVyLCBvZmZTZXRPZkFyZ3VtZW50Q291bnQpKTsKKworICAg
IFZhbHVlKiBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSk7CisKKyAg
ICBDaGVja1ZhbHVlKiBhcmd1bWVudENvdW50Q2hlY2sgPSBibG9jay0+YXBwZW5kTmV3PENoZWNr
VmFsdWU+KHByb2MsIENoZWNrLCBPcmlnaW4oKSwKKyAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQWJvdmUsIE9yaWdpbigpLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIGFyZ3Vt
ZW50Q291bnQpKTsKKyAgICBhcmd1bWVudENvdW50Q2hlY2stPnNldEdlbmVyYXRvcihbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsKKworICAgIC8vIE1vdmUgbWVtb3J5IHZhbHVl
cyB0byB0aGUgYXBwcm9yaWF0ZSBwbGFjZXMsIGlmIG5lZWRlZC4KKyAgICBWYWx1ZSogYmFzZU1l
bW9yeSA9IG51bGxwdHI7CisgICAgVmVjdG9yPFZhbHVlKj4gc2l6ZXM7CisgICAgaWYgKG1lbW9y
eSkgeworICAgICAgICBiYXNlTWVtb3J5ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbWVtb3J5LT5tZW1vcnkoKSk7CisgICAgICAgIFZhbHVlKiBzaXpl
ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdp
bigpLAorICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYml0d2lzZV9jYXN0PGNoYXIqPihtZW1vcnkpICsgTWVtb3J5OjpvZmZzZXRPZlNp
emUoKSkpOworICAgICAgICBzaXplcy5yZXNlcnZlQ2FwYWNpdHkobWVtb3J5LT5waW5uZWRSZWdp
c3RlcnMoKS5zaXplUmVnaXN0ZXJzLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byBpbmZvIDog
bWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBz
aXplcy5hcHBlbmQoYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
c2l6ZSwKKyAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGluZm8uc2l6ZU9mZnNldCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIEdldCBvdXIgYXJndW1lbnRzLgorICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3VtZW50czsKKyAg
ICBqc2NDYWxsaW5nQ29udmVudGlvbigpLml0ZXJhdGUoc2lnbmF0dXJlLT5hcmd1bWVudHMsIHBy
b2MsIGJsb2NrLCBPcmlnaW4oKSwgWyZdIChWYWx1ZSogYXJndW1lbnQsIHVuc2lnbmVkKSB7Cisg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAgIH0pOworCisgICAgLy8gTW92
ZSB0aGUgYXJndW1lbnRzIGludG8gcGxhY2UuCisgICAgVmFsdWUqIHJlc3VsdCA9IGpzY0NhbGxp
bmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKHByb2MsIGJsb2NrLCBPcmlnaW4oKSwgbWFpbkZ1bmN0
aW9uLCBhcmd1bWVudHMsIHRvQjNUeXBlKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSksIFsmXSAoUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CisgICAgICAgIGlmIChtZW1vcnkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChzaXplcy5zaXplKCkgPT0gbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5z
aXplUmVnaXN0ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShiYXNlTWVtb3J5LCBWYWx1ZVJlcDo6cmVnKG1lbW9yeS0+cGlubmVkUmVn
aXN0ZXJzKCkuYmFzZU1lbW9yeVBvaW50ZXIpKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoc2l6ZXNbaV0sIFZhbHVlUmVwOjpyZWcobWVtb3J5
LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzW2ldLnNpemVSZWdpc3RlcikpKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQsIGlmIG5lZWRlZC4K
KyAgICBpZiAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlICE9IFZvaWQpCisgICAgICAgIGJsb2NrLT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgQjM6OlJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7
CisgICAgZWxzZQorICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEIz
OjpSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPih2bSwgcHJvYyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0
aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgTWVt
b3J5KiBtZW1vcnksIEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2NlZHVyZTsKLSAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQo
cHJvY2VkdXJlKTsKKyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQobWVtb3J5LCBwcm9jZWR1cmUp
OwogICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBzb3Vy
Y2UsIGluZm8pOwogICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MTcsNyArNjc5LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxD
b21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3Vy
Y2UsIEZ1CiAgICAgZml4U1NBKHByb2NlZHVyZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CisgICAgYXV0byBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uQ29tcGlsYXRpb24+KCk7CisKKyAgICBy
ZXN1bHQtPmNvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvY2VkdXJl
LCBvcHRMZXZlbCk7CisgICAgcmVzdWx0LT5qc0VudHJ5UG9pbnQgPSBjcmVhdGVKU1dyYXBwZXIo
dm0sIGluZm8uc2lnbmF0dXJlLCByZXN1bHQtPmNvZGUtPmNvZGUoKSwgbWVtb3J5KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKaW5kZXggOTUxOTZkYmU1
NzdkYWFmYWJhOTc4YTU2MDRjOTA2Y2Q2NTViZmM4My4uZjgyODJkMGM5NTVjMjZmN2U3YzAxMjQ1
Nzk3Yjk5MTZkNGRiOTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5oCkBAIC0zNSw3ICszNSw5IEBAIGV4dGVybiAiQyIgdm9pZCBkdW1wUHJv
Y2VkdXJlKHZvaWQqKTsKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKIAotc3Rk
Ojp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9y
PHVpbnQ4X3Q+JiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsK
K2NsYXNzIE1lbW9yeTsKKworc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBh
cnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIE1lbW9yeSosIEZ1bmN0aW9uSW5m
b3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXQVNNCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01DYWxs
aW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdD
b252ZW50aW9uLmgKaW5kZXggNzg5NTkzMTAyNGE1M2Q2N2Q1Yzc5Yjk0NGVjZjJiMmI1MmFiMTc0
NS4uNjEzNWY3MzcwNWFlOWI2YmEwMDA0OWY0YzIwNjRlZDllYTdlNTBiMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmgKQEAgLTI3
LDIzICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiQjNDb25zdDY0VmFs
dWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUuaCIKICNpbmNsdWRlICJCM01lbW9y
eVZhbHVlLmgiCisjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKKyNpbmNsdWRlICJCM1By
b2NlZHVyZS5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlJl
Z2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiV0FTTUZvcm1hdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdBU00gewogCi10eXBlZGVmIHVuc2lnbmVkICgqTmV4dE9mZnNldCkodW5zaWdu
ZWQgY3VycmVudE9mZnNldCwgVHlwZSB0eXBlKTsKK3R5cGVkZWYgdW5zaWduZWQgKCpOZXh0T2Zm
c2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBCMzo6VHlwZSB0eXBlKTsKIAotdGVtcGxhdGU8
dW5zaWduZWQgb2Zmc2V0LCBOZXh0T2Zmc2V0IHVwZGF0ZU9mZnNldD4KK3RlbXBsYXRlPHVuc2ln
bmVkIGhlYWRlclNpemUsIE5leHRPZmZzZXQgdXBkYXRlT2Zmc2V0PgogY2xhc3MgQ2FsbGluZ0Nv
bnZlbnRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoZWFkZXJTaXpl
ID0gb2Zmc2V0OwotCiAgICAgQ2FsbGluZ0NvbnZlbnRpb24oVmVjdG9yPEdQUlJlZz4mJiByZWdp
c3RlckFyZ3VtZW50cywgUmVnaXN0ZXJTZXQmJiBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogICAgICAg
ICA6IG1fcmVnaXN0ZXJBcmd1bWVudHMocmVnaXN0ZXJBcmd1bWVudHMpCiAgICAgICAgICwgbV9j
YWxsZWVTYXZlUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdpc3RlcnMpCkBAIC02NCwxOCArNjgsNTUg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIEIzOjpWYWx1ZSogYWRkcmVzcyA9IGJsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6QWRkLCBvcmlnaW4sIGZyYW1lUG9pbnRlciwK
ICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3Q2NFZhbHVlPihw
cm9jLCBvcmlnaW4sIGN1cnJlbnRPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBhcmd1bWVudCA9
IGJsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihwcm9jLCBCMzo6TG9hZCwgdG9CM1R5
cGUoYXJndW1lbnRUeXBlc1tpXSksIG9yaWdpbiwgYWRkcmVzcyk7Ci0gICAgICAgICAgICAgICAg
Y3VycmVudE9mZnNldCA9IHVwZGF0ZU9mZnNldChjdXJyZW50T2Zmc2V0LCBhcmd1bWVudFR5cGVz
W2ldKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gdXBkYXRlT2Zmc2V0KGN1cnJl
bnRPZmZzZXQsIHRvQjNUeXBlKGFyZ3VtZW50VHlwZXNbaV0pKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGZ1bmN0b3IoYXJndW1lbnQsIGkpOwogICAgICAgICB9CiAgICAgfQogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBCMzo6VmFsdWUqIHNldHVwQ2FsbChCMzo6
UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvY2ssIEIzOjpPcmlnaW4gb3JpZ2lu
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0LCBjb25zdCBWZWN0b3I8QjM6OlZhbHVlKj4m
IGFyZ3VtZW50cywgQjM6OlR5cGUgcmV0dXJuVHlwZSwgY29uc3QgRnVuY3RvciYgcGF0Y2hwb2lu
dEZ1bmN0b3IpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3Qgc3RhY2tBcmd1bWVudENvdW50
ID0gYXJndW1lbnRzLnNpemUoKSA8IG1fcmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpID8gMCA6IGFy
Z3VtZW50cy5zaXplKCkgLSBtX3JlZ2lzdGVyQXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gaGVhZGVyU2l6ZSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKTsKKwor
ICAgICAgICBwcm9jLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKFdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIGhlYWRlclNpemUgKyAoc3RhY2tBcmd1
bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICAgICAgVmVjdG9yPEIzOjpDb25z
dHJhaW5lZFZhbHVlPiBjb25zdHJhaW5lZEFyZ3VtZW50czsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQjM6OlZh
bHVlUmVwIHJlcDsKKyAgICAgICAgICAgIGlmIChpIDwgbV9yZWdpc3RlckFyZ3VtZW50cy5zaXpl
KCkpCisgICAgICAgICAgICAgICAgcmVwID0gQjM6OlZhbHVlUmVwOjpyZWcobV9yZWdpc3RlckFy
Z3VtZW50c1tpXSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVwID0gQjM6
OlZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KG9mZnNldCk7CisgICAgICAgICAgICBjb25zdHJhaW5l
ZEFyZ3VtZW50cy5hcHBlbmQoQjM6OkNvbnN0cmFpbmVkVmFsdWUoYXJndW1lbnRzW2ldLCByZXAp
KTsKKyAgICAgICAgICAgIG9mZnNldCA9IHVwZGF0ZU9mZnNldChvZmZzZXQsIGFyZ3VtZW50c1tp
XS0+dHlwZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIHJl
dHVyblR5cGUsIG9yaWdpbik7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihjb25z
dHJhaW5lZEFyZ3VtZW50cyk7CisgICAgICAgIHBhdGNocG9pbnRGdW5jdG9yKHBhdGNocG9pbnQp
OworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbCgpOworICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cih0YXJnZXQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
IChyZXR1cm5UeXBlID09IEIzOjpWb2lkKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IEIzOjpWYWx1ZVJlcDo6cmVn
KEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7Cisg
ICAgfQorCiAgICAgY29uc3QgVmVjdG9yPEdQUlJlZz4gbV9yZWdpc3RlckFyZ3VtZW50czsKICAg
ICBjb25zdCBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgY29uc3QgUmVn
aXN0ZXJTZXQgbV9jYWxsZXJTYXZlUmVnaXN0ZXJzOwogfTsKIAotaW5saW5lIHVuc2lnbmVkIG5l
eHRKU0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlwZSkKK2lubGluZSB1bnNpZ25l
ZCBuZXh0SlNDT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIEIzOjpUeXBlKQogewogICAg
IHJldHVybiBjdXJyZW50T2Zmc2V0ICsgc2l6ZW9mKFJlZ2lzdGVyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCA3YTA0MTM3ZTNjNzBmMTgyNDcxMGFjZDk4
ODQ3ZjcyMTU2MjRkMDFkLi4xZTEwODEwZDNmZjZlZTBhODc2NGIzMmIzNmU4MDU2ZGQzNDVhNmMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCkBAIC00NCw2ICs0NCw3
IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJCM0NvbXBpbGF0aW9u
LmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTI2LDYgKzEyNywxMSBAQCBzdHJ1Y3QgRnVu
Y3Rpb25JbmZvcm1hdGlvbiB7CiAgICAgc2l6ZV90IGVuZDsKIH07CiAKK3N0cnVjdCBGdW5jdGlv
bkNvbXBpbGF0aW9uIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb2Rl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGpzRW50cnlQb2ludDsKK307
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNT
RU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rp
b25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5oCmluZGV4IGFlODc0MjQwYzkyMjhkMmQ4Mzk3NDQ2ZTE1ODdhMmQ0NDY5MWZhM2QuLjQ0NzFh
MmNmNTcxNzgxODI1OTUyNDJkMDM5NGY0NzY5ZTc5ZTNiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC0xNTQsNiArMTU0LDM3IEBA
IGJvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3Ap
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZ
X0xPQURfT1AoQ1JFQVRFX0NBU0UpIHsKKyAgICAgICAgdWludDMyX3QgYWxpZ25tZW50OworICAg
ICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0OworICAgICAgICBpZiAoIXBhcnNlVmFy
VUludDMyKG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CisgICAg
ICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQubG9hZChz
dGF0aWNfY2FzdDxMb2FkT3BUeXBlPihvcCksIHBvaW50ZXIsIHJlc3VsdCwgb2Zmc2V0KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5k
KHJlc3VsdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKSB7CisgICAgICAgIHVpbnQzMl90IGFsaWdu
bWVudDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihhbGlnbm1lbnQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAgaWYg
KCFwYXJzZVZhclVJbnQzMihvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIEV4cHJlc3Npb25UeXBlIHZhbHVlID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3Qo
KTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9IG1fZXhwcmVzc2lvblN0YWNrLnRh
a2VMYXN0KCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuc3RvcmUoc3RhdGljX2Nhc3Q8U3Rv
cmVPcFR5cGU+KG9wKSwgcG9pbnRlciwgdmFsdWUsIG9mZnNldCk7CisgICAgfQorCiAgICAgY2Fz
ZSBPcFR5cGU6OkkzMkNvbnN0OiB7CiAgICAgICAgIHVpbnQzMl90IGNvbnN0YW50OwogICAgICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKGNvbnN0YW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1lbW9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlYzk1N2Y2MzAyOTA5MWI3OTBhNmYyMDEz
YzYyNmZlNzAyMjljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01NZW1vcnkuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V0FTTU1lbW9yeS5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFdBU00geworCitNZW1vcnk6Ok1lbW9yeSh1aW50MzJfdCBzdGFydGluZ1Np
emUsIHVpbnQzMl90IGNhcGFjaXR5LCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBwaW5uZWRTaXpl
UmVnaXN0ZXJzKQorICAgIDogbV9tb2RlKE1vZGU6OkJvdW5kc0NoZWNraW5nKQorICAgICwgbV9z
aXplKHN0YXJ0aW5nU2l6ZSkKKyAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCisgICAgLy8gRklY
TUU6IElmIHdlIGFkZCBzaWduYWwgYmFzZWQgYm91bmRzIGNoZWNraW5nIHRoZW4gd2UgbmVlZCBl
eHRyYSBzcGFjZSBmb3Igb3ZlcmZsb3cgb24gbG9hZC4KKyAgICAvLyBzZWU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAgICAsIG1fbWFwcGVkQ2FwYWNp
dHkoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFBhZ2VDb3VudCkgKiBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocGFnZVNpemUpKQoreworICAgIEFTU0VSVChwaW5uZWRTaXplUmVnaXN0ZXJzLnNpemUo
KSA+IDApOworCisgICAgdm9pZCogcmVzdWx0ID0gbW1hcChudWxscHRyLCBtX21hcHBlZENhcGFj
aXR5LCBQUk9UX05PTkUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIDAsIDApOworICAgIGlmIChy
ZXN1bHQgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICAvLyBUcnkgYWdhaW4gd2l0aCBhIGRpZmZl
cmVudCBudW1iZXIuCisgICAgICAgIG1fbWFwcGVkQ2FwYWNpdHkgPSBtX2NhcGFjaXR5OworICAg
ICAgICByZXN1bHQgPSBtbWFwKG51bGxwdHIsIG1fbWFwcGVkQ2FwYWNpdHksIFBST1RfTk9ORSwg
TUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgMCwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTUFQ
X0ZBSUxFRCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobXByb3RlY3Qo
cmVzdWx0LCBzdGFydGluZ1NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7CisgICAgICAg
IG11bm1hcChyZXN1bHQsIG1fbWFwcGVkQ2FwYWNpdHkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZVJl
Z2lzdGVycy5zaXplKCkgKyAxOworICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkubV9jYWxsZWVT
YXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7CisgICAgICAgIEdQUlJlZyBncHIg
PSByZWcuZ3ByKCk7CisgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAocmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID09IDEpIHsKKyAgICAgICAg
ICAgIG1fcGlubmVkUmVnaXN0ZXJzLmJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOworICAgICAgICAg
ICAgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9waW5uZWRSZWdpc3RlcnMuc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNp
emVSZWdpc3RlcnNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgLSAxXSB9KTsKKyAgICB9KTsK
KworICAgIEFTU0VSVCghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKKyAgICBtX21lbW9yeSA9
IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK30gLy8gbmFtZXNwYWNlIFdBU00K
KworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01NZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzE3YWVmMDBhMGQ5ODUyMTMxZmVkNDMxZWI5MDNm
YjY4MGNmN2U1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1lbW9yeS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKworI2luY2x1ZGUgIldBU01DYWxsaW5nQ29udmVudGlvbi5oIgorCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00geworCitzdHJ1Y3Qg
UGlubmVkU2l6ZVJlZ2lzdGVySW5mbyB7CisgICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKKyAgICB1
bnNpZ25lZCBzaXplT2Zmc2V0OworfTsKKworLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1v
cmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIuIFJpZ2h0IG5vdyB3ZSB0YWtlIGEgdmVj
dG9yIHdpdGggb25seSBvbmUKKy8vIGVudHJ5LiBTcGVjaWZpY2FsbHkgYW4gZXh0cnkgd2hlcmUg
dGhlIHNpemVPZmZzZXQgPT0gMC4gSWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0
ZXIsCisvLyB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVhY2ggbG9hZCBzaXplIGNsYXNzLiBzZWU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKK3N0cnVjdCBQaW5u
ZWRSZWdpc3RlckluZm8geworICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXpl
UmVnaXN0ZXJzOworICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKK307CisKK2NvbnN0ZXhw
ciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7Citjb25zdGV4cHIgdWludDMyX3QgbWF4UGFn
ZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAvIHBhZ2VTaXplKTsK
KworY2xhc3MgTWVtb3J5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZW1vcnkpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzdXBwb3J0IG90aGVyIG1vZGVzLiBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAgICBlbnVtIGNsYXNzIE1vZGUgeworICAgICAgICBCb3Vu
ZHNDaGVja2luZworICAgIH07CisKKyAgICBNZW1vcnkoKSA9IGRlZmF1bHQ7CisgICAgTWVtb3J5
KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMyX3QgY2FwYWNpdHksIGNvbnN0IFZlY3Rvcjx1
bnNpZ25lZD4mIHBpbm5lZFNpemVSZWdpc3RlcnMpOworCisgICAgfk1lbW9yeSgpCisgICAgewor
ICAgICAgICBpZiAobV9tZW1vcnkpCisgICAgICAgICAgICBtdW5tYXAobV9tZW1vcnksIG1fbWFw
cGVkQ2FwYWNpdHkpOworICAgIH0KKworICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVtb3J5OyB9CisgICAgdWludDMyX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQorICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVnaXN0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9waW5uZWRSZWdpc3RlcnM7IH0KKworICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kZTsgfQorCisgICAgYm9vbCBncm93KHVpbnQzMl90IG5ld1NpemUpCisgICAg
eworICAgICAgICBBU1NFUlQobV9tZW1vcnkpOworICAgICAgICBpZiAobmV3U2l6ZSA+IG1fY2Fw
YWNpdHkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuICFtcHJv
dGVjdChtX21lbW9yeSwgbmV3U2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQqIG1fbWVt
b3J5IHsgbnVsbHB0ciB9OworICAgIFBpbm5lZFJlZ2lzdGVySW5mbyBtX3Bpbm5lZFJlZ2lzdGVy
czsKKyAgICBNb2RlIG1fbW9kZTsKKyAgICB1aW50MzJfdCBtX3NpemUgeyAwIH07CisgICAgdWlu
dDMyX3QgbV9jYXBhY2l0eSB7IDAgfTsKKyAgICB1aW50NjRfdCBtX21hcHBlZENhcGFjaXR5IHsg
MCB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00KKworI2VuZGlmIC8vIEVOQUJM
RShXRUJBU1NFTUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxl
UGFyc2VyLmNwcAppbmRleCA1ZTA1M2E1YTc5MDNhNTRlYjg2NDU2NDY4MmUzZTlkMTcxMGIyMTY0
Li5kY2RlNzRjYzFhNTE0YjMzMGM4ZmYxZDc2ZGU3M2ViMTFjZjE0MzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMjgsMTAgKzI4
LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJKU1dBU01Nb2R1
bGUuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSAiV0FTTU9wcy5oIgogI2lu
Y2x1ZGUgIldBU01TZWN0aW9ucy5oIgogCisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKwogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwpAQCAtNjIsMTUgKzY1LDE2IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJTdGFydGluZyB0byBw
YXJzZSBuZXh0IHNlY3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNldCk7CiAKLSAgICAgICAgU2Vj
dGlvbnM6OlNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtub3duOwogICAgICAgICB1aW50
OF90IHNlY3Rpb25CeXRlOwogICAgICAgICBpZiAoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJTZWN0aW9uIGJ5dGU6ICIsIHNlY3Rpb25CeXRlKTsKKworICAgICAg
ICBTZWN0aW9uczo6U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247CiAgICAgICAg
IGlmIChzZWN0aW9uQnl0ZSkgewotICAgICAgICAgICAgaWYgKHNlY3Rpb25CeXRlID49IFNlY3Rp
b25zOjpVbmtub3duKQotICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93
bjsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSA8IFNlY3Rp
b25zOjpVbmtub3duKQogICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBzdGF0aWNfY2FzdDxTZWN0
aW9uczo6U2VjdGlvbj4oc2VjdGlvbkJ5dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdWludDMyX3Qgc2VjdGlvbk5hbWVMZW5ndGg7CkBAIC05Niw2ICsxMDAsMTUgQEAgYm9vbCBN
b2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgdW5zaWduZWQgZW5kID0gbV9vZmZzZXQgKyBz
ZWN0aW9uTGVuZ3RoOwogCiAgICAgICAgIHN3aXRjaCAoc2VjdGlvbikgeworCisgICAgICAgIGNh
c2UgU2VjdGlvbnM6Ok1lbW9yeTogeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5nIE1lbW9yeS4iKTsKKyAgICAgICAgICAgIGlmICgh
cGFyc2VNZW1vcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU2VjdGlvbnM6OkZ1bmN0aW9uVHlw
ZXM6IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiUGFyc2luZyB0eXBlcy4iKTsKQEAgLTE0Myw2ICsxNTYsMzQgQEAgYm9vbCBNb2R1bGVQYXJz
ZXI6OnBhcnNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBNb2R1bGVQYXJzZXI6OnBh
cnNlTWVtb3J5KCkKK3sKKyAgICB1aW50OF90IGZsYWdzOworICAgIGlmICghcGFyc2VWYXJVSW50
MShmbGFncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQzMl90IHNpemU7Cisg
ICAgaWYgKCFwYXJzZVZhclVJbnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChzaXplID4gbWF4UGFnZUNvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1
aW50MzJfdCBjYXBhY2l0eSA9IG1heFBhZ2VDb3VudDsKKyAgICBpZiAoZmxhZ3MpIHsKKyAgICAg
ICAgaWYgKCFwYXJzZVZhclVJbnQzMihjYXBhY2l0eSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChzaXplID4gY2FwYWNpdHkgfHwgY2FwYWNpdHkgPiBtYXhQYWdlQ291
bnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FwYWNpdHkgKj0g
cGFnZVNpemU7CisgICAgc2l6ZSAqPSBwYWdlU2l6ZTsKKworICAgIFZlY3Rvcjx1bnNpZ25lZD4g
cGlubmVkU2l6ZXMgPSB7IDAgfTsKKyAgICBtX21lbW9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVt
b3J5PihzaXplLCBjYXBhY2l0eSwgcGlubmVkU2l6ZXMpOworICAgIHJldHVybiBtX21lbW9yeS0+
bWVtb3J5KCk7Cit9CisKIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMoKQog
ewogICAgIHVpbnQzMl90IGNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TU1vZHVsZVBhcnNlci5oCmluZGV4IDQ2MGJlOGZiYjM2ZjAyZmFmNGFkNTM4YjFjZTUyYjJlZDUx
MjU0ZmQuLjc1ZTRkMTBhZGY2MDM0NzczODc3YzFlZjBhYmQ2MWM0ZmEyNDY0ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIldBU01NZW1vcnku
aCIKICNpbmNsdWRlICJXQVNNT3BzLmgiCiAjaW5jbHVkZSAiV0FTTVBhcnNlci5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ1LDE4ICs0NiwxOSBAQCBwdWJsaWM6CiAKICAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCi0gICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9u
SW5mb3JtYXRpb24+JiBmdW5jdGlvbkluZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbnM7
IH0KKyAgICBjb25zdCBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9uSW5mb3Jt
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZW1vcnk+JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeTsgfQogCiBwcml2YXRlOgorICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlTWVtb3J5KCk7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblR5cGVzKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VGdW5jdGlvblNpZ25hdHVyZXMoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbih1aW50MzJfdCBudW1iZXIpOwotICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQmxvY2soKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUV4cHJlc3Npb24oT3BUeXBlKTsKIAogICAgIFZlY3RvcjxGdW5jdGlvbkluZm9y
bWF0aW9uPiBtX2Z1bmN0aW9uczsKICAgICBWZWN0b3I8U2lnbmF0dXJlPiBtX3NpZ25hdHVyZXM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeT4gbV9tZW1vcnk7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU9wcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCmluZGV4IDZl
ZjViZDRkMTYwZDMxZjcxMDMxOWUzZTdjYzc3OGZhNGZjODc3ZGMuLjZkMzQ4OGNmNDk4MDQzM2U5
MDRiYWUwMDU0NDQ4MzdjYWQwMDJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01PcHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3Bz
LmgKQEAgLTE1OSwxMyArMTU5LDQyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7
CiAgICAgbWFjcm8oRjY0R3QsIDB4OWIsIE9vcHMpIFwKICAgICBtYWNybyhGNjRHZSwgMHg5Yywg
T29wcykKIAorI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1hY3JvKSBcCisg
ICAgbWFjcm8oSTMyTG9hZDhTLCAweDIwLCBPb3BzKSBcCisgICAgbWFjcm8oSTMyTG9hZDhVLCAw
eDIxLCBPb3BzKSBcCisgICAgbWFjcm8oSTMyTG9hZDE2UywgMHgyMiwgT29wcykgXAorICAgIG1h
Y3JvKEkzMkxvYWQxNlUsIDB4MjMsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkOFMsIDB4MjQs
IE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkOFUsIDB4MjUsIE9vcHMpIFwKKyAgICBtYWNybyhJ
NjRMb2FkMTZTLCAweDI2LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0TG9hZDE2VSwgMHgyNywgT29w
cykgXAorICAgIG1hY3JvKEk2NExvYWQzMlMsIDB4MjgsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRM
b2FkMzJVLCAweDI5LCBPb3BzKSBcCisgICAgbWFjcm8oSTMyTG9hZCwgMHgyYSwgT29wcykgXAor
ICAgIG1hY3JvKEk2NExvYWQsIDB4MmIsIE9vcHMpIFwKKyAgICBtYWNybyhGMzJMb2FkLCAweDJj
LCBPb3BzKSBcCisgICAgbWFjcm8oRjY0TG9hZCwgMHgyZCwgT29wcykKKworI2RlZmluZSBGT1Jf
RUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykgXAorICAgIG1hY3JvKEkzMlN0b3JlOCwg
MHgyZSwgT29wcykgXAorICAgIG1hY3JvKEkzMlN0b3JlMTYsIDB4MmYsIE9vcHMpIFwKKyAgICBt
YWNybyhJNjRTdG9yZTgsIDB4MzAsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZTE2LCAweDMx
LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUzMiwgMHgzMiwgT29wcykgXAorICAgIG1hY3Jv
KEkzMlN0b3JlLCAweDMzLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUsIDB4MzQsIE9vcHMp
IFwKKyAgICBtYWNybyhGMzJTdG9yZSwgMHgzNSwgT29wcykgXAorICAgIG1hY3JvKEY2NFN0b3Jl
LCAweDM2LCBPb3BzKQorCiAKIAogI2RlZmluZSBGT1JfRUFDSF9XQVNNX09QKG1hY3JvKSBcCiAg
ICAgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9D
T05UUk9MX0ZMT1dfT1AobWFjcm8pIFwKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKG1hY3Jv
KSBcCi0gICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pCisgICAgRk9SX0VBQ0hfV0FT
TV9CSU5BUllfT1AobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1h
Y3JvKSBcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pCiAKICNkZWZp
bmUgQ1JFQVRFX0VOVU1fVkFMVUUobmFtZSwgaWQsIGIzb3ApIG5hbWUgPSBpZCwKIApAQCAtMTg5
LDYgKzIxOCwxNCBAQCBlbnVtIGNsYXNzIFVuYXJ5T3BUeXBlIDogdWludDhfdCB7CiAgICAgRk9S
X0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKK2VudW0gY2xhc3Mg
TG9hZE9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1Ao
Q1JFQVRFX0VOVU1fVkFMVUUpCit9OworCitlbnVtIGNsYXNzIFN0b3JlT3BUeXBlIDogdWludDhf
dCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0VOVU1fVkFMVUUp
Cit9OworCiAjdW5kZWYgQ1JFQVRFX0VOVU1fVkFMVUUKIAogaW5saW5lIGJvb2wgaXNDb250cm9s
T3AoT3BUeXBlIG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCmluZGV4
IDdiZDYwZDIzZjExYTI5YWNlMWUzN2E2MTg3NWZlNGI1Y2YwZGJjYjkuLmEwODM3Mzg1ODRkNTY2
OTI2YTI1MjJkYjkxY2Q2Yzk0ZjhlNmE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNUGxhbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24u
aCIKICNpbmNsdWRlICJXQVNNQjNJUkdlbmVyYXRvci5oIgorI2luY2x1ZGUgIldBU01DYWxsaW5n
Q29udmVudGlvbi5oIgogI2luY2x1ZGUgIldBU01Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgogCkBAIC01Myw4ICs1NCw5IEBAIFBsYW46OlBsYW4oVk0mIHZtLCBWZWN0
b3I8dWludDhfdD4gc291cmNlKQogICAgIGZvciAoY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYg
aW5mbyA6IG1vZHVsZVBhcnNlci5mdW5jdGlvbkluZm9ybWF0aW9uKCkpIHsKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIlByb2Nlc3NpbmcgZnVuY2lvbiBzdGFy
dGluZyBhdDogIiwgaW5mby5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBpbmZvLmVuZCk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQocGFyc2VBbmRDb21waWxlKHZtLCBzb3VyY2UsIGluZm8pKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIHNvdXJjZSwgbW9kdWxl
UGFyc2VyLm1lbW9yeSgpLmdldCgpLCBpbmZvKSk7CiAgICAgfQorICAgIG1lbW9yeSA9IFdURk1v
dmUobW9kdWxlUGFyc2VyLm1lbW9yeSgpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldB
U00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oCmluZGV4IGQzYzllMjJhNWFiYTE3
MjY0M2YzNzkxNjBjMzhiOGU0YjQ5MmIxOGMuLmI4NDVlZTE0ODk3OGY5NjAxMDc2OTA2NDBhNWQx
MGI2ZmM3ZjM1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Q
bGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uaApAQCAtMjks
MjMgKzI5LDIwIEBACiAKICNpbmNsdWRlICJDb21waWxhdGlvblJlc3VsdC5oIgogI2luY2x1ZGUg
IlZNLmgiCisjaW5jbHVkZSAiV0FTTUZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7
Ci0KLW5hbWVzcGFjZSBCMyB7Ci1jbGFzcyBDb21waWxhdGlvbjsKLX0gLy8gbmFtZXNwYWNlIEIz
Ci0KLW5hbWVzcGFjZSBXQVNNIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV0FTTSB7Citj
bGFzcyBNZW1vcnk7CiAKIC8vIFRPRE86IFRoaXMgc2hvdWxkIGNyZWF0ZSBhIFdBU00gTW9kdWxl
IG5vdCBhIGxpc3Qgb2YgZnVuY3Rpb25zLgogY2xhc3MgUGxhbiB7CiBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUGxhbihWTSYsIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpOwogCi0gICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+PiByZXN1bHQ7CisgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPj4gcmVzdWx0OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZW1vcnk+IG1lbW9yeTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCmluZGV4IDUz
ZTkzNTZlMjM4ZmE0MmM1YjU4NzEwOTkzNmI1NzAwOGU3YzY3OTkuLjA3YzcyZDQxZDNiZWVkY2Qx
NzIzOGE4YzIwMDQyMzI3NTEzYjQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01TZWN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01TZWN0aW9ucy5oCkBAIC0zMyw2ICszMyw3IEBAIHN0cnVjdCBTZWN0aW9ucyB7CiAgICAgZW51
bSBTZWN0aW9uIDogdWludDhfdCB7CiAgICAgICAgIEZ1bmN0aW9uVHlwZXMgPSAxLAogICAgICAg
ICBTaWduYXR1cmVzID0gMywKKyAgICAgICAgTWVtb3J5ID0gNSwKICAgICAgICAgRGVmaW5pdGlv
bnMgPSAxMCwKICAgICAgICAgVW5rbm93bgogICAgIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlY2E1ZGQ5ZmFhMTEwZjkwZDZkMjZi
ZGZhZjFhODQzMTg0NTIyYzUuLmE1N2U2MDY5OWEzMTI5NjU0NzY4N2Q5MWNlMWVkYzQ4MTViNWE4
OWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMTAtMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdBU00gTWVtb3J5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgQWRkIHN0b3JlIGFu
ZCBsb2FkIG9wY29kZXMgdG8gd2FzbS5qc29uLiBBZGRpdGlvbmFsbHksIGFkZCBuZXcKKyAgICAg
ICAgZW51bXMgZm9yIHRob3NlIG9wY29kZXMgaW4gdGhlIGdlbmVyYXRvci4KKworICAgICAgICAq
IHN0cmVzcy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzOgorICAgICAgICAoY29uc3Qu
dGVtcGxhdGUucHJhZ21hLm9uY2UuRU5BQkxFLldFQkFTU0VNQkxZLmluY2x1ZGUuY3N0ZGludC5u
YW1lc3BhY2UuSlNDLm5hbWVzcGFjZS5XQVNNLmVudW0uTG9hZE9wVHlwZSk6CisgICAgICAgIChj
b25zdC50ZW1wbGF0ZS5wcmFnbWEub25jZS5FTkFCTEUuV0VCQVNTRU1CTFkuaW5jbHVkZS5jc3Rk
aW50Lm5hbWVzcGFjZS5KU0MubmFtZXNwYWNlLldBU00uZW51bS5TdG9yZU9wVHlwZSk6CisKIDIw
MTYtMTAtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IG1vcmUgdGVzdHMgZm9yIHRoZSBkb3VibGUtPlN0cmluZyBjb252ZXJzaW9uIGluIFZhbHVlQWRk
IGNvbnN0YW50IGZvbGRpbmcKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9nZW5lcmF0ZS13YXNt
b3BzLWhlYWRlci5qcyBiL0pTVGVzdHMvd2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcwpp
bmRleCBjZTUyODk3MTkyNzY0YWQ5OWY1NTExMTEzYWNkMjJlYjJhMzE1NmRlLi43Mzg1YmJmMTYx
OTQ4ZGNiMmMwYjkzNzkwMTkwYWNkNjc4NGYzOGVhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
Z2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKKysrIGIvSlNUZXN0cy93YXNtL2dlbmVyYXRlLXdh
c21vcHMtaGVhZGVyLmpzCkBAIC0zNiw2ICszNiwxMCBAQCBjb25zdCBkZWZpbmVzID0gWwogICAg
IC4uLm9wY29kZU1hY3JvaXplcihvcCA9PiBvcC5jYXRlZ29yeSA9PT0gImFyaXRobWV0aWMiICYm
IG9wLnBhcmFtZXRlci5sZW5ndGggPT09IDEpLAogICAgICJcblxuI2RlZmluZSBGT1JfRUFDSF9X
QVNNX0JJTkFSWV9PUChtYWNybykiLAogICAgIC4uLm9wY29kZU1hY3JvaXplcihvcCA9PiAob3Au
Y2F0ZWdvcnkgPT09ICJhcml0aG1ldGljIiB8fCBvcC5jYXRlZ29yeSA9PT0gImNvbXBhcmlzb24i
KSAmJiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09PSAyKSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykiLAorICAgIC4uLm9wY29kZU1hY3JvaXplcihv
cCA9PiAob3AuY2F0ZWdvcnkgPT09ICJtZW1vcnkiICYmIG9wLnJldHVybi5sZW5ndGggPT09IDEp
KSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8p
IiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNhdGVnb3J5ID09PSAibWVtb3J5
IiAmJiBvcC5yZXR1cm4ubGVuZ3RoID09PSAwKSksCiAgICAgIlxuXG4iXS5qb2luKCIiKTsKIAog
Y29uc3Qgb3BWYWx1ZVNldCA9IG5ldyBTZXQob3Bjb2RlSXRlcmF0b3Iob3AgPT4gdHJ1ZSwgb3Ag
PT4gb3Bjb2Rlc1tvcF0udmFsdWUpKCkpOwpAQCAtOTQsNyArOTgsOSBAQCAke2RlZmluZXN9CiAg
ICAgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01f
Q09OVFJPTF9GTE9XX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AobWFj
cm8pIFxcCi0gICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pCisgICAgRk9SX0VBQ0hf
V0FTTV9CSU5BUllfT1AobWFjcm8pIFxcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9P
UChtYWNybykgXFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykKIAog
I2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCkBA
IC0xMTgsNiArMTI0LDE0IEBAIGVudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAg
ICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBj
bGFzcyBMb2FkT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9B
RF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xhc3MgU3RvcmVPcFR5cGUgOiB1
aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfRU5VTV9W
QUxVRSkKK307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQogCiBpbmxpbmUgYm9vbCBpc0Nv
bnRyb2xPcChPcFR5cGUgb3ApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291895</attachid>
            <date>2016-10-17 16:30:50 -0700</date>
            <delta_ts>2016-10-17 19:05:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161710-20161017162716.patch</filename>
            <type>text/plain</type>
            <size>80863</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzExYThhNWE5OWMwNGE1NzM1ZjhhZGZjYjZlYzA5YzVjNzI1MjE2Li5jZTg4ZTdmY2ZkN2Q5YjE3
NDJkNDI3NTk0MDJkMzljMzQxOTIzNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxNi0xMC0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBNZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFdBU00gbWVtb3J5IG9wZXJhdGlvbnMuIEZpcnN0LAorICAgICAgICBp
dCBhZGRzIHRoZSBjb25jZXB0IG9mIGEgV0FTTSBNb2R1bGUgbWVtb3J5IG1hbmFnZW1lbnQgb2Jq
ZWN0LgorICAgICAgICBUaGlzIG9iamVjdCBjdXJyZW50bHkgbW1hcHMgYSAzMi1iaXQgYWRkcmVz
cyBzcGFjZSBmb3IgV0FTTSB1c2UsCisgICAgICAgIGFsdGhvdWdoIGl0IG1hcmtzIGFsbCB0aGUg
bWVtb3J5IG91dHNpZGUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcworICAgICAgICBQUk9UX05P
TkUuIEZvciBub3csIHdlIGRvIGEgcmFuZ2UgY2hlY2sgb24gZWFjaCBzdG9yZSBhbmQgbG9hZC4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGJlIGFuIHNp
Z25hbCBoYW5kbGVyIHRoYXQKKyAgICAgICAgY2hlY2tzIHdoYXQgbW9kdWxlIHRoZSBwcm9ncmFt
IHRyYXBwZWQgaW4uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGNoYW5nZXMg
dGhlIHdheSB0aGF0IG91ciB0ZW1wb3JhcnkgdGVzdHMKKyAgICAgICAgY2FsbCBpbnRvIFdBU00g
Y29kZS4gVGhlcmUgaXMgbm93IGEgdHJ1ZSAidGh1bmsiIHRoYXQgcmVsb2NhdGVzCisgICAgICAg
IGFyZ3VtZW50cyBhbmQgY2FsbHMgaW50byBXQVNNLiBUaGlzIHRodW5rIGRvZXMgbm90IHRhaWwg
Y2FsbAorICAgICAgICBiZWNhdXNlIHdlIHVzZSBwaW5uZWQgdmFsdWVzIHRvIG1lbW9yeSBiYXNl
LXBvaW50ZXIgYW5kCisgICAgICAgIHNpemUuIFdlIHVzZSB0aGUgbmV3IEIzIHBpbm5lZCByZWdp
c3RlciBhcGkgdG8gcGluIHRoZSB2YWx1ZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHRlc3RXQVNNLmNwcDoKKyAgICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6Y3JlYXRlSlNXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxl
KToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9X
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6Q2FsbGluZ0NvbnZl
bnRpb246Oml0ZXJhdGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpDYWxsaW5nQ29udmVudGlvbjo6
c2V0dXBDYWxsKToKKyAgICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAg
ICogd2FzbS9XQVNNRm9ybWF0Lmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwLgorICAgICAgICAoSlNDOjpXQVNN
OjpNZW1vcnk6Ok1lbW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTWVtb3J5Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaC4KKyAgICAg
ICAgKEpTQzo6V0FTTTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V0FTTTo6TWVt
b3J5OjptZW1vcnkpOgorICAgICAgICAoSlNDOjpXQVNNOjpNZW1vcnk6OnNpemUpOgorICAgICAg
ICAoSlNDOjpXQVNNOjpNZW1vcnk6OnBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OldB
U006Ok1lbW9yeTo6bW9kZSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6Z3Jvd01lbW9y
eSk6CisgICAgICAgIChKU0M6OldBU006Ok1lbW9yeTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAg
KiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1l
bW9yeSk6CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6bWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6
UGxhbik6CisgICAgICAgICogd2FzbS9XQVNNUGxhbi5oOgorICAgICAgICAqIHdhc20vV0FTTVNl
Y3Rpb25zLmg6CisKIDIwMTYtMTAtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0RPTUpJVF1bSlNDXSBBZGQgT3B0aW9uOjp1c2VET01KSVQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0NThhMmI0NWJjZWQwNDY5ODQ5ZTA4
YjkwMjA1MWEyNWNiZmNlMmMyLi4xZTkzZDRiZGE3NjBlMzE1ZDE1OTMxMGJmYThiYTdhMGYzMDE3
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NjMsNiArODYzLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL0pTV0FTTU1vZHVsZS5jcHAK
ICAgICB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20vV0FTTUNhbGxpbmdDb252
ZW50aW9uLmNwcAorICAgIHdhc20vV0FTTU1lbW9yeS5jcHAKICAgICB3YXNtL1dBU01Nb2R1bGVQ
YXJzZXIuY3BwCiAgICAgd2FzbS9XQVNNUGxhbi5jcHAKICAgICB3YXNtL1dlYkFzc2VtYmx5T2Jq
ZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCmluZGV4IDgzMWQwOTYwMDQyMWNmYmI0MzE0
MmEzZDk5OWE0ZGM2OTY0OTBiZWYuLmY1NDAxZmM5MmNkYjFiYTNkYjI2YjdhOTZkN2IyY2I1MGNj
NmNlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9U
b29sRXhlY3V0YWJsZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKQEAgLTMxLDYgKzMxLDcgQEAgQ09ERV9T
SUdOX0VOVElUTEVNRU5UU19pb3NfbWluaWRvbSA9IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVf
U0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhaXIgPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBDT0RF
X1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0YXBpID0gZW50aXRsZW1lbnRzLnBsaXN0OwogQ09E
RV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdGIzID0gZW50aXRsZW1lbnRzLnBsaXN0OworQ09E
RV9TSUdOX0VOVElUTEVNRU5UU19pb3NfdGVzdFdBU00gPSBlbnRpdGxlbWVudHMucGxpc3Q7CiBD
T0RFX1NJR05fRU5USVRMRU1FTlRTX2lvc190ZXN0UmVnRXhwID0gZW50aXRsZW1lbnRzLnBsaXN0
OwogCiBTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTkyZTg5MTRkNTNkMDljNDM1MDE1
MTAzYTlmMjQ1ZjhjZDc4OWI4Li5mZjFmOWYwNWI2N2U2YjNhY2MyY2FjMzQ5MGNhYTBiY2EwNzM2
ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxNiw2ICsxMjE2LDggQEAK
IAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1
N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9
OwogCQk1MzRDNDU3RTFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NEM0NTdEMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3Bw
ICovOyB9OwogCQk1MzUyOUE0QzFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTI5QTRCMUM0NTdCNzUw
MDBCNDlDNiAvKiBBUElVdGlscy5oICovOyB9OworCQk1MzU1NTcxNDFEOUQ5RUE1MDA2RDU4M0Ig
LyogV0FTTU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLzsgfTsKKwkJ
NTM1NTU3MTYxRDlERkEzMjAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1NTU3MTUxRDlERkEzMjAwNkQ1ODNC
IC8qIFdBU01NZW1vcnkuY3BwICovOyB9OwogCQk1MzcwQjRGNTFCRjI2MjAyMDA1QzQwRkMgLyog
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGMzFCRjI1RUEyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
Ki87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovOyB9OwogCQk1MzkxN0U3QjFCNzkw
NkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTE3RTdB
MUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0
aW9ucy5oICovOyB9OwpAQCAtMzQ2Myw2ICszNDY1LDggQEAKIAkJNTM0QzQ1N0IxQkM3MjQxMTAw
NzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0QzQ1N0QxQkM3MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdBU01NZW1vcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1lbW9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV0FTTU1lbW9yeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNTWVtb3J5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBC
NEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01Njk5LDYgKzU3MDMsOCBAQAogCQkJCTUzRjQwRTkwMUQ1OTAz
MDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4
IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV0FT
TUZ1bmN0aW9uUGFyc2VyLmggKi8sCisJCQkJNTM1NTU3MTUxRDlERkEzMjAwNkQ1ODNCIC8qIFdB
U01NZW1vcnkuY3BwICovLAorCQkJCTUzNTU1NzEzMUQ5RDlFQTUwMDZENTgzQiAvKiBXQVNNTWVt
b3J5LmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJz
ZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFy
c2VyLmggKi8sCiAJCQkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAq
LywKQEAgLTc4NzEsNiArNzg3Nyw3IEBACiAJCQkJMTQyRTMxMzgxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0My
QTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAw
MDFDMDdEMiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNTU1NzE0MUQ5RDlF
QTUwMDZENTgzQiAvKiBXQVNNTWVtb3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBN0E5ODEz
QUFERkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMkJEMTExQkIz
NEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRB
Nzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTIxMyw2ICs5MjIwLDcgQEAKIAkJCQkwRjVBMTI3MzE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9l
c0dDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBE
RkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVC
IC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM1NTU3MTYxRDlERkEzMjAwNkQ1
ODNCIC8qIFdBU01NZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjE0MzMxQURGMDkw
MTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5
NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKaW5kZXggZDllZDkxZmUxODRkZWFi
MTE3Njk5NWM4YmQ2NjljZmM5ZDhlNGM2ZC4uMmMzYzlmYWI2YjMwYmRmZjlkOTMxZDRhMmE3YWM0
ODY5MDlhZWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCkBAIC0zMiw3ICszMiw5
IEBACiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgogI2luY2x1ZGUgIldB
U01QbGFuLmgiCisKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9MRUJE
ZWNvZGVyLmg+CiAKQEAgLTI0Miw4ICsyNDQsNDY5IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0
cygpCiB7CiAgICAgewogICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gKG1v
ZHVsZQorICAgICAgICAvLyAgKG1lbW9yeSAxKQorICAgICAgICAvLyAgKGZ1bmMgKGV4cG9ydCAi
aTMyX2xvYWQ4X3MiKSAocGFyYW0gJGkgaTMyKSAocGFyYW0gJHB0ciBpMzIpIChyZXN1bHQgaTMy
KQorICAgICAgICAvLyAgIChpNjQuc3RvcmUgKGdldF9sb2NhbCAkcHRyKSAoZ2V0X2xvY2FsICRp
KSkKKyAgICAgICAgLy8gICAocmV0dXJuIChpNjQubG9hZCAoZ2V0X2xvY2FsICRwdHIpKSkKKyAg
ICAgICAgLy8gICApCisgICAgICAgIC8vICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAw
eDAwLCAweDAwLCAweDAxLCAweDg3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDQw
LAorICAgICAgICAgICAgMHgwMiwgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMiwgMHgwMywgMHg4Miwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MywgMHg4MCwKKyAg
ICAgICAgICAgIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDcsIDB4OGYs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MGIsIDB4NjksIDB4MzMsCisgICAgICAg
ICAgICAweDMyLCAweDVmLCAweDZjLCAweDZmLCAweDYxLCAweDY0LCAweDM4LCAweDVmLCAweDcz
LCAweDAwLCAweDAwLCAweDBhLCAweDk1LCAweDgwLCAweDgwLCAweDgwLAorICAgICAgICAgICAg
MHgwMCwgMHgwMSwgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgw
MSwgMHgxNCwgMHgwMCwgMHgzNCwgMHgwMywgMHgwMCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEs
IDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEg
fHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWls
ZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwg
Ym94KDEwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3goMikgfSksIDEwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDEwMCkgfSksIDEpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJh
dGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAgICAgLy8gIChtZW1vcnkgMSkKKyAg
ICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBhcmFtICRpIGkzMikgKHBh
cmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAoaTMyLnN0b3JlIChnZXRf
bG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAgIC8vICAgKHJldHVybiAoaTMyLmxv
YWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAgKQorICAgICAgICAvLyAgKQorICAg
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwg
MHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDIsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAx
LCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2
MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwg
MHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MzMsIDB4MDIsIDB4MDAs
IDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAyLCAweDAwLCAweDA5LCAweDBmCisg
ICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYg
KHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwg
Ym94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAxKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxl
CisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0
ICJ3cml0ZV9hcnJheSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVu
Z3RoIGkzMikgKGxvY2FsICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChp
MzIuY29uc3QgMCkpCisgICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChs
b29wCisgICAgICAgIC8vICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkg
KGdldF9sb2NhbCAkbGVuZ3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIu
YWRkIChnZXRfbG9jYWwgJHApIChpMzIubXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkp
KSAoZ2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5h
ZGQgKGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIg
MCkKKyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAg
ICAgIChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4
MDEsIDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAw
eDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBi
LCAweDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwg
MHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4
MDAsCisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2
LCAweDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAor
ICAgICAgICAgICAgMHg0MCwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgw
MSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAg
ICAgICAgIDB4MGYsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4o
KnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBs
YW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8g
Y29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1l
bW9yeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAg
ICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgx
MDApLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXpl
b2YodWludDMyX3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsK
KyAgICAgICAgQ0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tf
RVEobWVtb3J5W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAg
ICAgICAgb2Zmc2V0ID0gNSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIGludm9rZTx2b2lk
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBi
b3gobGVuZ3RoKSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAg
ICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zm
c2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206Cisg
ICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAg
Ly8gICAgIChmdW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFt
ICRwIGkzMikgKHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAg
ICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sK
KyAgICAgICAgLy8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIu
Z2VfdSAoZ2V0X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAg
ICAgIChpMzIuc3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwgJGkpKSAo
Z2V0X2xvY2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQg
KGkzMi5jb25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkK
KyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAg
IChyZXR1cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3Mywg
MHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEs
IDB4MDAsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4
MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAx
LCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAw
eDc3LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3
MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwgMHg4MCwg
MHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAs
CisgICAgICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAw
eDA3LCAweDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAwLAorICAg
ICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwg
MHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9
OworCisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJl
c3VsdC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkp
OworCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAgICB1aW50
OF90KiBtZW1vcnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgp
KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7
IGJveCgxMDApLCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VR
KG1lbW9yeVtvZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0
ICsgbGVuZ3RoXSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOwor
CisgICAgICAgIGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZv
a2U8dm9pZD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBib3gob2Zm
c2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAx
XSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAg
Ly8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2Fk
OF9zIikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAg
ICAgLy8gICAgICAoaTMyLnN0b3JlOCAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQor
ICAgICAgICAvLyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChnZXRfbG9jYWwgJHB0cikpKQor
ICAgICAgICAvLyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgx
MDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgor
ICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAg
IC8vICAgICAoZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChyZXN1
bHQgaTMyKQorICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChpMzIuY29uc3QgOCkgKGdldF9s
b2NhbCAkaSkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGkzMi5jb25z
dCA4KSkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2
ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMs
IDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAw
eDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMz
LCAweDMyLAorICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwg
MHg1ZiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwKKyAgICAgICAgICAgIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAs
IDB4MTAsIDB4MDgsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsCisg
ICAgICAgICAgICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAg
ICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNp
emUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJN
b2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0go
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0p
LCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAg
ICAvLyAobW9kdWxlCisgICAgICAgIC8vICAobWVtb3J5IDEpCisgICAgICAgIC8vICAoZnVuYyAo
ZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChwYXJhbSAkcHRyIGkzMikgKHJl
c3VsdCBpMzIpCisgICAgICAgIC8vICAgKGkzMi5zdG9yZSAoZ2V0X2xvY2FsICRwdHIpIChnZXRf
bG9jYWwgJGkpKQorICAgICAgICAvLyAgIChyZXR1cm4gKGkzMi5sb2FkIChnZXRfbG9jYWwgJHB0
cikpKQorICAgICAgICAvLyAgICkKKyAgICAgICAgLy8gICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4NDAsCisgICAgICAgICAgICAweDAyLCAweDAyLCAweDAxLCAweDAxLCAweDAyLCAweDAz
LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAw
eDgwLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw
NywgMHg4ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywK
KyAgICAgICAgICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4
NWYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAg
ICAgICAgICAweDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDE0LAorICAgICAgICAg
ICAgMHgwMSwgMHgyYiwgMHgwMywgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDApLCBib3goMTApIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEwMCksIGJveCgyKSB9KSwgMTAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDEpLCBib3goMTAwKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgtMTIpLCBib3gocGxhbi5t
ZW1vcnktPnNpemUoKSAtIHNpemVvZih1aW50NjRfdCkpIH0pLCAtMTIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vIChtb2R1bGUKKyAgICAg
ICAgLy8gIChtZW1vcnkgMSkKKyAgICAgICAgLy8gIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9z
IikgKHBhcmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAg
Ly8gICAoaTMyLnN0b3JlIChnZXRfbG9jYWwgJHB0cikgKGdldF9sb2NhbCAkaSkpCisgICAgICAg
IC8vICAgKHJldHVybiAoaTMyLmxvYWQgKGdldF9sb2NhbCAkcHRyKSkpCisgICAgICAgIC8vICAg
KQorICAgICAgICAvLyAgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAg
ICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg0MCwKKyAgICAgICAg
ICAgIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAs
IDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAw
eDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhmLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLAorICAgICAgICAgICAgMHgzMiwg
MHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3MywgMHgwMCwgMHgw
MCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEs
IDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4
MDAsIDB4MzMsIDB4MDIsIDB4MDAsIDB4MTQsCisgICAgICAgICAgICAweDAxLCAweDJhLCAweDAy
LCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwg
dmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJl
c3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBp
bGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgx
MDApIH0pLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgog
ICAgICAgICAvLyAgICAobW9kdWxlCi0gICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJkdW1i
LWVxIikgKHBhcmFtICR4IGkzMikgKHBhcmFtICR5IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAoZnVuYyAoZXhwb3J0ICJ3cml0ZV9h
cnJheSIpIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkcCBpMzIpIChwYXJhbSAkbGVuZ3RoIGkzMikg
KGxvY2FsICRpIGkzMikKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3Qg
MCkpCisgICAgICAgIC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAg
ICAgIC8vICAgICAgICAoYnJfaWYgMSAoaTMyLmdlX3UgKGdldF9sb2NhbCAkaSkgKGdldF9sb2Nh
bCAkbGVuZ3RoKSkpCisgICAgICAgIC8vICAgICAgICAoaTMyLnN0b3JlIChpMzIuYWRkIChnZXRf
bG9jYWwgJHApIChpMzIubXVsIChnZXRfbG9jYWwgJGkpIChpMzIuY29uc3QgNCkpKSAoZ2V0X2xv
Y2FsICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5j
b25zdCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAg
ICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1
cm4pCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwg
MHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgw
MCwgMHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAs
IDB4MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4
ODMsIDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAx
LCAweDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAw
eDcyLAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3
MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhiMiwgMHg4MCwgMHg4MCwgMHg4MCwK
KyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YWMsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAg
ICAgICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAw
eDAxLCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDEwLCAweDA0LCAweDQyLAorICAgICAgICAg
ICAgMHg0MCwgMHgxNCwgMHgwMCwgMHgzMywgMHgwMiwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwg
MHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwKKyAgICAgICAgICAgIDB4
MGYsIDB4MDksIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0
b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0
WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBj
b3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChwbGFuLm1lbW9yeS0+c2l6ZSgpKTsKKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gNTsKKyAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIG1lbW9yeSA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAgICAgaW52
b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBib3go
b2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIG9mZnNldCAvPSBzaXplb2YodWludDMy
X3QpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0IC0gMV0sIDB1KTsKKyAgICAgICAg
Q0hFQ0tfRVEobWVtb3J5W29mZnNldCArIGxlbmd0aF0sIDB1KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ0hFQ0tfRVEobWVtb3J5
W2kgKyBvZmZzZXRdLCAxMDB1KTsKKworICAgICAgICBsZW5ndGggPSAxMDsKKyAgICAgICAgb2Zm
c2V0ID0gNSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIGludm9rZTx2b2lkPigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goNSksIGJveChvZmZzZXQpLCBib3gobGVuZ3Ro
KSB9KTsKKyAgICAgICAgb2Zmc2V0IC89IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNLX0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8v
ICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChtZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChm
dW5jIChleHBvcnQgIndyaXRlX2FycmF5IikgKHBhcmFtICR4IGkzMikgKHBhcmFtICRwIGkzMikg
KHBhcmFtICRsZW5ndGggaTMyKSAobG9jYWwgJGkgaTMyKQorICAgICAgICAvLyAgICAgIChzZXRf
bG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAg
Ly8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZ2VfdSAoZ2V0
X2xvY2FsICRpKSAoZ2V0X2xvY2FsICRsZW5ndGgpKSkKKyAgICAgICAgLy8gICAgICAgIChpMzIu
c3RvcmU4IChpMzIuYWRkIChnZXRfbG9jYWwgJHApIChnZXRfbG9jYWwgJGkpKSAoZ2V0X2xvY2Fs
ICR4KSkKKyAgICAgICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGkzMi5jb25z
dCAxKSAoZ2V0X2xvY2FsICRpKSkpCisgICAgICAgIC8vICAgICAgICAoYnIgMCkKKyAgICAgICAg
Ly8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgIChyZXR1cm4p
CisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgw
YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAsIDB4
MDMsIDB4ODIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMs
IDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAw
eDA3LCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDc3LCAweDcy
LAorICAgICAgICAgICAgMHg2OSwgMHg3NCwgMHg2NSwgMHg1ZiwgMHg2MSwgMHg3MiwgMHg3Miwg
MHg2MSwgMHg3OSwgMHgwMCwgMHgwMCwgMHgwYSwgMHhhZiwgMHg4MCwgMHg4MCwgMHg4MCwKKyAg
ICAgICAgICAgIDB4MDAsIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDAsCisgICAgICAg
ICAgICAweDAyLCAweDAwLCAweDE0LCAweDAzLCAweDE0LCAweDAyLCAweDU2LCAweDA3LCAweDAx
LCAweDE0LCAweDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE0LCAweDAwLAorICAgICAgICAgICAg
MHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgw
MywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXpl
KCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9k
dWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAg
ICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSA1OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAxOworICAgICAgICB1aW50OF90KiBtZW1v
cnkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGxhbi5tZW1vcnktPm1lbW9yeSgpKTsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDAp
LCBib3gob2Zmc2V0KSwgYm94KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtv
ZmZzZXQgLSAxXSwgMHUpOworICAgICAgICBDSEVDS19FUShtZW1vcnlbb2Zmc2V0ICsgbGVuZ3Ro
XSwgMHUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBDSEVDS19FUShtZW1vcnlbaSArIG9mZnNldF0sIDEwMHUpOworCisgICAgICAg
IGxlbmd0aCA9IDEwOworICAgICAgICBvZmZzZXQgPSA1OworICAgICAgICBpbnZva2U8dm9pZD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDUpLCBib3gob2Zmc2V0KSwgYm94
KGxlbmd0aCkgfSk7CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgLSAxXSwgMTAwdSk7
CisgICAgICAgIENIRUNLX0VRKG1lbW9yeVtvZmZzZXQgKyBsZW5ndGhdLCAwdSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIENIRUNL
X0VRKG1lbW9yeVtpICsgb2Zmc2V0XSwgNXUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8g
R2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgICht
ZW1vcnkgMSkKKyAgICAgICAgLy8gICAgIChmdW5jIChleHBvcnQgImkzMl9sb2FkOF9zIikgKHBh
cmFtICRpIGkzMikgKHBhcmFtICRwdHIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAg
ICAoaTMyLnN0b3JlOCAoZ2V0X2xvY2FsICRwdHIpIChnZXRfbG9jYWwgJGkpKQorICAgICAgICAv
LyAgICAgIChyZXR1cm4gKGkzMi5sb2FkOF9zIChnZXRfbG9jYWwgJHB0cikpKQorICAgICAgICAv
LyAgICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
ciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4ODcsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4NDAs
CisgICAgICAgICAgICAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAzLCAweDgyLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA1LCAweDgzLCAweDgwLAorICAg
ICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNywgMHg4Ziwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwYiwgMHg2OSwgMHgzMywKKyAgICAgICAg
ICAgIDB4MzIsIDB4NWYsIDB4NmMsIDB4NmYsIDB4NjEsIDB4NjQsIDB4MzgsIDB4NWYsIDB4NzMs
IDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4ODAsIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAw
eDAwLCAweDAxLCAweDhmLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAx
LCAweDE0LCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDE0LAorICAgICAgICAgICAgMHgwMSwg
MHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4g
cGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8
fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxl
ZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5LT5zaXplKCkpOworCisgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxMCkgfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDIpIH0pLCAxMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgxMDApIH0pLCAx
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAv
LyAgICAobW9kdWxlCisgICAgICAgIC8vICAgICAobWVtb3J5IDEpCisgICAgICAgIC8vICAgICAo
ZnVuYyAoZXhwb3J0ICJpMzJfbG9hZDhfcyIpIChwYXJhbSAkaSBpMzIpIChyZXN1bHQgaTMyKQor
ICAgICAgICAvLyAgICAgIChpMzIuc3RvcmU4IChpMzIuY29uc3QgOCkgKGdldF9sb2NhbCAkaSkp
CisgICAgICAgIC8vICAgICAgKHJldHVybiAoaTMyLmxvYWQ4X3MgKGkzMi5jb25zdCA4KSkpCisg
ICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MSwgMHg0MCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDMsIDB4ODIs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODMsIDB4ODAsIDB4
ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDA3LCAweDhm
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDBiLCAweDY5LCAweDMzLCAweDMyLAor
ICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHg2ZiwgMHg2MSwgMHg2NCwgMHgzOCwgMHg1ZiwgMHg3
MywgMHgwMCwgMHgwMCwgMHgwYSwgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwKKyAgICAg
ICAgICAgIDB4MDEsIDB4OGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4
MDgsIDB4MTQsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsCisgICAgICAgICAg
ICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAx
IHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFp
bGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkg
fSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpz
RW50cnlQb2ludCwgeyBib3goMTAwKSB9KSwgMTAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpIH0pLCAxKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAo
bW9kdWxlCisgICAgICAgIC8vICAgICAoZnVuYyAiZHVtYi1lcSIgKHBhcmFtICR4IGkzMikgKHBh
cmFtICR5IGkzMikgKHJlc3VsdCBpMzIpCiAgICAgICAgIC8vICAgICAgKGlmIChpMzIuZXEgKGdl
dF9sb2NhbCAkeCkgKGdldF9sb2NhbCAkeSkpCiAgICAgICAgIC8vICAgICAgICh0aGVuIChiciAw
KSkKICAgICAgICAgLy8gICAgICAgKGVsc2UgKHJldHVybiAoaTMyLmNvbnN0IDEpKSkpCkBAIC0y
NjUsMTQgKzcyOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgw
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMiksIGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJv
eCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAxKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDAp
LCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwgMSk7CisgICAgICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgy
KSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3go
MiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAxKTsKICAgICB9
CiAKICAgICB7CkBAIC0zMDYsMTQgKzc2OSwxNCBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMo
KQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgx
KSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMSksIGJveCgwKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgyKSB9KSwgMSk7Ci0g
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgyKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMSksIGJveCgxKSB9KSwgMCk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCg2KSB9KSwgMSk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSwgYm94KDYpIH0pLCAw
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDApLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMSksIGJveCgwKSB9KSwg
MCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRy
eVBvaW50LCB7IGJveCgyKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMikgfSks
IDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50
cnlQb2ludCwgeyBib3goMiksIGJveCgyKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDEpIH0p
LCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0Vu
dHJ5UG9pbnQsIHsgYm94KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDYp
IH0pLCAwKTsKICAgICB9CiAKIApAQCAtMzMzLDcgKzc5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldB
U01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFz
aC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pLCA1
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgfSksIDUpOwogICAgIH0KIAogCkBAIC0zNTQsNyArODE3LDcgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7CkBAIC0zNzQsNyArODM3
LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7
CkBAIC0zOTQsNyArODU3LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSksIDExKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgfSksIDExKTsK
ICAgICB9CiAKICAgICB7CkBAIC00MTMsMTAgKzg3NiwxMCBAQCBzdGF0aWMgdm9pZCBydW5XQVNN
VGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCks
IGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXSwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOwotICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KC0xKSwgYm94KDEpfSksIDApOwotICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWluKCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0t
PmpzRW50cnlQb2ludCwgeyBib3goMCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxMDApLCBi
b3goMSkgfSksIDEwMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgtMSksIGJveCgxKX0pLCAwKTsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWluKCkpOwogICAgIH0KIAogICAgIHsKQEAgLTQ0Miw4ICs5MDUsOCBAQCBz
dGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwKSB9KSwgMTApOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMCkgfSksIDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2lu
dCwgeyBib3goMTApIH0pLCAxMCk7CiAgICAgfQogCiAgICAgewpAQCAtNDc4LDEwICs5NDEsMTAg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDApIH0pLCAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSB9KSwgMSk7Ci0gICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMil9KSwgMyk7Ci0gICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTAwKSB9KSwgNTA1MCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50
LCB7IGJveCgwKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKX0pLCAz
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5
UG9pbnQsIHsgYm94KDEwMCkgfSksIDUwNTApOwogICAgIH0KIAogICAgIHsKQEAgLTUyMiwxNCAr
OTg1LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSwgYm94KDEpIH0pLCAwKTsKLSAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDApIH0pLCAw
KTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgy
KSwgYm94KDEpIH0pLCAyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVz
dWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pLCAyKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDIpIH0pLCA0KTsKLSAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0p
LCAxMik7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMTAwKSwgYm94KDYpIH0pLCA2MDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCgxMDApIH0pLCAxMDAwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgwKSwgYm94KDEpIH0pLCAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDEpLCBib3goMCkgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMiksIGJveCgxKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgxKSwgYm94KDIpIH0pLCAyKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDIpLCBib3goMikgfSksIDQpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCg2KSB9KSwgMTIpOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwg
eyBib3goMTAwKSwgYm94KDYpIH0pLCA2MDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMTAwKSwgYm94KDEwMCkgfSks
IDEwMDAwKTsKICAgICB9CiAKICAgICB7CkBAIC01NzUsMTQgKzEwMzgsMTQgQEAgc3RhdGljIHZv
aWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDApLCBib3goMSkgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDApOwotICAgICAgICBDSEVDS19F
UShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMSkgfSksIDApOwot
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBi
b3goMikgfSksIDEpOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSksIDApOwotICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSksIDEp
OwotICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEw
MCksIGJveCg2KSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDEpIH0pLCAxKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94
KDEpLCBib3goMCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBib3goMiksIGJveCgxKSB9KSwgMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJv
eCgxKSwgYm94KDIpIH0pLCAxKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0tPmpzRW50cnlQb2ludCwgeyBi
b3goMSksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXS0+anNFbnRyeVBvaW50LCB7IGJveCgyKSwgYm94KDYpIH0pLCAxKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLT5qc0VudHJ5UG9pbnQsIHsg
Ym94KDEwMCksIGJveCg2KSB9KSwgMCk7CiAgICAgfQogCiB9CkBAIC01OTYsNyArMTA1OSw2IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpZiAob3B0aW9ucy5tX3J1bkxF
QlRlc3RzKQogICAgICAgICBydW5MRUJUZXN0cygpOwogCi0KICAgICBpZiAob3B0aW9ucy5tX3J1
bldBU01UZXN0cykgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgSlNDOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGI3MWMxYWZhYTk0NDYxNmJhMTdmZWJmYzk1ZWRiY2Fj
NjBkM2NiNC4uNjg2NTUxY2E0ZmUyMjliNmYyMmExODZmNjllNDdjNjVhODlhNjI3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcApAQCAt
MjksMTQgKzI5LDE5IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzRml4U1NBLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIK
ICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXYXNtQWRkcmVzc1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldBU01DYWxs
aW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgorI2luY2x1
ZGUgIldBU01NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogdm9pZCBkdW1w
UHJvY2VkdXJlKHZvaWQqIHB0cikKQEAgLTE2NSwxOCArMTcwLDI1IEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIFZlY3RvcjxWYXJpYWJsZSosIDE+IFJlc3VsdExpc3Q7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJlc3Npb24gPSBudWxscHRyOwogCi0gICAgQjNJ
UkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKKyAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeSosIFByb2Nl
ZHVyZSYpOwogCiAgICAgdm9pZCBhZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+Jik7CiAg
ICAgdm9pZCBhZGRMb2NhbChUeXBlLCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRk
Q29uc3RhbnQoVHlwZSwgdWludDY0X3QpOwogCisgICAgLy8gTG9jYWxzCiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAKKyAgICAvLyBNZW1vcnkKKyAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBsb2FkKExvYWRPcFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCk7CisgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gc3RvcmUoU3RvcmVPcFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpOworCisgICAgLy8gQmFzaWMg
b3BlcmF0b3JzCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYmluYXJ5T3AoQmluYXJ5T3BU
eXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gdW5hcnlPcChVbmFy
eU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAor
ICAgIC8vIENvbnRyb2wgZmxvdwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRCbG9jayhUeXBlIHNpZ25hdHVyZSk7CiAgICAgQ29udHJvbERhdGEgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZExvb3AoVHlwZSBzaWduYXR1cmUpOwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRJZihFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIFR5cGUgc2lnbmF0dXJlKTsK
QEAgLTE5MSwxOCArMjAzLDQxIEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoY29uc3QgVmVjdG9y
PENvbnRyb2xUeXBlPiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVz
c2lvblN0YWNrKTsKIAogcHJpdmF0ZToKKyAgICBFeHByZXNzaW9uVHlwZSBlbWl0Q2hlY2tBbmRQ
cmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIHVp
bnQzMl90IHNpemVPZk9wKTsKKyAgICBFeHByZXNzaW9uVHlwZSBlbWl0TG9hZE9wKExvYWRPcFR5
cGUsIE9yaWdpbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KTsKKyAg
ICB2b2lkIGVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlLCBPcmlnaW4sIEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpOworCiAgICAgdm9p
ZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpOwog
ICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY29uc3QgRXhwcmVzc2lvbkxpc3QmIHJlc3Vs
dFN0YWNrLCBSZXN1bHRMaXN0JiBzdGFjayk7CiAKKyAgICBNZW1vcnkqIG1fbWVtb3J5OwogICAg
IFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAg
IFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOworICAgIEdQUlJlZyBtX21lbW9yeUJhc2VHUFI7
CisgICAgR1BSUmVnIG1fbWVtb3J5U2l6ZUdQUjsKIH07CiAKLUIzSVJHZW5lcmF0b3I6OkIzSVJH
ZW5lcmF0b3IoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQor
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihNZW1vcnkqIG1lbW9yeSwgUHJvY2VkdXJlJiBw
cm9jZWR1cmUpCisgICAgOiBtX21lbW9yeShtZW1vcnkpCisgICAgLCBtX3Byb2MocHJvY2VkdXJl
KQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICBpZiAo
bV9tZW1vcnkpIHsKKyAgICAgICAgbV9tZW1vcnlCYXNlR1BSID0gbV9tZW1vcnktPnBpbm5lZFJl
Z2lzdGVycygpLmJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBtX3Byb2MucGluUmVnaXN0ZXIo
bV9tZW1vcnlCYXNlR1BSKTsKKyAgICAgICAgQVNTRVJUKCFtX21lbW9yeS0+cGlubmVkUmVnaXN0
ZXJzKCkuc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKKyAgICAgICAgbV9tZW1vcnlTaXpl
R1BSID0gbV9tZW1vcnktPnBpbm5lZFJlZ2lzdGVycygpLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJl
Z2lzdGVyOworICAgICAgICBmb3IgKGNvbnN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8mIGluZm8g
OiBtX21lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuc2l6ZVJlZ2lzdGVycykKKyAgICAgICAgICAg
IG1fcHJvYy5waW5SZWdpc3RlcihpbmZvLnNpemVSZWdpc3Rlcik7CisgICAgfQorCisgICAgbV9w
cm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBH
UFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCkgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHBpbm5l
ZEdQUiwgbV9tZW1vcnlTaXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB1bndpbmQgdGhlIHN0YWNrIGFuZCB0aHJvdyBhIEpTIGV4Y2VwdGlvbi4gU2Vl
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzUxCisgICAgICAg
IGppdC5icmVha3BvaW50KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgQjNJUkdlbmVyYXRvcjo6YWRk
TG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkKQEAgLTIyNCwyMCArMjU5LDE4OCBAQCB2
b2lkIEIzSVJHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mIHR5cGVz
KQogICAgICAgICB9KTsKIH0KIAotYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVyYXRv
cjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCitib29s
IEIzSVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KQogewogICAgIEFTU0VSVChtX2xvY2Fsc1tpbmRleF0pOwogICAgIHJlc3VsdCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0LCBP
cmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gQjNJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlIHZhbHVlKQorYm9vbCBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fbG9jYWxz
W2luZGV4XSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPiht
X3Byb2MsIEIzOjpTZXQsIE9yaWdpbigpLCBtX2xvY2Fsc1tpbmRleF0sIHZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tB
bmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQs
IHVpbnQzMl90IHNpemVPZk9wZXJhdGlvbikKK3sKKyAgICBBU1NFUlQobV9tZW1vcnlCYXNlR1BS
ICYmIG1fbWVtb3J5U2l6ZUdQUik7CisgICAgQVNTRVJUKHNpemVPZk9wZXJhdGlvbiArIG9mZnNl
dCA+IG9mZnNldCk7CisgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hl
Y2tWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgcG9pbnRlciwgbV9tZW1vcnlTaXplR1BSLCBzaXpl
T2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAxKTsKKyAgICBwb2ludGVyID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKKyAg
ICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQWRkcmVzc1ZhbHVlPihtX3By
b2MsIE9yaWdpbigpLCBwb2ludGVyLCBtX21lbW9yeUJhc2VHUFIpOworfQorCitpbmxpbmUgdWlu
dDMyX3Qgc2l6ZU9mTG9hZE9wKExvYWRPcFR5cGUgb3ApCit7CisgICAgc3dpdGNoIChvcCkgewor
ICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMy
TG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhTOgorICAgIGNhc2UgTG9hZE9w
VHlwZTo6STY0TG9hZDhVOgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIExvYWRPcFR5cGU6
OkkzMkxvYWQxNlM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOgorICAgICAgICBy
ZXR1cm4gMjsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAgY2FzZSBMb2FkT3BU
eXBlOjpJNjRMb2FkMzJTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyVToKKyAgICAg
ICAgcmV0dXJuIDQ7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOgorICAgICAgICByZXR1
cm4gODsKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlU6CisgICAgY2FzZSBMb2FkT3BU
eXBlOjpJNjRMb2FkMTZVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6RjMyTG9hZDoKKyAgICBjYXNl
IExvYWRPcFR5cGU6OkY2NExvYWQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6
OmVtaXRMb2FkT3AoTG9hZE9wVHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhwcmVzc2lvblR5cGUg
cG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNl
IExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFMsIG9yaWdpbiwgcG9pbnRlciwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQ4UzogeworICAg
ICAgICBWYWx1ZSogdmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIExvYWQ4Uywgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9yaWdp
biwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhVOiB7Cisg
ICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQ4Wiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOworICAgIH0KKworICAgIGNhc2Ug
TG9hZE9wVHlwZTo6STY0TG9hZDhVOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4sIHBv
aW50ZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwgb3JpZ2luLCB2YWx1ZSk7CisgICAgfQorCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOiB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQxNlMsIG9yaWdpbiwgcG9pbnRl
ciwgb2Zmc2V0KTsKKyAgICB9CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOiB7Cisg
ICAgICAgIFZhbHVlKiB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgTG9hZDE2Uywgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTRXh0MzIsIG9y
aWdpbiwgdmFsdWUpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDogewor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyKTsKKyAgICB9CisKKyAgICBjYXNlIExv
YWRPcFR5cGU6Okk2NExvYWQzMlU6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2lu
LCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgWkV4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExv
YWRPcFR5cGU6Okk2NExvYWQzMlM6IHsKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2lu
LCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgU0V4dDMyLCBvcmlnaW4sIHZhbHVlKTsKKyAgICB9CisKKyAgICBjYXNlIExv
YWRPcFR5cGU6Okk2NExvYWQ6IHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbiwgcG9pbnRlcik7
CisgICAgfQorCisgICAgY2FzZSBMb2FkT3BUeXBlOjpGMzJMb2FkOiB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEZs
b2F0LCBvcmlnaW4sIHBvaW50ZXIpOworICAgIH0KKworICAgIGNhc2UgTG9hZE9wVHlwZTo6RjY0
TG9hZDogeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBEb3VibGUsIG9yaWdpbiwgcG9pbnRlcik7CisgICAgfQorCisg
ICAgLy8gQjMgZG9lc24ndCBzdXBwb3J0IExvYWQxNlogeWV0LgorICAgIGNhc2UgTG9hZE9wVHlw
ZTo6STMyTG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlU6CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiti
b29sIEIzSVJHZW5lcmF0b3I6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9p
bnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KQoreworICAgIEFT
U0VSVChwb2ludGVyLT50eXBlKCkgPT0gSW50MzIpOworCisgICAgcmVzdWx0ID0gZW1pdExvYWRP
cChvcCwgT3JpZ2luKCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHBvaW50ZXIsIG9mZnNl
dCwgc2l6ZU9mTG9hZE9wKG9wKSksIG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lu
bGluZSB1aW50MzJfdCBzaXplT2ZTdG9yZU9wKFN0b3JlT3BUeXBlIG9wKQoreworICAgIHN3aXRj
aCAob3ApIHsKKyAgICBjYXNlIFN0b3JlT3BUeXBlOjpJMzJTdG9yZTg6CisgICAgY2FzZSBTdG9y
ZU9wVHlwZTo6STY0U3RvcmU4OgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFN0b3JlT3BU
eXBlOjpJMzJTdG9yZTE2OgorICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlMTY6CisgICAg
ICAgIHJldHVybiAyOworICAgIGNhc2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlOgorICAgIGNhc2Ug
U3RvcmVPcFR5cGU6Okk2NFN0b3JlMzI6CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6RjMyU3RvcmU6
CisgICAgICAgIHJldHVybiA0OworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlOgorICAg
IGNhc2UgU3RvcmVPcFR5cGU6OkY2NFN0b3JlOgorICAgICAgICByZXR1cm4gODsKKyAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworCitpbmxpbmUgdm9pZCBCM0lS
R2VuZXJhdG9yOjplbWl0U3RvcmVPcChTdG9yZU9wVHlwZSBvcCwgT3JpZ2luIG9yaWdpbiwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90IG9mZnNl
dCkKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4
OgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VHSDsKKworICAgIGNh
c2UgU3RvcmVPcFR5cGU6OkkzMlN0b3JlODoKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTgsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIs
IG9mZnNldCk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0
b3JlMTY6CisgICAgICAgIHZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBUcnVuYywgb3JpZ2luLCB2YWx1ZSk7CisgICAgICAgIEZBTExUSFJPVUdIOworCisg
ICAgY2FzZSBTdG9yZU9wVHlwZTo6STMyU3RvcmUxNjoKKyAgICAgICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTE2LCBvcmlnaW4sIHZhbHVlLCBw
b2ludGVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN0b3JlT3BUeXBl
OjpJNjRTdG9yZTMyOgorICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgVHJ1bmMsIG9yaWdpbiwgdmFsdWUpOworICAgICAgICBGQUxMVEhST1VH
SDsKKworICAgIGNhc2UgU3RvcmVPcFR5cGU6Okk2NFN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5
cGU6OkkzMlN0b3JlOgorICAgIGNhc2UgU3RvcmVPcFR5cGU6OkYzMlN0b3JlOgorICAgIGNhc2Ug
U3RvcmVPcFR5cGU6OkY2NFN0b3JlOgorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyLCBvZmZz
ZXQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6c3RvcmUoU3RvcmVPcFR5cGUgb3AsIEV4
cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZz
ZXQpCit7CisgICAgQVNTRVJUKHBvaW50ZXItPnR5cGUoKSA9PSBJbnQzMik7CisKKyAgICBlbWl0
U3RvcmVPcChvcCwgT3JpZ2luKCksIGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKHBvaW50ZXIs
IG9mZnNldCwgc2l6ZU9mU3RvcmVPcChvcCkpLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9wLCBF
eHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBP
cmlnaW4oKSwgYXJnKTsKQEAgLTQwMywxMCArNjA2LDY5IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbFR5cGU+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJl
c3NpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGls
YXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBG
dW5jdGlvbkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQorCitzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwg
TWVtb3J5KiBtZW1vcnkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBDaGVjayBhcmd1bWVudCBjb3VudCBp
cyBzYW5lLgorICAgIFZhbHVlKiBmcmFtZVBvaW50ZXIgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4ocHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpOworICAgIFZhbHVlKiBvZmZT
ZXRPZkFyZ3VtZW50Q291bnQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnRDb3VudCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgYmxvY2stPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZnJhbWVQb2ludGVyLCBvZmZTZXRPZkFyZ3Vt
ZW50Q291bnQpKTsKKworICAgIFZhbHVlKiBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSBibG9jay0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpZ25hdHVyZS0+YXJndW1l
bnRzLnNpemUoKSk7CisKKyAgICBDaGVja1ZhbHVlKiBhcmd1bWVudENvdW50Q2hlY2sgPSBibG9j
ay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrLCBPcmlnaW4oKSwKKyAgICAgICAg
YmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJvdmUsIE9yaWdpbigpLCBleHBlY3RlZEFy
Z3VtZW50Q291bnQsIGFyZ3VtZW50Q291bnQpKTsKKyAgICBhcmd1bWVudENvdW50Q2hlY2stPnNl
dEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsKKworICAgIC8v
IE1vdmUgbWVtb3J5IHZhbHVlcyB0byB0aGUgYXBwcm9yaWF0ZSBwbGFjZXMsIGlmIG5lZWRlZC4K
KyAgICBWYWx1ZSogYmFzZU1lbW9yeSA9IG51bGxwdHI7CisgICAgVmVjdG9yPFZhbHVlKj4gc2l6
ZXM7CisgICAgaWYgKG1lbW9yeSkgeworICAgICAgICBiYXNlTWVtb3J5ID0gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWVtb3J5LT5tZW1vcnkoKSk7Cisg
ICAgICAgIFZhbHVlKiBzaXplID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PGNoYXIqPihtZW1vcnkpICsg
TWVtb3J5OjpvZmZzZXRPZlNpemUoKSkpOworICAgICAgICBzaXplcy5yZXNlcnZlQ2FwYWNpdHko
bWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzLnNpemUoKSk7CisgICAgICAg
IGZvciAoYXV0byBpbmZvIDogbWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJz
KSB7CisgICAgICAgICAgICBzaXplcy5hcHBlbmQoYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgc2l6ZSwKKyAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGluZm8uc2l6ZU9mZnNldCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIEdldCBvdXIgYXJndW1lbnRzLgorICAgIFZlY3RvcjxWYWx1
ZSo+IGFyZ3VtZW50czsKKyAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLml0ZXJhdGUoc2lnbmF0
dXJlLT5hcmd1bWVudHMsIHByb2MsIGJsb2NrLCBPcmlnaW4oKSwgWyZdIChWYWx1ZSogYXJndW1l
bnQsIHVuc2lnbmVkKSB7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOworICAg
IH0pOworCisgICAgLy8gTW92ZSB0aGUgYXJndW1lbnRzIGludG8gcGxhY2UuCisgICAgVmFsdWUq
IHJlc3VsdCA9IGpzY0NhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKHByb2MsIGJsb2NrLCBP
cmlnaW4oKSwgbWFpbkZ1bmN0aW9uLCBhcmd1bWVudHMsIHRvQjNUeXBlKHNpZ25hdHVyZS0+cmV0
dXJuVHlwZSksIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CisgICAgICAgIGlm
IChtZW1vcnkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzaXplcy5zaXplKCkgPT0gbWVtb3J5LT5w
aW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShiYXNlTWVtb3J5LCBWYWx1ZVJlcDo6cmVn
KG1lbW9yeS0+cGlubmVkUmVnaXN0ZXJzKCkuYmFzZU1lbW9yeVBvaW50ZXIpKSk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZXMuc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoc2l6ZXNbaV0sIFZh
bHVlUmVwOjpyZWcobWVtb3J5LT5waW5uZWRSZWdpc3RlcnMoKS5zaXplUmVnaXN0ZXJzW2ldLnNp
emVSZWdpc3RlcikpKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gUmV0dXJuIHRoZSBy
ZXN1bHQsIGlmIG5lZWRlZC4KKyAgICBpZiAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlICE9IFZvaWQp
CisgICAgICAgIGJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgQjM6OlJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgZWxzZQorICAgICAgICBibG9jay0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIEIzOjpSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvYyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWlu
dDhfdD4mIHNvdXJjZSwgTWVtb3J5KiBtZW1vcnksIEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywg
dW5zaWduZWQgb3B0TGV2ZWwpCiB7CiAgICAgUHJvY2VkdXJlIHByb2NlZHVyZTsKLSAgICBCM0lS
R2VuZXJhdG9yIGNvbnRleHQocHJvY2VkdXJlKTsKKyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQo
bWVtb3J5LCBwcm9jZWR1cmUpOwogICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBh
cnNlcihjb250ZXh0LCBzb3VyY2UsIGluZm8pOwogICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MTcsNyArNjc5LDExIEBA
IHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVj
dG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIEZ1CiAgICAgZml4U1NBKHByb2NlZHVyZSk7CiAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRM
ZXZlbCk7CisgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uQ29tcGls
YXRpb24+KCk7CisKKyAgICByZXN1bHQtPmNvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0
aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CisgICAgcmVzdWx0LT5qc0VudHJ5UG9pbnQg
PSBjcmVhdGVKU1dyYXBwZXIodm0sIGluZm8uc2lnbmF0dXJlLCByZXN1bHQtPmNvZGUtPmNvZGUo
KSwgbWVtb3J5KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9y
LmgKaW5kZXggOTUxOTZkYmU1NzdkYWFmYWJhOTc4YTU2MDRjOTA2Y2Q2NTViZmM4My4uZjgyODJk
MGM5NTVjMjZmN2U3YzAxMjQ1Nzk3Yjk5MTZkNGRiOTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCkBAIC0zNSw3ICszNSw5IEBAIGV4dGVy
biAiQyIgdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqKTsKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBXQVNNIHsKIAotc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gcGFyc2VBbmRD
b21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+JiwgRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWdu
ZWQgb3B0TGV2ZWwgPSAxKTsKK2NsYXNzIE1lbW9yeTsKKworc3RkOjp1bmlxdWVfcHRyPEZ1bmN0
aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIE1l
bW9yeSosIEZ1bmN0aW9uSW5mb3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmgKaW5kZXggNzg5NTkzMTAyNGE1M2Q2N2Q1Yzc5
Yjk0NGVjZjJiMmI1MmFiMTc0NS4uNjEzNWY3MzcwNWFlOWI2YmEwMDA0OWY0YzIwNjRlZDllYTdl
NTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdD
b252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdD
b252ZW50aW9uLmgKQEAgLTI3LDIzICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVk
ZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCiAjaW5j
bHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUuaCIK
ICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUu
aCIKKyNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiV0FTTUZvcm1hdC5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00gewogCi10eXBlZGVmIHVuc2lnbmVkICgq
TmV4dE9mZnNldCkodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlwZSB0eXBlKTsKK3R5cGVkZWYg
dW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBCMzo6VHlwZSB0
eXBlKTsKIAotdGVtcGxhdGU8dW5zaWduZWQgb2Zmc2V0LCBOZXh0T2Zmc2V0IHVwZGF0ZU9mZnNl
dD4KK3RlbXBsYXRlPHVuc2lnbmVkIGhlYWRlclNpemUsIE5leHRPZmZzZXQgdXBkYXRlT2Zmc2V0
PgogY2xhc3MgQ2FsbGluZ0NvbnZlbnRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBoZWFkZXJTaXplID0gb2Zmc2V0OwotCiAgICAgQ2FsbGluZ0NvbnZlbnRpb24oVmVj
dG9yPEdQUlJlZz4mJiByZWdpc3RlckFyZ3VtZW50cywgUmVnaXN0ZXJTZXQmJiBjYWxsZWVTYXZl
UmVnaXN0ZXJzKQogICAgICAgICA6IG1fcmVnaXN0ZXJBcmd1bWVudHMocmVnaXN0ZXJBcmd1bWVu
dHMpCiAgICAgICAgICwgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdpc3RlcnMp
CkBAIC02NCwxOCArNjgsNTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIEIzOjpWYWx1ZSog
YWRkcmVzcyA9IGJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihwcm9jLCBCMzo6QWRkLCBvcmln
aW4sIGZyYW1lUG9pbnRlciwKICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxC
Mzo6Q29uc3Q2NFZhbHVlPihwcm9jLCBvcmlnaW4sIGN1cnJlbnRPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBhcmd1bWVudCA9IGJsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihwcm9j
LCBCMzo6TG9hZCwgdG9CM1R5cGUoYXJndW1lbnRUeXBlc1tpXSksIG9yaWdpbiwgYWRkcmVzcyk7
Ci0gICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCA9IHVwZGF0ZU9mZnNldChjdXJyZW50T2Zm
c2V0LCBhcmd1bWVudFR5cGVzW2ldKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0g
dXBkYXRlT2Zmc2V0KGN1cnJlbnRPZmZzZXQsIHRvQjNUeXBlKGFyZ3VtZW50VHlwZXNbaV0pKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZ1bmN0b3IoYXJndW1lbnQsIGkpOwogICAgICAg
ICB9CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBCMzo6VmFs
dWUqIHNldHVwQ2FsbChCMzo6UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvY2ss
IEIzOjpPcmlnaW4gb3JpZ2luLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0LCBjb25zdCBW
ZWN0b3I8QjM6OlZhbHVlKj4mIGFyZ3VtZW50cywgQjM6OlR5cGUgcmV0dXJuVHlwZSwgY29uc3Qg
RnVuY3RvciYgcGF0Y2hwb2ludEZ1bmN0b3IpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3Qg
c3RhY2tBcmd1bWVudENvdW50ID0gYXJndW1lbnRzLnNpemUoKSA8IG1fcmVnaXN0ZXJBcmd1bWVu
dHMuc2l6ZSgpID8gMCA6IGFyZ3VtZW50cy5zaXplKCkgLSBtX3JlZ2lzdGVyQXJndW1lbnRzLnNp
emUoKTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gaGVhZGVyU2l6ZSAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKTsKKworICAgICAgICBwcm9jLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5
dGVzKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIGhlYWRl
clNpemUgKyAoc3RhY2tBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICAg
ICAgVmVjdG9yPEIzOjpDb25zdHJhaW5lZFZhbHVlPiBjb25zdHJhaW5lZEFyZ3VtZW50czsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgQjM6OlZhbHVlUmVwIHJlcDsKKyAgICAgICAgICAgIGlmIChpIDwgbV9yZWdp
c3RlckFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICAgICAgcmVwID0gQjM6OlZhbHVlUmVw
OjpyZWcobV9yZWdpc3RlckFyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmVwID0gQjM6OlZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KG9mZnNldCk7CisgICAg
ICAgICAgICBjb25zdHJhaW5lZEFyZ3VtZW50cy5hcHBlbmQoQjM6OkNvbnN0cmFpbmVkVmFsdWUo
YXJndW1lbnRzW2ldLCByZXApKTsKKyAgICAgICAgICAgIG9mZnNldCA9IHVwZGF0ZU9mZnNldChv
ZmZzZXQsIGFyZ3VtZW50c1tpXS0+dHlwZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEIzOjpQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBv
aW50VmFsdWU+KHByb2MsIHJldHVyblR5cGUsIG9yaWdpbik7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFZlY3Rvcihjb25zdHJhaW5lZEFyZ3VtZW50cyk7CisgICAgICAgIHBhdGNocG9pbnRG
dW5jdG9yKHBhdGNocG9pbnQpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKKworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2Fs
bCgpOworICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgeworICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0
cih0YXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGlmIChyZXR1cm5UeXBlID09IEIzOjpWb2lkKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9
IEIzOjpWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgcmV0
dXJuIHBhdGNocG9pbnQ7CisgICAgfQorCiAgICAgY29uc3QgVmVjdG9yPEdQUlJlZz4gbV9yZWdp
c3RlckFyZ3VtZW50czsKICAgICBjb25zdCBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdpc3Rl
cnM7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQgbV9jYWxsZXJTYXZlUmVnaXN0ZXJzOwogfTsKIAot
aW5saW5lIHVuc2lnbmVkIG5leHRKU0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlw
ZSkKK2lubGluZSB1bnNpZ25lZCBuZXh0SlNDT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQs
IEIzOjpUeXBlKQogewogICAgIHJldHVybiBjdXJyZW50T2Zmc2V0ICsgc2l6ZW9mKFJlZ2lzdGVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCA3YTA0MTM3
ZTNjNzBmMTgyNDcxMGFjZDk4ODQ3ZjcyMTU2MjRkMDFkLi4xZTEwODEwZDNmZjZlZTBhODc2NGIz
MmIzNmU4MDU2ZGQzNDVhNmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1h
dC5oCkBAIC00NCw2ICs0NCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNs
dWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTI2LDYgKzEy
NywxMSBAQCBzdHJ1Y3QgRnVuY3Rpb25JbmZvcm1hdGlvbiB7CiAgICAgc2l6ZV90IGVuZDsKIH07
CiAKK3N0cnVjdCBGdW5jdGlvbkNvbXBpbGF0aW9uIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QjM6
OkNvbXBpbGF0aW9uPiBjb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+
IGpzRW50cnlQb2ludDsKK307CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01GdW5jdGlvblBhcnNlci5oCmluZGV4IGFlODc0MjQwYzkyMjhkMmQ4Mzk3NDQ2ZTE1ODdh
MmQ0NDY5MWZhM2QuLjQ0NzFhMmNmNTcxNzgxODI1OTUyNDJkMDM5NGY0NzY5ZTc5ZTNiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBA
IC0xNTQsNiArMTU0LDM3IEBAIGJvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbihPcFR5cGUgb3ApCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIEZP
Ul9FQUNIX1dBU01fTUVNT1JZX0xPQURfT1AoQ1JFQVRFX0NBU0UpIHsKKyAgICAgICAgdWludDMy
X3QgYWxpZ25tZW50OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGFsaWdubWVudCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0OworICAg
ICAgICBpZiAoIXBhcnNlVmFyVUludDMyKG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9IG1fZXhwcmVzc2lvblN0YWNr
LnRha2VMYXN0KCk7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKKyAgICAgICAgaWYg
KCFtX2NvbnRleHQubG9hZChzdGF0aWNfY2FzdDxMb2FkT3BUeXBlPihvcCksIHBvaW50ZXIsIHJl
c3VsdCwgb2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9leHBy
ZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKSB7CisgICAg
ICAgIHVpbnQzMl90IGFsaWdubWVudDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihhbGln
bm1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQzMl90IG9m
ZnNldDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihvZmZzZXQpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIHZhbHVlID0gbV9leHByZXNz
aW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgcG9pbnRlciA9IG1f
ZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuc3Rv
cmUoc3RhdGljX2Nhc3Q8U3RvcmVPcFR5cGU+KG9wKSwgcG9pbnRlciwgdmFsdWUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgY2FzZSBPcFR5cGU6OkkzMkNvbnN0OiB7CiAgICAgICAgIHVpbnQzMl90
IGNvbnN0YW50OwogICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvbnN0YW50KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlYzk1N2Y2
MzAyOTA5MWI3OTBhNmYyMDEzYzYyNmZlNzAyMjljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0FTTU1lbW9yeS5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdBU00geworCitNZW1vcnk6Ok1lbW9yeSh1
aW50MzJfdCBzdGFydGluZ1NpemUsIHVpbnQzMl90IGNhcGFjaXR5LCBjb25zdCBWZWN0b3I8dW5z
aWduZWQ+JiBwaW5uZWRTaXplUmVnaXN0ZXJzKQorICAgIDogbV9tb2RlKE1vZGU6OkJvdW5kc0No
ZWNraW5nKQorICAgICwgbV9zaXplKHN0YXJ0aW5nU2l6ZSkKKyAgICAsIG1fY2FwYWNpdHkoY2Fw
YWNpdHkpCisgICAgLy8gRklYTUU6IElmIHdlIGFkZCBzaWduYWwgYmFzZWQgYm91bmRzIGNoZWNr
aW5nIHRoZW4gd2UgbmVlZCBleHRyYSBzcGFjZSBmb3Igb3ZlcmZsb3cgb24gbG9hZC4KKyAgICAv
LyBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAg
ICAsIG1fbWFwcGVkQ2FwYWNpdHkoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFBhZ2VDb3VudCkg
KiBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFnZVNpemUpKQoreworICAgIEFTU0VSVChwaW5uZWRT
aXplUmVnaXN0ZXJzLnNpemUoKSA+IDApOworCisgICAgdm9pZCogcmVzdWx0ID0gbW1hcChudWxs
cHRyLCBtX21hcHBlZENhcGFjaXR5LCBQUk9UX05PTkUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04s
IDAsIDApOworICAgIGlmIChyZXN1bHQgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICAvLyBUcnkg
YWdhaW4gd2l0aCBhIGRpZmZlcmVudCBudW1iZXIuCisgICAgICAgIG1fbWFwcGVkQ2FwYWNpdHkg
PSBtX2NhcGFjaXR5OworICAgICAgICByZXN1bHQgPSBtbWFwKG51bGxwdHIsIG1fbWFwcGVkQ2Fw
YWNpdHksIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgMCwgMCk7CisgICAgICAg
IGlmIChyZXN1bHQgPT0gTUFQX0ZBSUxFRCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobXByb3RlY3QocmVzdWx0LCBzdGFydGluZ1NpemUsIFBST1RfUkVBRCB8IFBST1Rf
V1JJVEUpKSB7CisgICAgICAgIG11bm1hcChyZXN1bHQsIG1fbWFwcGVkQ2FwYWNpdHkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0
ZXJzID0gcGlubmVkU2l6ZVJlZ2lzdGVycy5zaXplKCkgKyAxOworICAgIGpzY0NhbGxpbmdDb252
ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7Cisg
ICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmICghcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocmVtYWluaW5nUGlubmVkUmVnaXN0ZXJz
ID09IDEpIHsKKyAgICAgICAgICAgIG1fcGlubmVkUmVnaXN0ZXJzLmJhc2VNZW1vcnlQb2ludGVy
ID0gZ3ByOworICAgICAgICAgICAgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9waW5uZWRSZWdpc3RlcnMuc2l6ZVJlZ2lzdGVycy5hcHBl
bmQoeyBncHIsIHBpbm5lZFNpemVSZWdpc3RlcnNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMg
LSAxXSB9KTsKKyAgICB9KTsKKworICAgIEFTU0VSVCghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJz
KTsKKyAgICBtX21lbW9yeSA9IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK30g
Ly8gbmFtZXNwYWNlIFdBU00KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01NZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzE3YWVmMDBhMGQ5
ODUyMTMxZmVkNDMxZWI5MDNmYjY4MGNmN2U1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU1lbW9yeS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIldBU01DYWxsaW5nQ29udmVudGlvbi5o
IgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdBU00geworCitzdHJ1Y3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyB7CisgICAgR1BSUmVnIHNp
emVSZWdpc3RlcjsKKyAgICB1bnNpZ25lZCBzaXplT2Zmc2V0OworfTsKKworLy8gRklYTUU6IFdl
IHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIuIFJpZ2h0
IG5vdyB3ZSB0YWtlIGEgdmVjdG9yIHdpdGggb25seSBvbmUKKy8vIGVudHJ5LiBTcGVjaWZpY2Fs
bHkgYW4gZXh0cnkgd2hlcmUgdGhlIHNpemVPZmZzZXQgPT0gMC4gSWYgd2UgaGF2ZSBtb3JlIHRo
YW4gb25lIHNpemUgcmVnaXN0ZXIsCisvLyB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVhY2ggbG9hZCBz
aXplIGNsYXNzLiBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI5NTIKK3N0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8geworICAgIFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOworICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRl
cjsKK307CisKK2NvbnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7Citjb25zdGV4
cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8
IDMyKSAvIHBhZ2VTaXplKTsKKworY2xhc3MgTWVtb3J5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShNZW1vcnkpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG90aGVyIG1vZGVzLiBzZWU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTMKKyAgICBlbnVtIGNsYXNzIE1v
ZGUgeworICAgICAgICBCb3VuZHNDaGVja2luZworICAgIH07CisKKyAgICBNZW1vcnkoKSA9IGRl
ZmF1bHQ7CisgICAgTWVtb3J5KHVpbnQzMl90IHN0YXJ0aW5nU2l6ZSwgdWludDMyX3QgY2FwYWNp
dHksIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHBpbm5lZFNpemVSZWdpc3RlcnMpOworCisgICAg
fk1lbW9yeSgpCisgICAgeworICAgICAgICBpZiAobV9tZW1vcnkpCisgICAgICAgICAgICBtdW5t
YXAobV9tZW1vcnksIG1fbWFwcGVkQ2FwYWNpdHkpOworICAgIH0KKworICAgIHZvaWQqIG1lbW9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5OyB9CisgICAgdWludDMyX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVk
UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9waW5uZWRSZWdpc3RlcnM7IH0KKworICAgIE1v
ZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorCisgICAgYm9vbCBncm93KHVpbnQz
Ml90IG5ld1NpemUpCisgICAgeworICAgICAgICBBU1NFUlQobV9tZW1vcnkpOworICAgICAgICBp
ZiAobmV3U2l6ZSA+IG1fY2FwYWNpdHkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgcmV0dXJuICFtcHJvdGVjdChtX21lbW9yeSwgbmV3U2l6ZSwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CisgICAgCitwcml2YXRl
OgorICAgIHZvaWQqIG1fbWVtb3J5IHsgbnVsbHB0ciB9OworICAgIFBpbm5lZFJlZ2lzdGVySW5m
byBtX3Bpbm5lZFJlZ2lzdGVyczsKKyAgICBNb2RlIG1fbW9kZTsKKyAgICB1aW50MzJfdCBtX3Np
emUgeyAwIH07CisgICAgdWludDMyX3QgbV9jYXBhY2l0eSB7IDAgfTsKKyAgICB1aW50NjRfdCBt
X21hcHBlZENhcGFjaXR5IHsgMCB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OldBU00K
KworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAppbmRleCA1ZTA1M2E1YTc5MDNhNTRlYjg2NDU2
NDY4MmUzZTlkMTcxMGIyMTY0Li5kY2RlNzRjYzFhNTE0YjMzMGM4ZmYxZDc2ZGU3M2ViMTFjZjE0
MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmNwcApAQCAtMjgsMTAgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNp
bmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVk
ZSAiV0FTTU9wcy5oIgogI2luY2x1ZGUgIldBU01TZWN0aW9ucy5oIgogCisjaW5jbHVkZSA8c3lz
L21tYW4uaD4KKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXQVNNIHsKIAogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAtNjIsMTUgKzY1LDE2IEBAIGJvb2wgTW9kdWxl
UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
Z0xuKCJTdGFydGluZyB0byBwYXJzZSBuZXh0IHNlY3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNl
dCk7CiAKLSAgICAgICAgU2VjdGlvbnM6OlNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb25zOjpVbmtu
b3duOwogICAgICAgICB1aW50OF90IHNlY3Rpb25CeXRlOwogICAgICAgICBpZiAoIXBhcnNlVUlu
dDcoc2VjdGlvbkJ5dGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZ0xuKCJTZWN0aW9uIGJ5dGU6ICIsIHNlY3Rp
b25CeXRlKTsKKworICAgICAgICBTZWN0aW9uczo6U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6
OlVua25vd247CiAgICAgICAgIGlmIChzZWN0aW9uQnl0ZSkgewotICAgICAgICAgICAgaWYgKHNl
Y3Rpb25CeXRlID49IFNlY3Rpb25zOjpVbmtub3duKQotICAgICAgICAgICAgICAgIHNlY3Rpb24g
PSBTZWN0aW9uczo6VW5rbm93bjsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChz
ZWN0aW9uQnl0ZSA8IFNlY3Rpb25zOjpVbmtub3duKQogICAgICAgICAgICAgICAgIHNlY3Rpb24g
PSBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2VjdGlvbj4oc2VjdGlvbkJ5dGUpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgdWludDMyX3Qgc2VjdGlvbk5hbWVMZW5ndGg7CkBAIC05Niw2
ICsxMDAsMTUgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgdW5zaWduZWQg
ZW5kID0gbV9vZmZzZXQgKyBzZWN0aW9uTGVuZ3RoOwogCiAgICAgICAgIHN3aXRjaCAoc2VjdGlv
bikgeworCisgICAgICAgIGNhc2UgU2VjdGlvbnM6Ok1lbW9yeTogeworICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5nIE1lbW9yeS4iKTsK
KyAgICAgICAgICAgIGlmICghcGFyc2VNZW1vcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU2Vj
dGlvbnM6OkZ1bmN0aW9uVHlwZXM6IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyB0eXBlcy4iKTsKQEAgLTE0Myw2ICsxNTYsMzQg
QEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBNb2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5KCkKK3sKKyAgICB1aW50OF90IGZsYWdzOworICAg
IGlmICghcGFyc2VWYXJVSW50MShmbGFncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzaXplKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChzaXplID4gbWF4UGFnZUNvdW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB1aW50MzJfdCBjYXBhY2l0eSA9IG1heFBhZ2VDb3VudDsKKyAgICBp
ZiAoZmxhZ3MpIHsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihjYXBhY2l0eSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzaXplID4gY2FwYWNpdHkgfHwgY2Fw
YWNpdHkgPiBtYXhQYWdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY2FwYWNpdHkgKj0gcGFnZVNpemU7CisgICAgc2l6ZSAqPSBwYWdlU2l6ZTsKKworICAg
IFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKKyAgICBtX21lbW9yeSA9IHN0
ZDo6bWFrZV91bmlxdWU8TWVtb3J5PihzaXplLCBjYXBhY2l0eSwgcGlubmVkU2l6ZXMpOworICAg
IHJldHVybiBtX21lbW9yeS0+bWVtb3J5KCk7Cit9CisKIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJz
ZUZ1bmN0aW9uVHlwZXMoKQogewogICAgIHVpbnQzMl90IGNvdW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCmluZGV4IDQ2MGJlOGZiYjM2ZjAyZmFm
NGFkNTM4YjFjZTUyYjJlZDUxMjU0ZmQuLjc1ZTRkMTBhZGY2MDM0NzczODc3YzFlZjBhYmQ2MWM0
ZmEyNDY0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1
bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFy
c2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2lu
Y2x1ZGUgIldBU01NZW1vcnkuaCIKICNpbmNsdWRlICJXQVNNT3BzLmgiCiAjaW5jbHVkZSAiV0FT
TVBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ1LDE4ICs0NiwxOSBAQCBw
dWJsaWM6CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCi0gICAgY29u
c3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5jdGlvbkluZm9ybWF0aW9uKCkgeyBy
ZXR1cm4gbV9mdW5jdGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlv
bj4mIGZ1bmN0aW9uSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeTsg
fQogCiBwcml2YXRlOgorICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlTWVtb3J5KCk7
CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblR5cGVzKCk7CiAgICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblNpZ25hdHVyZXMoKTsKICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKTsKICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbih1aW50MzJfdCBu
dW1iZXIpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQmxvY2soKTsKLSAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Npb24oT3BUeXBlKTsKIAogICAgIFZl
Y3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiBtX2Z1bmN0aW9uczsKICAgICBWZWN0b3I8U2lnbmF0
dXJlPiBtX3NpZ25hdHVyZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeT4gbV9tZW1vcnk7
CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU9wcy5oCmluZGV4IDZlZjViZDRkMTYwZDMxZjcxMDMxOWUzZTdjYzc3OGZhNGZjODc3ZGMu
LjZkMzQ4OGNmNDk4MDQzM2U5MDRiYWUwMDU0NDQ4MzdjYWQwMDJlNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNT3BzLmgKQEAgLTE1OSwxMyArMTU5LDQyIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV0FTTSB7CiAgICAgbWFjcm8oRjY0R3QsIDB4OWIsIE9vcHMpIFwKICAgICBt
YWNybyhGNjRHZSwgMHg5YywgT29wcykKIAorI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9M
T0FEX09QKG1hY3JvKSBcCisgICAgbWFjcm8oSTMyTG9hZDhTLCAweDIwLCBPb3BzKSBcCisgICAg
bWFjcm8oSTMyTG9hZDhVLCAweDIxLCBPb3BzKSBcCisgICAgbWFjcm8oSTMyTG9hZDE2UywgMHgy
MiwgT29wcykgXAorICAgIG1hY3JvKEkzMkxvYWQxNlUsIDB4MjMsIE9vcHMpIFwKKyAgICBtYWNy
byhJNjRMb2FkOFMsIDB4MjQsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRMb2FkOFUsIDB4MjUsIE9v
cHMpIFwKKyAgICBtYWNybyhJNjRMb2FkMTZTLCAweDI2LCBPb3BzKSBcCisgICAgbWFjcm8oSTY0
TG9hZDE2VSwgMHgyNywgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQzMlMsIDB4MjgsIE9vcHMp
IFwKKyAgICBtYWNybyhJNjRMb2FkMzJVLCAweDI5LCBPb3BzKSBcCisgICAgbWFjcm8oSTMyTG9h
ZCwgMHgyYSwgT29wcykgXAorICAgIG1hY3JvKEk2NExvYWQsIDB4MmIsIE9vcHMpIFwKKyAgICBt
YWNybyhGMzJMb2FkLCAweDJjLCBPb3BzKSBcCisgICAgbWFjcm8oRjY0TG9hZCwgMHgyZCwgT29w
cykKKworI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykgXAorICAg
IG1hY3JvKEkzMlN0b3JlOCwgMHgyZSwgT29wcykgXAorICAgIG1hY3JvKEkzMlN0b3JlMTYsIDB4
MmYsIE9vcHMpIFwKKyAgICBtYWNybyhJNjRTdG9yZTgsIDB4MzAsIE9vcHMpIFwKKyAgICBtYWNy
byhJNjRTdG9yZTE2LCAweDMxLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0U3RvcmUzMiwgMHgzMiwg
T29wcykgXAorICAgIG1hY3JvKEkzMlN0b3JlLCAweDMzLCBPb3BzKSBcCisgICAgbWFjcm8oSTY0
U3RvcmUsIDB4MzQsIE9vcHMpIFwKKyAgICBtYWNybyhGMzJTdG9yZSwgMHgzNSwgT29wcykgXAor
ICAgIG1hY3JvKEY2NFN0b3JlLCAweDM2LCBPb3BzKQorCiAKIAogI2RlZmluZSBGT1JfRUFDSF9X
QVNNX09QKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcCiAg
ICAgRk9SX0VBQ0hfV0FTTV9DT05UUk9MX0ZMT1dfT1AobWFjcm8pIFwKICAgICBGT1JfRUFDSF9X
QVNNX1VOQVJZX09QKG1hY3JvKSBcCi0gICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8p
CisgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9XQVNN
X01FTU9SWV9MT0FEX09QKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVf
T1AobWFjcm8pCiAKICNkZWZpbmUgQ1JFQVRFX0VOVU1fVkFMVUUobmFtZSwgaWQsIGIzb3ApIG5h
bWUgPSBpZCwKIApAQCAtMTg5LDYgKzIxOCwxNCBAQCBlbnVtIGNsYXNzIFVuYXJ5T3BUeXBlIDog
dWludDhfdCB7CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfRU5VTV9WQUxVRSkK
IH07CiAKK2VudW0gY2xhc3MgTG9hZE9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dB
U01fTUVNT1JZX0xPQURfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9OworCitlbnVtIGNsYXNzIFN0
b3JlT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1Ao
Q1JFQVRFX0VOVU1fVkFMVUUpCit9OworCiAjdW5kZWYgQ1JFQVRFX0VOVU1fVkFMVUUKIAogaW5s
aW5lIGJvb2wgaXNDb250cm9sT3AoT3BUeXBlIG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTVBsYW4uY3BwCmluZGV4IDdiZDYwZDIzZjExYTI5YWNlMWUzN2E2MTg3NWZlNGI1Y2YwZGJj
YjkuLmEwODM3Mzg1ODRkNTY2OTI2YTI1MjJkYjkxY2Q2Yzk0ZjhlNmE2MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJXQVNNQjNJUkdlbmVyYXRvci5oIgorI2lu
Y2x1ZGUgIldBU01DYWxsaW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUgIldBU01Nb2R1bGVQYXJz
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogCkBAIC01Myw4ICs1NCw5IEBAIFBsYW46
OlBsYW4oVk0mIHZtLCBWZWN0b3I8dWludDhfdD4gc291cmNlKQogICAgIGZvciAoY29uc3QgRnVu
Y3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1vZHVsZVBhcnNlci5mdW5jdGlvbkluZm9ybWF0aW9u
KCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIlByb2Nl
c3NpbmcgZnVuY2lvbiBzdGFydGluZyBhdDogIiwgaW5mby5zdGFydCwgIiBhbmQgZW5kaW5nIGF0
OiAiLCBpbmZvLmVuZCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocGFyc2VBbmRDb21waWxlKHZt
LCBzb3VyY2UsIGluZm8pKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChwYXJzZUFuZENvbXBpbGUo
dm0sIHNvdXJjZSwgbW9kdWxlUGFyc2VyLm1lbW9yeSgpLmdldCgpLCBpbmZvKSk7CiAgICAgfQor
ICAgIG1lbW9yeSA9IFdURk1vdmUobW9kdWxlUGFyc2VyLm1lbW9yeSgpKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OldBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01QbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5oCmlu
ZGV4IGQzYzllMjJhNWFiYTE3MjY0M2YzNzkxNjBjMzhiOGU0YjQ5MmIxOGMuLmI4NDVlZTE0ODk3
OGY5NjAxMDc2OTA2NDBhNWQxMGI2ZmM3ZjM1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01QbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTVBsYW4uaApAQCAtMjksMjMgKzI5LDIwIEBACiAKICNpbmNsdWRlICJDb21waWxhdGlvblJl
c3VsdC5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV0FTTUZvcm1hdC5oIgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVzcGFjZSBCMyB7Ci1jbGFzcyBDb21waWxhdGlvbjsK
LX0gLy8gbmFtZXNwYWNlIEIzCi0KLW5hbWVzcGFjZSBXQVNNIHsKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV0FTTSB7CitjbGFzcyBNZW1vcnk7CiAKIC8vIFRPRE86IFRoaXMgc2hvdWxkIGNy
ZWF0ZSBhIFdBU00gTW9kdWxlIG5vdCBhIGxpc3Qgb2YgZnVuY3Rpb25zLgogY2xhc3MgUGxhbiB7
CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGxhbihWTSYsIFZlY3Rvcjx1aW50OF90
PiBzb3VyY2UpOwogCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+
PiByZXN1bHQ7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9u
Pj4gcmVzdWx0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+IG1lbW9yeTsKIH07CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNU2VjdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01T
ZWN0aW9ucy5oCmluZGV4IDUzZTkzNTZlMjM4ZmE0MmM1YjU4NzEwOTkzNmI1NzAwOGU3YzY3OTku
LjA3YzcyZDQxZDNiZWVkY2QxNzIzOGE4YzIwMDQyMzI3NTEzYjQ2ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCkBAIC0zMyw2ICszMyw3IEBAIHN0cnVjdCBT
ZWN0aW9ucyB7CiAgICAgZW51bSBTZWN0aW9uIDogdWludDhfdCB7CiAgICAgICAgIEZ1bmN0aW9u
VHlwZXMgPSAxLAogICAgICAgICBTaWduYXR1cmVzID0gMywKKyAgICAgICAgTWVtb3J5ID0gNSwK
ICAgICAgICAgRGVmaW5pdGlvbnMgPSAxMCwKICAgICAgICAgVW5rbm93bgogICAgIH07CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlY2E1
ZGQ5ZmFhMTEwZjkwZDZkMjZiZGZhZjFhODQzMTg0NTIyYzUuLmE1N2U2MDY5OWEzMTI5NjU0NzY4
N2Q5MWNlMWVkYzQ4MTViNWE4OWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMTAtMTcgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFdBU00gTWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxNzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgQWRkIHN0b3JlIGFuZCBsb2FkIG9wY29kZXMgdG8gd2FzbS5qc29uLiBBZGRpdGlvbmFs
bHksIGFkZCBuZXcKKyAgICAgICAgZW51bXMgZm9yIHRob3NlIG9wY29kZXMgaW4gdGhlIGdlbmVy
YXRvci4KKworICAgICAgICAqIHN0cmVzcy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpz
OgorICAgICAgICAoY29uc3QudGVtcGxhdGUucHJhZ21hLm9uY2UuRU5BQkxFLldFQkFTU0VNQkxZ
LmluY2x1ZGUuY3N0ZGludC5uYW1lc3BhY2UuSlNDLm5hbWVzcGFjZS5XQVNNLmVudW0uTG9hZE9w
VHlwZSk6CisgICAgICAgIChjb25zdC50ZW1wbGF0ZS5wcmFnbWEub25jZS5FTkFCTEUuV0VCQVNT
RU1CTFkuaW5jbHVkZS5jc3RkaW50Lm5hbWVzcGFjZS5KU0MubmFtZXNwYWNlLldBU00uZW51bS5T
dG9yZU9wVHlwZSk6CisKIDIwMTYtMTAtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIG1vcmUgdGVzdHMgZm9yIHRoZSBkb3VibGUtPlN0cmluZyBjb252
ZXJzaW9uIGluIFZhbHVlQWRkIGNvbnN0YW50IGZvbGRpbmcKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9nZW5lcmF0ZS13YXNtb3BzLWhlYWRlci5qcyBiL0pTVGVzdHMvd2FzbS9nZW5lcmF0ZS13
YXNtb3BzLWhlYWRlci5qcwppbmRleCBjZTUyODk3MTkyNzY0YWQ5OWY1NTExMTEzYWNkMjJlYjJh
MzE1NmRlLi43Mzg1YmJmMTYxOTQ4ZGNiMmMwYjkzNzkwMTkwYWNkNjc4NGYzOGVhIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3dhc20vZ2VuZXJhdGUtd2FzbW9wcy1oZWFkZXIuanMKKysrIGIvSlNUZXN0
cy93YXNtL2dlbmVyYXRlLXdhc21vcHMtaGVhZGVyLmpzCkBAIC0zNiw2ICszNiwxMCBAQCBjb25z
dCBkZWZpbmVzID0gWwogICAgIC4uLm9wY29kZU1hY3JvaXplcihvcCA9PiBvcC5jYXRlZ29yeSA9
PT0gImFyaXRobWV0aWMiICYmIG9wLnBhcmFtZXRlci5sZW5ndGggPT09IDEpLAogICAgICJcblxu
I2RlZmluZSBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykiLAogICAgIC4uLm9wY29kZU1h
Y3JvaXplcihvcCA9PiAob3AuY2F0ZWdvcnkgPT09ICJhcml0aG1ldGljIiB8fCBvcC5jYXRlZ29y
eSA9PT0gImNvbXBhcmlzb24iKSAmJiBvcC5wYXJhbWV0ZXIubGVuZ3RoID09PSAyKSwKKyAgICAi
XG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykiLAorICAgIC4u
Lm9wY29kZU1hY3JvaXplcihvcCA9PiAob3AuY2F0ZWdvcnkgPT09ICJtZW1vcnkiICYmIG9wLnJl
dHVybi5sZW5ndGggPT09IDEpKSwKKyAgICAiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfU1RPUkVfT1AobWFjcm8pIiwKKyAgICAuLi5vcGNvZGVNYWNyb2l6ZXIob3AgPT4gKG9wLmNh
dGVnb3J5ID09PSAibWVtb3J5IiAmJiBvcC5yZXR1cm4ubGVuZ3RoID09PSAwKSksCiAgICAgIlxu
XG4iXS5qb2luKCIiKTsKIAogY29uc3Qgb3BWYWx1ZVNldCA9IG5ldyBTZXQob3Bjb2RlSXRlcmF0
b3Iob3AgPT4gdHJ1ZSwgb3AgPT4gb3Bjb2Rlc1tvcF0udmFsdWUpKCkpOwpAQCAtOTQsNyArOTgs
OSBAQCAke2RlZmluZXN9CiAgICAgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcXAog
ICAgIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNI
X1dBU01fVU5BUllfT1AobWFjcm8pIFxcCi0gICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFj
cm8pCisgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AobWFjcm8pIFxcCisgICAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXFwKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9T
VE9SRV9PUChtYWNybykKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgYjNv
cCkgbmFtZSA9IGlkLAogCkBAIC0xMTgsNiArMTI0LDE0IEBAIGVudW0gY2xhc3MgVW5hcnlPcFR5
cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZB
TFVFKQogfTsKIAorZW51bSBjbGFzcyBMb2FkT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xh
c3MgU3RvcmVPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQog
CiBpbmxpbmUgYm9vbCBpc0NvbnRyb2xPcChPcFR5cGUgb3ApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>